Acclouding API (v1)

Download OpenAPI specification:

Acclouding support: info@acclouding.ee URL: https://acclouding.ee

Public REST API of the Acclouding accounting software.

Introduction

The Acclouding API lets you read and write the accounting data of one company from your own systems — create sales invoices from a web shop, push purchase invoices from an expense tool, or keep projects, cost centres and articles in sync.

All requests and responses are JSON (Content-Type: application/json), encoded as UTF-8.

Authentication

Every request must carry an API token as a bearer token:

Authorization: Bearer <token>

The token is created in the Acclouding web application under Settings → Users → API Access. Enabling API access creates a dedicated API user for the company, bound to the role you pick in the dialog; the token is shown on the same page. Disabling API access deletes the API user and invalidates the token.

  • A token belongs to exactly one company. There is no company parameter — every endpoint operates on the company the token was issued for, and records of other companies are never visible (they behave as if they did not exist).
  • What the token may do is governed by the role's entity permissions (Index, View, Create, Edit, Delete, Lock). A request without the required permission is refused with 403 Forbidden. The permission needed is listed on each operation.
  • A company without an active licence is frozen: read operations keep working, writes are refused with 403 Forbidden.
  • A missing or unknown token yields 401 Unauthorized.

Enabling API access may be subject to additional charges — see your plan.

Conventions

URLs end with a slash

Every path must end with / — including the action endpoints (.../lock/, .../pdf/). A URL without the trailing slash is not routed and returns 404 Not Found.

Pagination

List endpoints are paginated. The items are wrapped in an items envelope, and the response also carries _links (self, first, last, prev, next) and _meta (totalCount, pageCount, currentPage, perPage):

{
  "items": [ ... ],
  "_links": { "self": { "href": "https://api.acclouding.ee/v1/project/?page=1" }, ... },
  "_meta":  { "totalCount": 3, "pageCount": 1, "currentPage": 1, "perPage": 50 }
}

The same information is available in response headers:

Header Meaning
X-Pagination-Total-Count total number of records
X-Pagination-Page-Count number of pages
X-Pagination-Current-Page current page (1-based)
X-Pagination-Per-Page records per page
Link first, last, prev, next navigation links

Use the page (1-based) and per-page (default 50, maximum 1000) query parameters to navigate. Records can be sorted with sort=<field> (ascending) or sort=-<field> (descending).

Partial responses

fields=id,name limits the fields returned by list and single-record endpoints. expand=client,financialEntry adds optional related objects where the operation offers them.

Data formats

  • Dates are YYYY-MM-DD; timestamps are YYYY-MM-DD HH:MM:SS (server local time, no zone).
  • Monetary amounts and quantities are decimals. On output they may arrive as JSON numbers or as numeric strings ("70.0000") — parse both. Both forms are accepted on input.
  • Booleans are 0 / 1 integers.
  • Amounts with the currency_ prefix are in the document currency; the same amount without the prefix is in the company's base currency, converted with currency_rate.

Errors

Errors carry the HTTP status code and a JSON body:

{ "name": "Not Found", "message": "The requested sales invoice does not exist.", "code": 0, "status": 404 }

Validation failures return 422 Unprocessable Entity with a list of field errors:

[ { "field": "fa_id", "message": "No fa_code found for the invoice row." } ]

A few older endpoints (sales invoice create/update, the lock/unlock actions) return 200 OK with an errors or success: 0 payload instead — the individual operations document this.

Human-readable messages are returned in the language given in the Content-Language request header (en, et, lt, fi; default en).

Sales invoices

Invoices the company issues to its clients.

List sales invoices

Lists the sales invoices of the company. Requires the Index permission on Sales Invoice.

Each item carries the invoice attributes and its rows.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

expand
string
Example: expand=client,financialEntry

Comma-separated list of related objects to include — client, financialEntry.

Responses

Response Headers
X-Pagination-Total-Count
integer

Total number of records.

X-Pagination-Page-Count
integer

Number of pages.

X-Pagination-Current-Page
integer

Current page, 1-based.

X-Pagination-Per-Page
integer

Records per page.

Link
string

first, last, prev and next page links, e.g. <https://api.acclouding.ee/v1/project/?page=2>; rel=next.

Response Schema: application/json
object
object
Array of objects (SalesInvoice)

Response samples

Content type
application/json
{
  • "_meta": {
    • "totalCount": 120,
    • "pageCount": 3,
    • "currentPage": 1,
    • "perPage": 50
    },
  • "items": [
    • {
      }
    ]
}

Create a sales invoice

Creates a sales invoice together with its rows and, if needed, the client. Requires the Create permission on Sales Invoice.

Client

The client object identifies the invoice recipient. The client is looked up in the company's client register in this order: id, then registration_number, then sequence_number. When nothing matches, a new client is created from the object — at least name, country, registration_number and type (business or private) are needed for that.

Invoice

Required: invoice_date, financial_entry_date, currency, rows, and either due_date or payment_term (days; the due date is then calculated from the invoice date). sequence_number is assigned from the company's default financial series when omitted.

currency_rate is set by the server from the exchange rates of the financial entry date.

Rows

Each row needs a financial account (fa_id or fa_code), quantity, the net unit price currency_price and a VAT rate (company_vat_rate_id or company_vat_rate_code). The article may be given as article_code or as article: { "sku": ... }; project_id / project_code and cost_centre_id / cost_centre_code are optional.

The VAT amount and all totals are calculated by the server from the row's VAT rate.

Responses

On success the full invoice is returned (200 OK). When the invoice itself does not validate, 422 is returned with a list of field errors. When one or more rows do not validate, 422 is returned with the invoice payload plus a row_errors list, and nothing is saved.

Authorizations:
bearerAuth
Request Body schema: application/json
required
invoice_date
required
string or null <date> (Date)
financial_entry_date
required
string or null <date> (Date)
currency
required
string
required
object (ClientInput)

Identifies an existing client (id, registration_number or sequence_number) or describes a new one.

required
Array of objects (SalesInvoiceCreateRow) non-empty
sequence_number
string

Invoice number. Generated from the default financial series when omitted.

fs_id
integer

Financial series to number the invoice from.

reference_number
integer or null

Payment reference number. Validated with the Estonian 7-3-1 check digit.

due_date
string or null <date> (Date)
payment_term
integer >= 0

Payment term in days. When given, due_date is calculated from invoice_date.

language
string
Enum: "en" "et" "lt" "fi"

Language of the printed invoice.

penalty_percent
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

client_name
string
client_address_line_1
string
client_address_city
string
client_address_county
string
client_address_postal_code
string
client_contact_email
string
client_contact_phone
string
client_company_reg_no
string
client_company_vat_no
string
client_representative
string or null
company_name
string
company_contact_address
string
company_contact_email
string
company_reg_no
string
company_vat_no
string
company_representative
string
credit_invoice_for_id
integer or null

For credit invoices, the ID of the invoice being credited.

comment_on_invoice
string or null
notes
string or null
is_fixed_asset_sale
integer (Bool)
Enum: 0 1

0 or 1.

invoice_type
string or null
object or null

Responses

Response Schema: application/json
id
integer
sequence_number
string

The invoice number generated from the financial series.

fs_id
integer or null

Financial series ID.

reference_number
integer or null

Payment reference number.

invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
payment_term
integer or null

Payment term in days.

client_id
integer
partner_id
integer

Alias of client_id.

company_id
integer
penalty_percent
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

invoice_status
string or null
Enum: "unpaid" "partially_paid" "paid" "overdue" null
total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

paid_date
string or null <date> (Date)
company_name
string or null
company_contact_address
string or null
company_contact_email
string or null
company_reg_no
string or null
company_vat_no
string or null
company_representative
string or null
client_name
string or null
client_contact_email
string or null
client_contact_phone
string or null
client_company_reg_no
string or null
client_company_vat_no
string or null
client_representative
string or null
comment_on_invoice
string or null

Free text printed on the invoice.

notes
string or null

Internal notes, not printed.

currency
string
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_sale
integer (Bool)
Enum: 0 1

0 or 1.

object or null

Footer texts printed on the invoice, keyed by language.

Array of objects (SalesInvoiceRow)
object (Client)
Array of objects

Files attached to the invoice.

Array of objects

Emails the invoice has been sent with.

Request samples

Content type
application/json
{
  • "invoice_date": "2021-08-03",
  • "financial_entry_date": "2021-07-29",
  • "due_date": "2021-08-10",
  • "payment_term": 7,
  • "penalty_percent": "0.00",
  • "currency": "EUR",
  • "is_fixed_asset_sale": 0,
  • "comment_on_invoice": null,
  • "notes": null,
  • "rows": [
    • {
      }
    ],
  • "client": {
    • "type": "business",
    • "is_active": 1,
    • "name": "Test API OÜ",
    • "country": "EE",
    • "vat_code": "EE123456",
    • "registration_number": "123456",
    • "contact_email": "",
    • "contact_phone": ""
    }
}

Response samples

Content type
application/json
{
  • "id": 65009,
  • "sequence_number": "2026-0142",
  • "fs_id": 0,
  • "reference_number": 0,
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-01",
  • "payment_term": 14,
  • "client_id": 4021,
  • "partner_id": 0,
  • "company_id": 0,
  • "penalty_percent": "70.0000",
  • "invoice_status": "unpaid",
  • "total_net": "70.0000",
  • "total_vat": "70.0000",
  • "total_sum": "70.0000",
  • "total_paid": "70.0000",
  • "paid_date": "2026-07-01",
  • "company_name": "string",
  • "company_contact_address": "string",
  • "company_contact_email": "string",
  • "company_reg_no": "string",
  • "company_vat_no": "string",
  • "company_representative": "string",
  • "client_name": "string",
  • "client_contact_email": "string",
  • "client_contact_phone": "string",
  • "client_company_reg_no": "string",
  • "client_company_vat_no": "string",
  • "client_representative": "string",
  • "comment_on_invoice": "string",
  • "notes": "string",
  • "currency": "EUR",
  • "currency_rate": "70.0000",
  • "currency_total_net": "70.0000",
  • "currency_total_vat": "70.0000",
  • "currency_total_sum": "70.0000",
  • "currency_total_paid": "70.0000",
  • "is_vat_liable": 0,
  • "is_fixed_asset_sale": 0,
  • "footer": { },
  • "rows": [
    • {
      }
    ],
  • "client": {
    • "id": 4021,
    • "name": "Test API OÜ",
    • "country": "EE",
    • "vat_code": "EE123456",
    • "nace": "string",
    • "webpage": "string",
    • "payment_term": 0,
    • "contact_email": "string",
    • "contact_phone": "string",
    • "registration_number": "123456",
    • "type": "business",
    • "penalty_percentage": "70.0000",
    • "address": { },
    • "sale_type": "string",
    • "einvoice_enabled": true,
    • "last_footer": { }
    },
  • "uploadedFiles": [
    • { }
    ],
  • "email_log": [
    • {
      }
    ]
}

Get a sales invoice

Returns one sales invoice with its rows. Requires the View permission on Sales Invoice.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the sales invoice.

query Parameters
fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

expand
string
Example: expand=client,financialEntry

Comma-separated list of related objects to include — client, financialEntry.

Responses

Response Schema: application/json
id
integer
sequence_number
string

The invoice number generated from the financial series.

fs_id
integer or null

Financial series ID.

reference_number
integer or null

Payment reference number.

invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
payment_term
integer or null

Payment term in days.

client_id
integer
partner_id
integer

Alias of client_id.

company_id
integer
penalty_percent
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

invoice_status
string or null
Enum: "unpaid" "partially_paid" "paid" "overdue" null
total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

paid_date
string or null <date> (Date)
company_name
string or null
company_contact_address
string or null
company_contact_email
string or null
company_reg_no
string or null
company_vat_no
string or null
company_representative
string or null
client_name
string or null
client_contact_email
string or null
client_contact_phone
string or null
client_company_reg_no
string or null
client_company_vat_no
string or null
client_representative
string or null
comment_on_invoice
string or null

Free text printed on the invoice.

notes
string or null

Internal notes, not printed.

currency
string
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_sale
integer (Bool)
Enum: 0 1

0 or 1.

object or null

Footer texts printed on the invoice, keyed by language.

Array of objects (SalesInvoiceRow)
object (Client)

Present when expand includes client.

object or null

Present when expand includes financialEntry and the invoice is locked.

Response samples

Content type
application/json
{
  • "id": 65009,
  • "sequence_number": "2026-0142",
  • "fs_id": 0,
  • "reference_number": 0,
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-01",
  • "payment_term": 14,
  • "client_id": 4021,
  • "partner_id": 0,
  • "company_id": 0,
  • "penalty_percent": "70.0000",
  • "invoice_status": "unpaid",
  • "total_net": "70.0000",
  • "total_vat": "70.0000",
  • "total_sum": "70.0000",
  • "total_paid": "70.0000",
  • "paid_date": "2026-07-01",
  • "company_name": "string",
  • "company_contact_address": "string",
  • "company_contact_email": "string",
  • "company_reg_no": "string",
  • "company_vat_no": "string",
  • "company_representative": "string",
  • "client_name": "string",
  • "client_contact_email": "string",
  • "client_contact_phone": "string",
  • "client_company_reg_no": "string",
  • "client_company_vat_no": "string",
  • "client_representative": "string",
  • "comment_on_invoice": "string",
  • "notes": "string",
  • "currency": "EUR",
  • "currency_rate": "70.0000",
  • "currency_total_net": "70.0000",
  • "currency_total_vat": "70.0000",
  • "currency_total_sum": "70.0000",
  • "currency_total_paid": "70.0000",
  • "is_vat_liable": 0,
  • "is_fixed_asset_sale": 0,
  • "footer": { },
  • "rows": [
    • {
      }
    ],
  • "client": {
    • "id": 4021,
    • "name": "Test API OÜ",
    • "country": "EE",
    • "vat_code": "EE123456",
    • "nace": "string",
    • "webpage": "string",
    • "payment_term": 0,
    • "contact_email": "string",
    • "contact_phone": "string",
    • "registration_number": "123456",
    • "type": "business",
    • "penalty_percentage": "70.0000",
    • "address": { },
    • "sale_type": "string",
    • "einvoice_enabled": true,
    • "last_footer": { }
    },
  • "financialEntry": { }
}

Update a sales invoice

Updates an existing sales invoice and its rows. Requires the Create permission on Sales Invoice. Locked invoices must be unlocked first.

The invoice is identified by the id field in the request body; the id in the URL is not used. Without a body id a new invoice is created.

Only the fields listed in the request schema are taken from the body; everything else (totals, company data, lock state) is managed by the server.

Rows

rows is the complete list of rows:

  • a row with a numeric id updates that row;
  • a row without id, or with a temporary id starting with x- (e.g. "x-1"), is created;
  • "is_deleted": 1 removes an existing row.

Related records are referenced by id here (fa_id, company_vat_rate_id, project_id, cost_centre_id); the article may also be given as article: { "sku": ... }.

Unlike Create, this endpoint takes vat_rate and currency_total_vat from the request — send them with every row, otherwise the VAT amount becomes 0. Net and gross amounts and the base-currency amounts are calculated by the server.

Invoice totals are recalculated after every save.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the sales invoice.

Request Body schema: application/json
required
required
Array of objects (SalesInvoiceUpdateRow)
sequence_number
string

Invoice number. Generated from the default financial series when omitted.

fs_id
integer

Financial series to number the invoice from.

reference_number
integer or null

Payment reference number. Validated with the Estonian 7-3-1 check digit.

invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
payment_term
integer >= 0

Payment term in days. When given, due_date is calculated from invoice_date.

currency
string
language
string
Enum: "en" "et" "lt" "fi"

Language of the printed invoice.

penalty_percent
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

client_name
string
client_address_line_1
string
client_address_city
string
client_address_county
string
client_address_postal_code
string
client_contact_email
string
client_contact_phone
string
client_company_reg_no
string
client_company_vat_no
string
client_representative
string or null
company_name
string
company_contact_address
string
company_contact_email
string
company_reg_no
string
company_vat_no
string
company_representative
string
credit_invoice_for_id
integer or null

For credit invoices, the ID of the invoice being credited.

comment_on_invoice
string or null
notes
string or null
is_fixed_asset_sale
integer (Bool)
Enum: 0 1

0 or 1.

invoice_type
string or null
object or null
id
integer

The invoice to update. Omit to create a new invoice.

client_id
integer
fileIds
Array of integers

IDs of uploaded files to attach.

Responses

Response Schema: application/json
id
integer
sequence_number
string

The invoice number generated from the financial series.

fs_id
integer or null

Financial series ID.

reference_number
integer or null

Payment reference number.

invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
payment_term
integer or null

Payment term in days.

client_id
integer
partner_id
integer

Alias of client_id.

company_id
integer
penalty_percent
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

invoice_status
string or null
Enum: "unpaid" "partially_paid" "paid" "overdue" null
total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

paid_date
string or null <date> (Date)
company_name
string or null
company_contact_address
string or null
company_contact_email
string or null
company_reg_no
string or null
company_vat_no
string or null
company_representative
string or null
client_name
string or null
client_contact_email
string or null
client_contact_phone
string or null
client_company_reg_no
string or null
client_company_vat_no
string or null
client_representative
string or null
comment_on_invoice
string or null

Free text printed on the invoice.

notes
string or null

Internal notes, not printed.

currency
string
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_sale
integer (Bool)
Enum: 0 1

0 or 1.

object or null

Footer texts printed on the invoice, keyed by language.

Array of objects (SalesInvoiceRow)
object (Client)
Array of objects

Files attached to the invoice.

Array of objects

Emails the invoice has been sent with.

Request samples

Content type
application/json
{
  • "id": 65009,
  • "invoice_date": "2021-08-03",
  • "financial_entry_date": "2021-07-29",
  • "due_date": "2021-08-10",
  • "payment_term": 7,
  • "currency": "EUR",
  • "rows": [
    • {
      },
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "id": 65009,
  • "sequence_number": "2026-0142",
  • "fs_id": 0,
  • "reference_number": 0,
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-01",
  • "payment_term": 14,
  • "client_id": 4021,
  • "partner_id": 0,
  • "company_id": 0,
  • "penalty_percent": "70.0000",
  • "invoice_status": "unpaid",
  • "total_net": "70.0000",
  • "total_vat": "70.0000",
  • "total_sum": "70.0000",
  • "total_paid": "70.0000",
  • "paid_date": "2026-07-01",
  • "company_name": "string",
  • "company_contact_address": "string",
  • "company_contact_email": "string",
  • "company_reg_no": "string",
  • "company_vat_no": "string",
  • "company_representative": "string",
  • "client_name": "string",
  • "client_contact_email": "string",
  • "client_contact_phone": "string",
  • "client_company_reg_no": "string",
  • "client_company_vat_no": "string",
  • "client_representative": "string",
  • "comment_on_invoice": "string",
  • "notes": "string",
  • "currency": "EUR",
  • "currency_rate": "70.0000",
  • "currency_total_net": "70.0000",
  • "currency_total_vat": "70.0000",
  • "currency_total_sum": "70.0000",
  • "currency_total_paid": "70.0000",
  • "is_vat_liable": 0,
  • "is_fixed_asset_sale": 0,
  • "footer": { },
  • "rows": [
    • {
      }
    ],
  • "client": {
    • "id": 4021,
    • "name": "Test API OÜ",
    • "country": "EE",
    • "vat_code": "EE123456",
    • "nace": "string",
    • "webpage": "string",
    • "payment_term": 0,
    • "contact_email": "string",
    • "contact_phone": "string",
    • "registration_number": "123456",
    • "type": "business",
    • "penalty_percentage": "70.0000",
    • "address": { },
    • "sale_type": "string",
    • "einvoice_enabled": true,
    • "last_footer": { }
    },
  • "uploadedFiles": [
    • { }
    ],
  • "email_log": [
    • {
      }
    ]
}

Delete a sales invoice

Deletes a sales invoice and its rows. Requires the Delete permission on Sales Invoice.

Locked invoices, and invoices whose financial entry date falls within a locked fiscal year, cannot be deleted (409 Conflict).

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the sales invoice.

Responses

Response samples

Content type
application/json
{
  • "name": "Unauthorized",
  • "message": "Your request was made with invalid credentials.",
  • "code": 0,
  • "status": 401
}

Lock a sales invoice

Locks the sales invoice and creates the corresponding financial entry. Requires the Lock permission on Sales Invoice.

Before locking, the invoice is validated with the same checks as in the web application:

  • the company must have a Sales Debt financial account
  • the invoice must have at least one row
  • each row's VAT rate must have a sales financial account
  • the financial entry date must not fall within a locked period

If any check fails, the response is 200 OK with success: 0 and an errors array of human-readable messages, and nothing is changed.

Side effects on success:

  • a financial entry is created for the invoice
  • payments reconciled to this invoice are locked as well
  • for credit invoices, the parent invoice's paid sum is recalculated

The endpoint is idempotent — locking an already locked invoice returns success: 1 with the existing locked_at timestamp and does not create a duplicate financial entry.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the sales invoice.

Responses

Response Schema: application/json
success
required
integer (Bool)
Enum: 0 1

0 or 1.

locked_at
string or null (DateTime)

Lock timestamp; null when the invoice is not locked. Present when success is 1.

errors
Array of strings

Human-readable reasons. Present when success is 0.

Response samples

Content type
application/json
Example
{
  • "success": 1,
  • "locked_at": "2026-07-13 09:45:12"
}

Unlock a sales invoice

Unlocks the sales invoice and removes its financial entry with all of its rows. Requires the Lock permission on Sales Invoice.

Side effects on success:

  • the invoice's financial entry is deleted
  • payments reconciled to this invoice are unlocked as well
  • for credit invoices, the parent invoice's paid sum is recalculated
  • is_sold is reset on fixed assets sold with this invoice

Fails with success: 0 when the financial entry date falls within a locked period, or when the financial entry can no longer be deleted.

The endpoint is idempotent — unlocking an invoice that is not locked returns success: 1.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the sales invoice.

Responses

Response Schema: application/json
success
required
integer (Bool)
Enum: 0 1

0 or 1.

locked_at
string or null (DateTime)

Lock timestamp; null when the invoice is not locked. Present when success is 1.

errors
Array of strings

Human-readable reasons. Present when success is 0.

Response samples

Content type
application/json
Example
{
  • "success": 1,
  • "locked_at": null
}

Download a sales invoice PDF

Downloads the sales invoice as a PDF file. Requires the View permission on Sales Invoice.

The response is the PDF itself (Content-Type: application/pdf), sent as an attachment with a file name based on the invoice sequence number, e.g. invoice-2026-0142.pdf.

Language

The optional lang query parameter selects the language of the PDF. It must be one of the languages enabled for the company in Settings → General; requesting a language that is not enabled returns 400 Bad Request and no PDF is generated.

When lang is omitted, the language is resolved in this order:

  1. the client's communication language, if it is enabled for the company
  2. the company's own communication language, if it is enabled
  3. the first language enabled for the company

Generation

PDFs are cached per invoice and language. An already generated file is reused as long as it is newer than the invoice's last change; after editing the invoice the next request regenerates it. If generation fails, 500 Internal Server Error is returned.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the sales invoice.

query Parameters
lang
string
Enum: "en" "et" "lt" "fi"

Language of the generated PDF. Must be enabled for the company.

Responses

Response Headers
Content-Disposition
string

attachment; filename="invoice-<sequence number>.pdf"

Response Schema: application/pdf
string <binary>

Response samples

Content type
application/json
{
  • "name": "Bad Request",
  • "message": "The language \"lt\" is not enabled for this company.",
  • "code": 0,
  • "status": 400
}

Purchase invoices

Invoices the company receives from its vendors.

List purchase invoices

Lists the purchase invoices of the company. Requires the Index permission on Purchase Invoice.

Each item contains the invoice attributes together with its rows, each row including its article and financialAccount. name is an alias of invoice_number and partner_id an alias of vendor_id.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

Responses

Response Headers
X-Pagination-Total-Count
integer

Total number of records.

X-Pagination-Page-Count
integer

Number of pages.

X-Pagination-Current-Page
integer

Current page, 1-based.

X-Pagination-Per-Page
integer

Records per page.

Link
string

first, last, prev and next page links, e.g. <https://api.acclouding.ee/v1/project/?page=2>; rel=next.

Response Schema: application/json
object
object
Array of objects (PurchaseInvoice)

Response samples

Content type
application/json
{
  • "_meta": {
    • "totalCount": 120,
    • "pageCount": 3,
    • "currentPage": 1,
    • "perPage": 50
    },
  • "items": [
    • {
      }
    ]
}

Create a purchase invoice (header only)

Creates a purchase invoice without rows from the invoice attributes in the body. Requires the Create permission on Purchase Invoice. Rows are then added with Add a purchase invoice row.

To create an invoice together with its rows in one request use Save a purchase invoice (PUT) without an id in the body instead.

company_id in the body is ignored — the invoice always belongs to the token's company.

Authorizations:
bearerAuth
Request Body schema: application/json
required
invoice_number
string

The vendor's invoice number. Must be unique per vendor.

vendor_id
integer or null
fs_id
integer or null
sequence_number
string

Internal document number. Generated from the financial series when omitted.

reference_number
string or null
invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
received_date
string or null <date> (Date)
payment_term
integer or null >= 0
vendor_name
string or null
vendor_reg_no
string or null
vendor_vat_no
string or null
vendor_contact_email
string or null
vendor_contact_address
string or null
vendor_bank
string or null
vendor_bank_account
string or null

IBAN.

vendor_representative
string or null
creditor_name
string or null
credit_invoice_for_id
integer or null
comment
string or null
currency
string
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_purchase
integer (Bool)
Enum: 0 1

0 or 1.

invoice_type
string or null

Responses

Response Headers
Location
string

URL of the created invoice.

Response Schema: application/json
id
integer
company_id
integer
sequence_number
string or null
fs_id
integer or null
invoice_number
string or null
name
string or null

Alias of invoice_number.

vendor_id
integer or null
partner_id
integer or null

Alias of vendor_id.

vendor_name
string or null
vendor_reg_no
string or null
vendor_vat_no
string or null
vendor_contact_email
string or null
vendor_contact_address
string or null
vendor_bank
string or null
vendor_bank_account
string or null
vendor_representative
string or null
creditor_name
string or null
invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
received_date
string or null <date> (Date)
paid_date
string or null <date> (Date)
payment_term
integer or null
reference_number
string or null
invoice_status
string or null
Enum: "unpaid" "partially_paid" "paid" "overdue" null
invoice_type
string or null
comment
string or null
total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency
string or null
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_purchase
integer (Bool)
Enum: 0 1

0 or 1.

is_opening
integer (Bool)
Enum: 0 1

0 or 1.

credit_invoice_for_id
integer or null
locked_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

locked_by
integer or null
created_by
integer or null
created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Array of objects (PurchaseInvoiceRow)

Request samples

Content type
application/json
{
  • "invoice_number": "INV-2026-118",
  • "vendor_id": 4021,
  • "fs_id": 0,
  • "sequence_number": "string",
  • "reference_number": "string",
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-01",
  • "received_date": "2026-07-01",
  • "payment_term": 14,
  • "vendor_name": "Office Supplies OU",
  • "vendor_reg_no": "12345678",
  • "vendor_vat_no": "string",
  • "vendor_contact_email": "string",
  • "vendor_contact_address": "string",
  • "vendor_bank": "string",
  • "vendor_bank_account": "string",
  • "vendor_representative": "string",
  • "creditor_name": "string",
  • "credit_invoice_for_id": 0,
  • "comment": "string",
  • "currency": "EUR",
  • "currency_rate": "70.0000",
  • "total_sum": "70.0000",
  • "currency_total_sum": "70.0000",
  • "is_vat_liable": 0,
  • "is_fixed_asset_purchase": 0,
  • "invoice_type": "string"
}

Response samples

Content type
application/json
{
  • "id": 65009,
  • "sequence_number": "1042",
  • "fs_id": 12,
  • "invoice_number": "INV-2026-118",
  • "name": "INV-2026-118",
  • "vendor_id": 4021,
  • "partner_id": 4021,
  • "vendor_name": "Office Supplies OU",
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-15",
  • "payment_term": 14,
  • "invoice_status": "unpaid",
  • "total_net": 50,
  • "total_vat": 11,
  • "total_sum": 61,
  • "total_paid": 0,
  • "currency": "EUR",
  • "currency_rate": 1,
  • "locked_at": null,
  • "locked_by": null,
  • "company_id": 210,
  • "rows": [
    • {
      }
    ]
}

Get a purchase invoice

Returns a single purchase invoice by ID. Requires the View permission on Purchase Invoice.

The response contains the invoice attributes and its rows, each row including its article and financialAccount. The vendor object is not part of this payload — it is returned by Save a purchase invoice.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

query Parameters
fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

Responses

Response Schema: application/json
id
integer
company_id
integer
sequence_number
string or null
fs_id
integer or null
invoice_number
string or null
name
string or null

Alias of invoice_number.

vendor_id
integer or null
partner_id
integer or null

Alias of vendor_id.

vendor_name
string or null
vendor_reg_no
string or null
vendor_vat_no
string or null
vendor_contact_email
string or null
vendor_contact_address
string or null
vendor_bank
string or null
vendor_bank_account
string or null
vendor_representative
string or null
creditor_name
string or null
invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
received_date
string or null <date> (Date)
paid_date
string or null <date> (Date)
payment_term
integer or null
reference_number
string or null
invoice_status
string or null
Enum: "unpaid" "partially_paid" "paid" "overdue" null
invoice_type
string or null
comment
string or null
total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency
string or null
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_purchase
integer (Bool)
Enum: 0 1

0 or 1.

is_opening
integer (Bool)
Enum: 0 1

0 or 1.

credit_invoice_for_id
integer or null
locked_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

locked_by
integer or null
created_by
integer or null
created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Array of objects (PurchaseInvoiceRow)

Response samples

Content type
application/json
{
  • "id": 65009,
  • "sequence_number": "1042",
  • "fs_id": 12,
  • "invoice_number": "INV-2026-118",
  • "name": "INV-2026-118",
  • "vendor_id": 4021,
  • "partner_id": 4021,
  • "vendor_name": "Office Supplies OU",
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-15",
  • "payment_term": 14,
  • "invoice_status": "unpaid",
  • "total_net": 50,
  • "total_vat": 11,
  • "total_sum": 61,
  • "total_paid": 0,
  • "currency": "EUR",
  • "currency_rate": 1,
  • "locked_at": null,
  • "locked_by": null,
  • "company_id": 210,
  • "rows": [
    • {
      }
    ]
}

Save a purchase invoice

Creates or updates a purchase invoice together with its rows. Requires the Create permission on Purchase Invoice. Locked invoices must be unlocked before editing.

The invoice being saved is identified by the id field in the request body — the ID in the URL path is not used. When the body has no id, a new invoice is created (use any placeholder, e.g. 0, in the URL).

Vendor

If vendor_id is omitted but vendor_name is given, a new vendor is created automatically. If vendor_id is given and the bank fields differ from the stored vendor, the response contains messages.vendor_changed describing the differences.

Rows

rows and fileIds are required keys (send [] when empty). rows is the complete list of rows:

  • a row with a numeric id updates that row;
  • a row with a temporary id starting with x- (e.g. "x-1") is created;
  • "is_deleted": 1 removes an existing row.

Net and gross totals and the base-currency amounts are calculated server-side from currency_price, quantity, currency_total_vat and the invoice's currency_rate. Invoice totals are recalculated on every save.

Approval

Once somebody has approved the invoice in an approval round its content can no longer be changed: the response is 200 OK with an errors message and nothing is saved.

The response is the saved invoice with rows (each including its article object) and the vendor object.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

Request Body schema: application/json
required
required
Array of objects (PurchaseInvoiceSaveRow)
fileIds
required
Array of integers

IDs of uploaded files to attach. Send [] when there are none.

invoice_number
string

The vendor's invoice number. Must be unique per vendor.

vendor_id
integer or null
fs_id
integer or null
sequence_number
string

Internal document number. Generated from the financial series when omitted.

reference_number
string or null
invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
received_date
string or null <date> (Date)
payment_term
integer or null >= 0
vendor_name
string or null
vendor_reg_no
string or null
vendor_vat_no
string or null
vendor_contact_email
string or null
vendor_contact_address
string or null
vendor_bank
string or null
vendor_bank_account
string or null

IBAN.

vendor_representative
string or null
creditor_name
string or null
credit_invoice_for_id
integer or null
comment
string or null
currency
string
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_purchase
integer (Bool)
Enum: 0 1

0 or 1.

invoice_type
string or null
id
integer

The invoice to update. Omit to create a new invoice.

Responses

Response Schema: application/json
One of
id
integer
company_id
integer
sequence_number
string or null
fs_id
integer or null
invoice_number
string or null
name
string or null

Alias of invoice_number.

vendor_id
integer or null
partner_id
integer or null

Alias of vendor_id.

vendor_name
string or null
vendor_reg_no
string or null
vendor_vat_no
string or null
vendor_contact_email
string or null
vendor_contact_address
string or null
vendor_bank
string or null
vendor_bank_account
string or null
vendor_representative
string or null
creditor_name
string or null
invoice_date
string or null <date> (Date)
financial_entry_date
string or null <date> (Date)
due_date
string or null <date> (Date)
received_date
string or null <date> (Date)
paid_date
string or null <date> (Date)
payment_term
integer or null
reference_number
string or null
invoice_status
string or null
Enum: "unpaid" "partially_paid" "paid" "overdue" null
invoice_type
string or null
comment
string or null
total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency
string or null
currency_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_sum
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_paid
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

is_vat_liable
integer or null
is_fixed_asset_purchase
integer (Bool)
Enum: 0 1

0 or 1.

is_opening
integer (Bool)
Enum: 0 1

0 or 1.

credit_invoice_for_id
integer or null
locked_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

locked_by
integer or null
created_by
integer or null
created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Array of objects (PurchaseInvoiceRow)
object or null
object

Present when the vendor's stored bank details differ from the ones sent.

Request samples

Content type
application/json
Example
{
  • "invoice_number": "INV-2026-118",
  • "vendor_name": "Office Supplies OU",
  • "vendor_reg_no": "12345678",
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-15",
  • "payment_term": 14,
  • "currency": "EUR",
  • "currency_rate": 1,
  • "rows": [
    • {
      }
    ],
  • "fileIds": [ ]
}

Response samples

Content type
application/json
Example
{
  • "id": 65009,
  • "sequence_number": "1042",
  • "fs_id": 12,
  • "invoice_number": "INV-2026-118",
  • "name": "INV-2026-118",
  • "vendor_id": 4021,
  • "partner_id": 4021,
  • "vendor_name": "Office Supplies OU",
  • "invoice_date": "2026-07-01",
  • "financial_entry_date": "2026-07-01",
  • "due_date": "2026-07-15",
  • "payment_term": 14,
  • "invoice_status": "unpaid",
  • "total_net": 50,
  • "total_vat": 11,
  • "total_sum": 61,
  • "total_paid": 0,
  • "currency": "EUR",
  • "currency_rate": 1,
  • "locked_at": null,
  • "locked_by": null,
  • "company_id": 210,
  • "rows": [
    • {
      }
    ]
}

Delete a purchase invoice

Deletes a purchase invoice and its rows. Requires the Delete permission on Purchase Invoice.

Locked invoices and invoices whose financial entry date falls within a locked fiscal year cannot be deleted — the request fails with 409 Conflict.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

Responses

Response samples

Content type
application/json
{
  • "name": "Unauthorized",
  • "message": "Your request was made with invalid credentials.",
  • "code": 0,
  • "status": 401
}

Add a purchase invoice row

Adds a single row to an existing purchase invoice. Requires the Create permission on Purchase Invoice.

Related records can be given by ID or by code — fa_code, company_vat_rate_code, article_sku, project_code, cost_centre_code — and are always looked up within the company the API token belongs to. An ID or code of another company is refused with 422.

vat_rate follows the VAT rate of the row unless it is sent explicitly. The VAT sum is calculated from vat_rate, unless currency_total_vat is sent; for a reverse charge VAT rate it is always 0. Net, gross and base currency amounts are calculated server side from quantity, currency_price and the currency_rate of the invoice. Invoice totals are recalculated after the row is saved.

row_nr defaults to the next free row number of the invoice.

Proportional VAT parent and child rows cannot be added here — use Save a purchase invoice for those.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

Request Body schema: application/json
required
fa_id
integer or null
fa_code
string

Financial account code, alternative to fa_id.

company_vat_rate_id
integer or null
company_vat_rate_code
string

Alternative to company_vat_rate_id.

article_id
integer or null
article_sku
string

Alternative to article_id.

project_id
integer or null
project_code
string

Alternative to project_id.

cost_centre_id
integer or null
cost_centre_code
string

Alternative to cost_centre_id.

fixed_asset_id
integer or null
title
string
quantity
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

unit
string
currency_price
number or string or null (Decimal)

Net unit price in the invoice currency.

currency_total_vat
number or string or null (Decimal)

VAT amount in the invoice currency. Calculated from vat_rate when omitted.

vat_rate
number or string or null (Decimal)

VAT percentage. Follows the VAT rate of the row when omitted.

row_nr
integer
is_vat_non_deductible
integer (Bool)
Enum: 0 1

0 or 1.

Responses

Response Schema: application/json
id
integer
purchase_invoice_id
integer
fa_id
integer or null
article_id
integer or null
title
string or null
quantity
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

unit
string or null
price
number or string or null (Decimal)

Net unit price in the base currency.

currency_price
number or string or null (Decimal)

Net unit price in the invoice currency.

total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_gross
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_gross
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

vat_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

company_vat_rate_id
integer or null
project_id
integer or null
cost_centre_id
integer or null
fixed_asset_id
integer or null
invoice_periodisation_id
integer or null
parent_id
integer or null

For proportional VAT child rows, the parent row.

row_type
string or null
row_nr
integer or null
is_vat_non_deductible
integer (Bool)
Enum: 0 1

0 or 1.

is_deleted
integer (Bool)
Enum: 0 1

0 or 1.

tags
Array of integers

Tag IDs attached to the row (null when none).

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

object (ArticleRef)

The article of a row. An empty object when the row has no article.

FinancialAccountRef (object) or null

Request samples

Content type
application/json
{
  • "fa_id": 118,
  • "company_vat_rate_id": 3,
  • "title": "Printer paper",
  • "quantity": 5,
  • "unit": "pc",
  • "currency_price": 4.5
}

Response samples

Content type
application/json
{
  • "id": 91401,
  • "purchase_invoice_id": 65009,
  • "fa_id": 118,
  • "article_id": null,
  • "title": "Printer paper",
  • "quantity": 5,
  • "unit": "pc",
  • "currency_price": 4.5,
  • "price": 4.5,
  • "total_net": 22.5,
  • "total_vat": 4.95,
  • "total_gross": 27.45,
  • "currency_total_net": 22.5,
  • "currency_total_vat": 4.95,
  • "currency_total_gross": 27.45,
  • "vat_rate": "22.00",
  • "company_vat_rate_id": 3,
  • "project_id": null,
  • "cost_centre_id": null,
  • "row_nr": 2,
  • "is_vat_non_deductible": 0,
  • "article": { },
  • "financialAccount": {
    • "id": 118,
    • "account_code": "50641",
    • "name": "Office supplies"
    }
}

Update a purchase invoice row

Updates a single row of a purchase invoice. Requires the Create permission on Purchase Invoice.

Only the fields present in the request body are changed. The same fields and the same ID-or-code lookups apply as in Add a purchase invoice row. Sending a relation as null (for example "project_id": null) clears it.

Sums are recalculated on every save: the VAT sum is taken from currency_total_vat when it is sent and calculated from the VAT percentage of the row otherwise. Invoice totals are recalculated afterwards.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

rowId
required
integer

The ID of the purchase invoice row.

Request Body schema: application/json
required
fa_id
integer or null
fa_code
string

Financial account code, alternative to fa_id.

company_vat_rate_id
integer or null
company_vat_rate_code
string

Alternative to company_vat_rate_id.

article_id
integer or null
article_sku
string

Alternative to article_id.

project_id
integer or null
project_code
string

Alternative to project_id.

cost_centre_id
integer or null
cost_centre_code
string

Alternative to cost_centre_id.

fixed_asset_id
integer or null
title
string
quantity
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

unit
string
currency_price
number or string or null (Decimal)

Net unit price in the invoice currency.

currency_total_vat
number or string or null (Decimal)

VAT amount in the invoice currency. Calculated from vat_rate when omitted.

vat_rate
number or string or null (Decimal)

VAT percentage. Follows the VAT rate of the row when omitted.

row_nr
integer
is_vat_non_deductible
integer (Bool)
Enum: 0 1

0 or 1.

Responses

Response Schema: application/json
id
integer
purchase_invoice_id
integer
fa_id
integer or null
article_id
integer or null
title
string or null
quantity
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

unit
string or null
price
number or string or null (Decimal)

Net unit price in the base currency.

currency_price
number or string or null (Decimal)

Net unit price in the invoice currency.

total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

total_gross
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_net
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_vat
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

currency_total_gross
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

vat_rate
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

company_vat_rate_id
integer or null
project_id
integer or null
cost_centre_id
integer or null
fixed_asset_id
integer or null
invoice_periodisation_id
integer or null
parent_id
integer or null

For proportional VAT child rows, the parent row.

row_type
string or null
row_nr
integer or null
is_vat_non_deductible
integer (Bool)
Enum: 0 1

0 or 1.

is_deleted
integer (Bool)
Enum: 0 1

0 or 1.

tags
Array of integers

Tag IDs attached to the row (null when none).

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

object (ArticleRef)

The article of a row. An empty object when the row has no article.

FinancialAccountRef (object) or null

Request samples

Content type
application/json
{
  • "title": "Printer paper, A4",
  • "quantity": 10,
  • "currency_price": 4.5,
  • "project_id": null
}

Response samples

Content type
application/json
{
  • "id": 91401,
  • "purchase_invoice_id": 65009,
  • "fa_id": 118,
  • "article_id": null,
  • "title": "Printer paper",
  • "quantity": 5,
  • "unit": "pc",
  • "currency_price": 4.5,
  • "price": 4.5,
  • "total_net": 22.5,
  • "total_vat": 4.95,
  • "total_gross": 27.45,
  • "currency_total_net": 22.5,
  • "currency_total_vat": 4.95,
  • "currency_total_gross": 27.45,
  • "vat_rate": "22.00",
  • "company_vat_rate_id": 3,
  • "project_id": null,
  • "cost_centre_id": null,
  • "row_nr": 2,
  • "is_vat_non_deductible": 0,
  • "article": { },
  • "financialAccount": {
    • "id": 118,
    • "account_code": "50641",
    • "name": "Office supplies"
    }
}

Delete a purchase invoice row

Deletes a single row of a purchase invoice. Requires the Create permission on Purchase Invoice, the same as editing the invoice.

The row is soft deleted, the same way as saving the whole invoice with is_deleted: 1 on the row, and is gone from the invoice payload. A proportional VAT child row is deleted together with its parent. Invoice totals are recalculated afterwards.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

rowId
required
integer

The ID of the purchase invoice row.

Responses

Response samples

Content type
application/json
{
  • "name": "Unauthorized",
  • "message": "Your request was made with invalid credentials.",
  • "code": 0,
  • "status": 401
}

Lock a purchase invoice

Locks the purchase invoice and creates the corresponding financial entry. Requires the Lock permission on Purchase Invoice.

Before locking, the invoice is validated with the same checks as in the web application:

  • if the invoice requires approval, it must be approved first
  • the company must have a Purchase Debt financial account
  • the invoice must have at least one row
  • each row's VAT rate must have a purchase (or reverse purchase) financial account
  • the financial entry date must not fall within a locked period

If any check fails, the response is 200 OK with success: 0 and an errors array of human-readable messages, and nothing is changed.

Side effects on success:

  • a financial entry is created for the invoice
  • payments reconciled to this invoice are locked as well
  • for credit invoices, the parent invoice's paid sum is recalculated

The endpoint is idempotent — locking an already locked invoice returns success: 1 with the existing locked_at timestamp and does not create a duplicate financial entry.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

Responses

Response Schema: application/json
success
required
integer (Bool)
Enum: 0 1

0 or 1.

locked_at
string or null (DateTime)

Lock timestamp; null when the invoice is not locked. Present when success is 1.

errors
Array of strings

Human-readable reasons. Present when success is 0.

Response samples

Content type
application/json
Example
{
  • "success": 1,
  • "locked_at": "2026-07-14 08:12:45"
}

Unlock a purchase invoice

Unlocks the purchase invoice and removes its financial entry with all of its rows. Requires the Lock permission on Purchase Invoice.

Side effects on success:

  • the invoice's financial entry is deleted
  • payments reconciled to this invoice are unlocked as well
  • for credit invoices, the parent invoice's paid sum is recalculated

Fails with success: 0 when the financial entry date falls within a locked period, or when the financial entry can no longer be deleted.

The endpoint is idempotent — unlocking an invoice that is not locked returns success: 1.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the purchase invoice.

Responses

Response Schema: application/json
success
required
integer (Bool)
Enum: 0 1

0 or 1.

locked_at
string or null (DateTime)

Lock timestamp; null when the invoice is not locked. Present when success is 1.

errors
Array of strings

Human-readable reasons. Present when success is 0.

Response samples

Content type
application/json
Example
{
  • "success": 1,
  • "locked_at": null
}

Articles

Products and services used on invoice rows. Sales and purchase articles are separate registers.

List sales articles

Lists the articles available for sales invoice rows. Requires the Index permission on Article.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

Responses

Response Schema: application/json
object
object
Array of objects (Article)

Response samples

Content type
application/json
{}

Get a sales article

Requires the View permission on Article.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the article.

Responses

Response Schema: application/json
id
integer
name
string
sku
string or null
ean
integer or null
decimals
integer

Number of decimals used for the article's prices.

net_price
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

vat_price
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

gross_price
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

host_country_vat_rate_id
integer or null

Default VAT rate for domestic sales/purchases.

eu_vat_rate_id
integer or null
non_eu_vat_rate_id
integer or null
host_country_fa_id
integer or null

Default financial account for domestic sales/purchases.

sales_eu_fa_id
integer or null
sales_non_eu_fa_id
integer or null
unit
string or null
cost_centre_id
integer or null
project_id
integer or null

Response samples

Content type
application/json
{
  • "id": 200,
  • "name": "Fuel",
  • "sku": "FUL",
  • "ean": 0,
  • "decimals": 2,
  • "net_price": "70.0000",
  • "vat_price": "70.0000",
  • "gross_price": "70.0000",
  • "host_country_vat_rate_id": 0,
  • "eu_vat_rate_id": 0,
  • "non_eu_vat_rate_id": 0,
  • "host_country_fa_id": 0,
  • "sales_eu_fa_id": 0,
  • "sales_non_eu_fa_id": 0,
  • "unit": "ltr",
  • "cost_centre_id": 0,
  • "project_id": 0
}

List purchase articles

Lists the articles available for purchase invoice and expense report rows. Requires the Index permission on Purchase Article.

The list can be filtered with the filter query parameter on name, sku and ean. A plain value matches exactly; an operator object allows partial matches:

GET /purchase-article/?filter[sku]=FUL
GET /purchase-article/?filter[name][like]=fuel
GET /purchase-article/?filter[sku][in][]=FUL&filter[sku][in][]=DIES

Supported operators: eq, neq, like, in, nin, lt, lte, gt, gte; several conditions are combined with AND. The same structure may alternatively be sent as a JSON body { "filter": { "name": { "like": "fuel" } } }.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

object
Example: filter[name]=[object Object]

Filter on name, sku or ean (see above).

Responses

Response Schema: application/json
object
object
Array of objects (Article)

Response samples

Content type
application/json
{}

Get a purchase article

Requires the View permission on Purchase Article.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the article.

Responses

Response Schema: application/json
id
integer
name
string
sku
string or null
ean
integer or null
decimals
integer

Number of decimals used for the article's prices.

net_price
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

vat_price
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

gross_price
number or string or null (Decimal)

A decimal number. Returned as a JSON number or a numeric string; both are accepted on input.

host_country_vat_rate_id
integer or null

Default VAT rate for domestic sales/purchases.

eu_vat_rate_id
integer or null
non_eu_vat_rate_id
integer or null
host_country_fa_id
integer or null

Default financial account for domestic sales/purchases.

sales_eu_fa_id
integer or null
sales_non_eu_fa_id
integer or null
unit
string or null
cost_centre_id
integer or null
project_id
integer or null

Response samples

Content type
application/json
{
  • "id": 200,
  • "name": "Fuel",
  • "sku": "FUE",
  • "ean": null,
  • "decimals": 2,
  • "net_price": "1.1200",
  • "vat_price": null,
  • "gross_price": null,
  • "host_country_vat_rate_id": 877,
  • "eu_vat_rate_id": null,
  • "non_eu_vat_rate_id": null,
  • "host_country_fa_id": 13104,
  • "sales_eu_fa_id": null,
  • "sales_non_eu_fa_id": null,
  • "unit": "ltr",
  • "cost_centre_id": null,
  • "project_id": null
}

Financial accounts

The company's chart of accounts (read only).

List financial accounts

Lists the company's chart of accounts. Requires the Index permission on Financial Account.

The list can be filtered on account_code:

GET /financial-account/?filter[account_code]=10100
GET /financial-account/?filter[account_code][like]=101
Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

object
Example: filter[account_code]=[object Object]

Filter on account_code — a plain value for an exact match or an operator object.

Responses

Response Schema: application/json
object
object
Array of objects (FinancialAccount)

Response samples

Content type
application/json
{}

Get a financial account

Requires the View permission on Financial Account.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the financial account.

Responses

Response Schema: application/json
id
integer
account_code
string
financial_account_class_id
integer or null
name
string

Name in the company's language.

object

Response samples

Content type
application/json
{
  • "id": 1,
  • "account_code": "10100",
  • "financial_account_class_id": 1,
  • "name": "Cash",
  • "translations": {
    • "name": {
      }
    }
}

Projects

List projects

Requires the Index permission on Project.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

Responses

Response Schema: application/json
object
object
Array of objects (Project)

Response samples

Content type
application/json
{}

Create a project

Requires the Create permission on Project. code must be unique within the company.

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
string <= 255 characters
code
string <= 255 characters
date_start
string or null <date> (Date)
date_end
string or null <date> (Date)
is_active
integer (Bool)
Enum: 0 1

0 or 1.

Responses

Response Headers
Location
string

URL of the created project.

Response Schema: application/json
id
integer
name
string
code
string
date_start
string or null <date> (Date)
date_end
string or null <date> (Date)
is_active
integer (Bool)
Enum: 0 1

0 or 1.

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Request samples

Content type
application/json
{
  • "name": "New Project",
  • "code": "NEWPR1"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "New Project",
  • "code": "NEWPR1",
  • "date_start": null,
  • "date_end": null,
  • "is_active": 1,
  • "created_at": "2026-06-02 11:31:26",
  • "updated_at": "2026-06-02 11:31:26"
}

Get a project

Requires the View permission on Project.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the project.

Responses

Response Schema: application/json
id
integer
name
string
code
string
date_start
string or null <date> (Date)
date_end
string or null <date> (Date)
is_active
integer (Bool)
Enum: 0 1

0 or 1.

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Project 1",
  • "code": "PRJ1",
  • "date_start": "2026-07-01",
  • "date_end": "2026-07-01",
  • "is_active": 0,
  • "created_at": "2026-07-13 09:45:12",
  • "updated_at": "2026-07-13 09:45:12"
}

Update a project

Requires the Edit permission on Project. PATCH is accepted as well; in both cases only the fields sent are changed.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the project.

Request Body schema: application/json
required
name
string <= 255 characters
code
string <= 255 characters
date_start
string or null <date> (Date)
date_end
string or null <date> (Date)
is_active
integer (Bool)
Enum: 0 1

0 or 1.

Responses

Response Schema: application/json
id
integer
name
string
code
string
date_start
string or null <date> (Date)
date_end
string or null <date> (Date)
is_active
integer (Bool)
Enum: 0 1

0 or 1.

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Request samples

Content type
application/json
{
  • "name": "New Name",
  • "code": "NEWPR11"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Project 1",
  • "code": "PRJ1",
  • "date_start": "2026-07-01",
  • "date_end": "2026-07-01",
  • "is_active": 0,
  • "created_at": "2026-07-13 09:45:12",
  • "updated_at": "2026-07-13 09:45:12"
}

Delete a project

Requires the Delete permission on Project. A project that is referenced by documents cannot be deleted.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the project.

Responses

Response samples

Content type
application/json
{
  • "name": "Unauthorized",
  • "message": "Your request was made with invalid credentials.",
  • "code": 0,
  • "status": 401
}

Cost centres

List cost centres

Requires the Index permission on Cost Centre.

Authorizations:
bearerAuth
query Parameters
page
integer >= 1
Default: 1

Page number, 1-based.

per-page
integer [ 1 .. 1000 ]
Default: 50

Records per page.

sort
string

Field to sort by. Prefix with - for descending order, e.g. -invoice_date.

fields
string
Example: fields=id,sequence_number,total_sum

Comma-separated list of fields to return instead of the full record.

Responses

Response Schema: application/json
object
object
Array of objects (CostCentre)

Response samples

Content type
application/json
{}

Create a cost centre

Requires the Create permission on Cost Centre. code must be unique within the company.

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
string <= 255 characters
code
string <= 255 characters
is_active
integer (Bool)
Enum: 0 1

0 or 1.

Responses

Response Headers
Location
string

URL of the created cost centre.

Response Schema: application/json
id
integer
name
string
code
string
is_active
integer (Bool)
Enum: 0 1

0 or 1.

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Request samples

Content type
application/json
{
  • "name": "New Cost Centre",
  • "code": "CC1"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "New Cost Centre",
  • "code": "CC1",
  • "is_active": 1,
  • "created_at": "2026-06-02 11:35:54",
  • "updated_at": "2026-06-02 11:35:54"
}

Get a cost centre

Requires the View permission on Cost Centre.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the cost centre.

Responses

Response Schema: application/json
id
integer
name
string
code
string
is_active
integer (Bool)
Enum: 0 1

0 or 1.

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Marketing",
  • "code": "CC1",
  • "is_active": 0,
  • "created_at": "2026-07-13 09:45:12",
  • "updated_at": "2026-07-13 09:45:12"
}

Update a cost centre

Requires the Edit permission on Cost Centre. PATCH is accepted as well; in both cases only the fields sent are changed.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the cost centre.

Request Body schema: application/json
required
name
string <= 255 characters
code
string <= 255 characters
is_active
integer (Bool)
Enum: 0 1

0 or 1.

Responses

Response Schema: application/json
id
integer
name
string
code
string
is_active
integer (Bool)
Enum: 0 1

0 or 1.

created_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

updated_at
string or null (DateTime)

YYYY-MM-DD HH:MM:SS, server local time.

Request samples

Content type
application/json
{
  • "name": "New Cost Centre name",
  • "code": "CC11"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Marketing",
  • "code": "CC1",
  • "is_active": 0,
  • "created_at": "2026-07-13 09:45:12",
  • "updated_at": "2026-07-13 09:45:12"
}

Delete a cost centre

Requires the Delete permission on Cost Centre. A cost centre that is referenced by documents cannot be deleted.

Authorizations:
bearerAuth
path Parameters
id
required
integer

The ID of the cost centre.

Responses

Response samples

Content type
application/json
{
  • "name": "Unauthorized",
  • "message": "Your request was made with invalid credentials.",
  • "code": 0,
  • "status": 401
}