Documents
Commercial documents represent various types of business documents such as invoices, credit notes, and other financial documents. They can include both item lines for goods/services and payment lines for payment instructions.
Endpoints
| Method |
Endpoint |
Description |
| GET |
/documents |
List documents |
| POST |
/documents |
Create a document |
| GET |
/documents/{id} |
Get a specific document |
| PUT/PATCH |
/documents/{id} |
Update a document |
| DELETE |
/documents/{id} |
Delete a document |
| POST |
/documents/preview |
Generate a preview PDF of a document |
Query Parameters
The GET /documents endpoint supports the following query parameters:
| Parameter |
Type |
Required |
Description |
| client_account_id |
integer |
No |
Filter by client account ID. If omitted, returns documents across all client accounts the user can access |
| business_partner_id |
integer |
No |
Filter by business partner ID |
| from_document_date |
date |
No |
Filter from document date (inclusive) |
| to_document_date |
date |
No |
Filter to document date (inclusive) |
| document_date |
date |
No |
Filter by exact document date |
| due_date |
date |
No |
Filter by exact due date |
| document_type |
string |
No |
Filter by document type |
| document_status |
string |
No |
Filter by document status |
| document_number |
string |
No |
Filter by document number |
| payment_reference |
string |
No |
Filter by payment reference |
| gross_amount |
decimal |
No |
Filter by gross amount |
| open_amount |
decimal |
No |
Filter by remaining unpaid amount |
| pending_payment_amount |
decimal |
No |
Filter by pending payment request amount |
| payment_status |
string |
No |
Filter by payment status |
| is_active |
boolean |
No |
Filter by active status |
| is_payable |
boolean |
No |
Filter by whether the document is payable |
| is_unpaid |
boolean |
No |
Filter by whether the document is unpaid |
| is_available_for_payment |
boolean |
No |
Filter by whether the document is available for payment |
| is_being_paid |
boolean |
No |
Filter by whether the document has a pending payment |
| is_reconcilable |
boolean |
No |
Filter by whether the document can be reconciled |
| is_unreconciled |
boolean |
No |
Filter by whether the document has unreconciled amounts |
| match_bank_transaction_id |
integer |
No |
Find documents matching a specific bank transaction |
| order_by |
string |
No |
Sort order |
| page |
integer |
No |
Page number for pagination (default: 1) |
| per_page |
integer |
No |
Number of items per page (default: 100) |
| with |
string |
No |
Include related resources. Comma-separated list (supported: business_partner, payor, collector, bank_account, item_lines, payment_lines, reconciliation_lines, reconciliation_lines.status, reconciliation_lines.target, document_references, files, payment_requests). None are included by default. reconciliation_lines.status adds the derived status and reconciliation_lines.target the derived target to each reconciliation line; both imply reconciliation_lines. On the Vouchers endpoints the same relations are document.reconciliation_lines.status and document.reconciliation_lines.target |
Document Attributes
| Attribute |
Type |
Description |
| id |
integer |
The unique identifier of the document |
| created_at |
datetime |
When the document was created |
| created_by_id |
integer |
The ID of the user who created the document |
| updated_at |
datetime |
When the document was last updated |
| updated_by_id |
integer |
The ID of the user who last updated the document |
| client_account_id |
integer |
The ID of the client account |
| business_partner_id |
integer |
The ID of the business partner |
| payor_id |
integer |
The ID of the payor |
| collector_id |
integer |
The ID of the collector |
| document_date |
date |
The date of the document |
| due_date |
date |
The payment due date |
| period_start |
date |
Start date of the period covered |
| period_end |
date |
End date of the period covered |
| period_description |
string |
Description of the period |
| document_type |
string |
Type of document |
| document_status |
string |
Status of the document |
| document_number |
string |
Document number |
| document_uuid |
string |
Unique identifier for the document |
| document_description |
string |
Description of the document |
| buyer_reference |
string |
Buyer’s reference number |
| order_reference |
string |
Order reference number |
| note |
string |
Additional notes |
| collection_case_number |
string |
Collection case reference |
| collection_severity |
string |
Severity of collection |
| payment_status |
string |
Status of payment based on reconciliation (read-only) |
| stated_payment_status |
string |
Payment status stated via voucher statement, e.g. when using “Mark as paid”. Complements payment_status which is reconciliation-driven (read-only) |
| payment_means |
string |
Method of payment |
| payment_ref |
string |
Payment reference |
| payment_card_number |
string |
Card number for card payments |
| gross_amount |
decimal |
Total amount including tax |
| net_amount |
decimal |
Amount before tax |
| open_amount |
decimal |
Remaining unpaid amount (read-only) |
| pending_payment_amount |
decimal |
Amount in pending payment requests (read-only) |
| late_fee_amount |
decimal |
Late payment fees |
| interest_amount |
decimal |
Interest charges |
| bank_account_id |
integer |
ID of the associated bank account |
| voucher_id |
integer |
ID of the associated file/voucher |
| currency_id |
integer |
ID of the currency |
| currency_code |
string |
Currency code |
| exchange_rate |
decimal |
Exchange rate used |
| is_draft |
boolean |
Whether this is a draft document |
| is_imported |
boolean |
Whether this was imported |
| is_active |
boolean |
Whether the document is active |
| is_archived |
boolean |
Whether this is archived |
| is_payable |
boolean |
Whether the document can be paid (read-only) |
| is_unpaid |
boolean |
Whether the document has outstanding balance (read-only) |
| is_available_for_payment |
boolean |
Whether the document is available for payment (read-only) |
| is_being_paid |
boolean |
Whether the document has a pending payment request (read-only) |
| is_reconcilable |
boolean |
Whether the document can be reconciled (read-only) |
| is_unreconciled |
boolean |
Whether the document has unreconciled amounts (read-only) |
| archive_category |
string |
Category for archived documents |
| send_document |
boolean |
Whether to send the document |
| structured_data |
object |
Additional structured data. Always included in every response — not gated by the with parameter |
Document Line Attributes
| Attribute |
Type |
Description |
| id |
integer |
The unique identifier of the line |
| document_id |
integer |
The ID of the parent document |
| line_id |
integer |
Line number within the document |
| item_id |
integer |
The ID of the item |
| item_no |
string |
Item number/code |
| item_name |
string |
Name of the item |
| description |
string |
Description of the line |
| price |
decimal |
Unit price |
| currency_code |
string |
Currency code |
| quantity |
decimal |
Quantity |
| unit_id |
integer |
ID of the unit of measure |
| tax_code_id |
integer |
ID of the tax code |
| tax_rate |
decimal |
Tax rate percentage |
| tax_amount_lc |
decimal |
Tax amount in local currency |
| tax_amount_fc |
decimal |
Tax amount in foreign currency |
| total_lc |
decimal |
Total amount in local currency |
| total_fc |
decimal |
Total amount in foreign currency |
| item_collection_entry_id |
integer |
ID of collection entry |
Payment Line Attributes
| Attribute |
Type |
Description |
| id |
integer |
The unique identifier of the payment line |
| document_id |
integer |
The ID of the parent document |
| line_type |
string |
Type of payment line |
| requested_execution_date |
date |
Requested date for execution |
| debtor_business_partner_id |
integer |
ID of the debtor |
| debtor_bank_account_id |
integer |
ID of debtor’s bank account |
| creditor_business_partner_id |
integer |
ID of the creditor |
| creditor_bank_account_id |
integer |
ID of creditor’s bank account |
| amount |
decimal |
Payment amount |
| currency_code |
string |
Currency code |
| creditor_reference |
string |
Creditor’s reference |
Relationships
| Relationship |
Type |
Description |
| business_partner |
BusinessPartner |
The associated business partner |
| payor |
BusinessPartner |
The payor business partner |
| collector |
BusinessPartner |
The collector business partner |
| bank_account |
BankAccount |
The associated bank account |
| files |
UploadedFile |
Associated files and attachments |
| item_lines |
[DocumentLine] |
The item lines in the document |
| payment_lines |
[PaymentLine] |
The payment lines in the document |
| reconciliation_lines |
[DocumentReconciliationLine] |
Reconciliation lines for the document |
| document_references |
[DocumentReference] |
References to other documents |
| payment_requests |
PaymentRequest |
Associated payment requests |
Payment Line Types
| Value |
Description |
PRELIMINARY_TAX |
Preliminary tax payment |
VAT_SETTLEMENT |
VAT settlement payment |
NATIONAL_INSURANCE_CONTRIBUTION |
National insurance contribution |
TAX_WITHHOLDING |
Tax withholding payment |
EMPLOYEE_PAYMENT |
Payment to employee |
SUPPLIER_PAYMENT |
Payment to supplier |
LOAN_PAYMENT |
Loan repayment |
INTERNAL_TRANSFER |
Internal bank transfer |
GARNISHMENT |
Garnishment deduction payment |
Reconciliation Line Attributes
| Attribute |
Type |
Description |
| id |
integer |
The unique identifier of the reconciliation line |
| document_id |
integer |
The ID of the parent document |
| line_id |
integer |
Line number within the document |
| description |
string |
Description of the line as printed on the statement |
| reconciliation_type |
string |
TRANSACTIONAL for a movement on the statement, BALANCE for a balance at a date |
| amount |
decimal |
The amount as printed on the statement |
| currency_code |
string |
Currency code |
| transaction_date |
date |
Date of the movement or balance. null means the document period applies |
| category |
string |
What the line is about, as the issuer presents it; see Reconciliation Category. null until classified. Extraction fills it; writable through nested reconciliation_lines on PATCH/PUT |
| status |
string |
Derived from the line’s live external reconciliation (read-only). Only present with with=reconciliation_lines.status; see Reconciliation Line Status |
| target |
object |
Derived from category (read-only). Only present with with=reconciliation_lines.target; null when the line has no category or the client’s country has no rules. ledger_sign (1 or -1) is the sign applied to amount to get the expected ledger amount; accounts lists the general ledger accounts a sign-off may point at (id, account_code, description); dimension is the document’s value for the sub-ledger dimension those accounts require ({"relation_type": "businesspartner", "relation_id": 56}), or null |
Reconciliation Category
The category is written from the document’s point of view: what the line is about, as the issuer presents it. It fixes the ledger sign and, per country, the accounts a sign-off may use; the document supplies the dimension (its business partner for businesspartner, its bank account for bankacc) where a target account requires one. The sign reads the printed amount — positive when the item increases the issuer’s running balance for the client — into ledger terms (debit positive). If extraction got a printed sign wrong, correct the line’s amount while it is OPEN; the category rule never bends.
| Category |
What the line is about |
Sign |
Accounts (NO) |
DEPOSIT |
balance or movement on an account the bank holds for us |
+1 |
1900–1969, 2380–2399 |
DEPOSIT_INTEREST |
interest, customer dividend or other return the bank credited |
−1 |
8050–8079 |
DEPOSIT_FEE |
fees or commission charged on the deposit account |
−1 |
7770–7779 |
OVERDRAFT_INTEREST |
interest charged on an overdrawn deposit or card account |
−1 |
8150–8159 |
LOAN |
outstanding principal, draws, repayments on a loan or credit facility |
−1 |
2200–2399, 2900–2999 |
LOAN_INTEREST |
interest charged on the loan |
+1 |
8150–8159 |
LOAN_FEE |
fees on the loan |
+1 |
7770–7779, 8170–8179 |
TRADE_PAYABLE |
invoices, credit notes, payments, balance on a supplier statement |
−1 |
2400–2499 |
TRADE_RECEIVABLE |
the same on a customer statement |
+1 |
1500–1579 |
PENSION_PREMIUM |
contributions invoiced or paid to a pension scheme |
+1 |
5420–5429 |
PENSION_FUND |
balance of a premium or contribution fund held for us |
+1 |
1700–1799 |
INSURANCE_PREMIUM |
premiums invoiced or paid |
+1 |
7500–7599 |
VAT |
VAT due per return or settlement |
−1 |
2740 |
TAX_WITHHOLDING |
withheld employee tax due |
−1 |
2600–2609 |
EMPLOYER_CONTRIBUTION |
employer’s national insurance due |
−1 |
2770–2779 |
INCOME_TAX |
company tax assessed or prepaid |
−1 |
2500–2599 |
INVESTMENT |
holdings or value in an investment account |
+1 |
1300–1399, 1800–1899 |
INVESTMENT_RETURN |
dividends or gains credited |
−1 |
8070–8079 |
Lines of an AP_STATEMENT are always TRADE_PAYABLE. Annual report extraction classifies each line, leaving null where nothing applies (revenue, payroll cost and other financial statement lines). A line without a category cannot be signed off. An invalid value is refused with 400 Invalid reconciliation category.
Reconciliation Line Status
Reconciliation lines are attested through External Reconciliations: a record compares the line’s printed amount with journal entry lines (for TRANSACTIONAL lines) or an account balance (for BALANCE lines). The status is recomputed on every read by re-running that comparison against the current ledger.
| Value |
Description |
OPEN |
No live external reconciliation references the line |
RECONCILED |
The ledger side is unchanged since the record was made and the difference is zero |
EXPLAINED |
The ledger side is unchanged and the non-zero difference is covered by reconciling items |
DRIFTED |
The ledger amount has moved since the record was made; the record no longer describes the ledger |
A line referenced by a live external reconciliation cannot have its amount, currency_code, transaction_date, reconciliation_type or category changed, and neither the line nor its document can be deleted, until the reconciliation is retired (400 Reconciliation line is reconciled).
Document Reference Attributes
A document reference records that a document refers to another document: a credit note to the invoice it credits, a debt collection notice to the invoices it collects, a receipt to the invoice it belongs to. The reference is first stored as printed on the document (referenced_document_*). Saving a document resolves its references both ways — each unresolved reference is looked up by type and number within the same client account (narrowed to the document’s business partner, or for a debt collection to its business partner or collector), and references on other documents that name the document being saved are resolved against it. A resolved reference gets relation_type and relation_id pointing at the referenced document. Saving an ARCRN credit note also closes the invoices its resolved references point at.
| Attribute |
Type |
Description |
| document_id |
integer |
The ID of the document holding the reference |
| referenced_document_type |
string |
Type of the referenced document as printed, e.g. APINV |
| referenced_document_number |
string |
Document number of the referenced document as printed |
| referenced_document_date |
date |
Document date of the referenced document as printed |
| relation_type |
string |
Type of the resolved document. null until the reference resolves |
| relation_id |
integer |
ID of the resolved document. null until the reference resolves |
| relation_line_id |
integer |
ID of a single line in the resolved document, when the reference points at one line |
| applied_amount |
decimal |
Amount of the referenced document this document applies |
| applied_currency_code |
string |
Currency code of applied_amount |
| charge_amount |
decimal |
Late fee or other charge this document adds for the referenced document |
| charge_currency_code |
string |
Currency code of charge_amount |
| interest_amount |
decimal |
Interest this document charges for the referenced document |
| interest_currency_code |
string |
Currency code of interest_amount |
References are read with with=document_references and written as a nested document_references array on create and update. The API neither returns nor accepts an id for a reference, so the array you send replaces the document’s references and entries are matched to the existing ones by position.
File Relationships
Documents can have multiple associated files:
- A primary voucher file (through voucher_id)
- Additional attached files (through the files relationship)
- Files can be accessed through their download URLs with appropriate permissions
Example Response
Example shown with with=files,item_lines,payment_lines — these relations are omitted unless requested.
{
"id": 1,
"created_at": "2023-05-10T12:00:00Z",
"client_account_id": 1,
"business_partner_id": 2,
"document_date": "2023-05-10",
"due_date": "2023-06-09",
"document_type": "ARINV",
"document_status": "OPEN",
"document_number": "INV-2023-001",
"document_description": "Monthly services",
"gross_amount": "1200.00",
"net_amount": "1000.00",
"currency_code": "EUR",
"exchange_rate": "1.0000",
"payment_status": "NONE",
"stated_payment_status": null,
"is_draft": false,
"is_active": true,
"is_payable": true,
"is_unpaid": true,
"is_available_for_payment": true,
"is_being_paid": false,
"is_reconcilable": true,
"is_unreconciled": true,
"files": [
{
"id": 1,
"file_name": "invoice.pdf",
"download_url": "https://example.com/files/invoice.pdf",
"thumbnail_url": "https://example.com/thumbnails/invoice.jpg"
}
],
"item_lines": [
{
"id": 1,
"document_id": 1,
"line_id": 1,
"item_id": null,
"item_no": null,
"item_name": "Consulting Services",
"description": "Professional consulting May 2023",
"price": "1000.000000",
"currency_code": "EUR",
"quantity": "1.000000",
"unit_id": 5,
"tax_code_id": 3,
"tax_rate": "25.000000",
"tax_amount_lc": "250.000000",
"tax_amount_fc": "250.000000",
"total_lc": "1250.000000",
"total_fc": "1250.000000",
"item_collection_entry_id": null
}
],
"payment_lines": [
{
"id": 1,
"document_id": 1,
"line_type": "SUPPLIER_PAYMENT",
"requested_execution_date": "2023-06-09",
"debtor_business_partner_id": null,
"debtor_bank_account_id": 24,
"creditor_business_partner_id": 2,
"creditor_bank_account_id": null,
"amount": "1250.000000",
"currency_code": "EUR",
"creditor_reference": "12345678901"
}
]
}
Notes
- The client_account_id must be one of the eligible client accounts for the authenticated user
- When creating or updating a document, the created_by_id/updated_by_id is automatically set to the authenticated user’s ID
- Documents marked with send_document will be automatically sent when created or updated from draft status
- The preview endpoint generates a PDF preview without saving the document
- All amounts are returned as string representations of decimal numbers
- Dates are returned in ISO 8601 format
- Relationships can be included by specifying them in the
with query parameter
- Draft documents can be modified or deleted; finalized documents have restrictions
- Files associated with documents can be accessed through their download URLs which expire after one hour