Vouchers
Vouchers represent financial documents in the system that can be linked to various entities such as documents, journal entries, and collections. They form a crucial part of the financial document management system.
Status Values
Voucher Status
| Value | Description |
|——-|————-|
| PENDING | Initial state, voucher awaiting processing |
| DRAFT | Voucher is being worked on, can be modified |
| ARCHIVED | Voucher has been archived and is no longer active |
| BOOKED | Voucher has been posted to the accounting system |
| DELETED | Voucher has been marked as deleted |
Document Types
Accounts Receivable Documents
| Value | Description |
|——-|————-|
| ARINV | AR Invoice - Customer invoice |
| ARCRN | AR Credit Note - Customer credit note |
| ARCIN | AR Cash Invoice - Customer cash invoice |
| ARPIN | AR Proforma Invoice - Customer proforma invoice |
| ARDEB | AR Debt Collection - Customer debt collection document |
Accounts Payable Documents
| Value | Description |
|——-|————-|
| APINV | AP Invoice - Supplier invoice |
| APCRN | AP Credit Note - Supplier credit note |
| RECPT | AP Receipt - Supplier receipt |
| APCIN | AP Cash Invoice - Supplier cash invoice |
| APPIN | AP Proforma Invoice - Supplier proforma invoice |
| APDEB | AP Debt Collection - Supplier debt collection document |
Settlement Documents
| Value | Description |
|——-|————-|
| PAYSR | Payment Settlement Report |
| SALSM | Sales Summary |
| VATST | VAT Settlement - For payment of VAT |
| VATRP | VAT Report - For reporting VAT |
Payroll Documents
| Value | Description |
|——-|————-|
| PRRUN | Payroll Run |
| PRPAY | Payroll Payment List |
| PRTAX | Payroll Tax Settlement |
Workflow Status
| Value | Description |
|——-|————-|
| IMAGE_PROCESSING | Document image is being processed and text extracted |
| STARTING_WORKFLOW | Initial workflow setup is in progress |
| CLASSIFICATION | Document type is being determined |
| DATA_EXTRACTION | Relevant data is being extracted from the document |
| WAITING_FOR_ANSWER | Workflow is paused waiting for user input |
| DUPLICATE_CHECK | Checking for duplicate documents |
| BOOKING | Document is being posted to the accounting system |
| CANCELLED | Workflow has been cancelled |
| COMPLETED | Workflow has completed successfully |
List Vouchers
Retrieves a paginated list of vouchers based on specified filters.
Query Parameters
| Parameter |
Type |
Description |
| client_account_id |
integer[] |
Filter by specific client account IDs |
| status |
string[] |
Filter by voucher status (see Voucher Status table above) |
| document_type |
string[] |
Filter by document type (see Document Types tables above) |
| document_status |
string[] |
Filter by document status |
| payment_status |
string[] |
Filter by payment status |
| document_date_from |
date |
Filter by document date range start (YYYY-MM-DD) |
| document_date_to |
date |
Filter by document date range end (YYYY-MM-DD) |
| due_date_from |
date |
Filter by due date range start (YYYY-MM-DD) |
| due_date_to |
date |
Filter by due date range end (YYYY-MM-DD) |
| business_partner_id |
integer[] |
Filter by business partner IDs |
| collection_id |
integer[] |
Filter by collection IDs |
| project_id |
integer[] |
Filter by project IDs |
| free_text |
string |
Search across voucher fields and related documents |
| has_project |
boolean |
Filter vouchers with/without projects |
| has_collection |
boolean |
Filter vouchers with/without collections |
| has_journal_entry |
boolean |
Filter vouchers with/without journal entries |
| has_document |
boolean |
Filter vouchers with/without documents |
| has_attachment |
boolean |
Filter vouchers with/without attachments |
| order_by |
string |
Sort field and direction (e.g., “created_at desc”) |
| with |
string[] |
Include related objects in response |
| page |
integer |
Page number for pagination (default: 1) |
| per_page |
integer |
Items per page (default: 100, max: 100) |
Response Fields
| Field |
Type |
Description |
| id |
integer |
Unique identifier |
| created_at |
datetime |
Creation timestamp |
| document_date |
date |
Date of the voucher document |
| status |
string |
Current status of the voucher (see Voucher Status table above) |
| collection_id |
integer |
ID of associated collection |
| project_id |
integer |
ID of associated project |
| workflow_status |
string |
Current workflow status (see Workflow Status table above) |
The following related objects can be included using the with parameter:
attachments: Associated file attachments
documents: Linked commercial documents
document: Primary document
journal_entries: Associated journal entries
journal_entry: Primary journal entry
statements: Associated statements
statement: Primary statement
tasks: Related worker tasks
questions: Associated accounting questions
collection: Associated voucher collection
project: Associated project
Example Request
GET /api/v2/vouchers?status[]=PENDING&document_date_from=2024-01-01&with[]=documents&with[]=journal_entries
Example Response
{
"items": [
{
"id": 1234,
"created_at": "2024-01-15T10:30:00Z",
"document_date": "2024-01-15",
"status": "PENDING",
"collection_id": 567,
"project_id": 890,
"workflow_status": "DATA_EXTRACTION",
"documents": [
{
"id": 456,
"type": "APINV",
"status": "PENDING"
}
],
"journal_entries": [
{
"id": 789,
"posting_date": "2024-01-15",
"status": "DRAFT"
}
]
}
],
"total": 45,
"page": 1,
"per_page": 100
}
Get Single Voucher
GET /api/v2/vouchers/{id}
Retrieves a specific voucher by ID.
Path Parameters
| Parameter |
Type |
Description |
| id |
integer |
Voucher ID |
Example Request
GET /api/v2/vouchers/1234?with[]=documents&with[]=journal_entries
Example Response
{
"id": 1234,
"created_at": "2024-01-15T10:30:00Z",
"document_date": "2024-01-15",
"status": "PENDING",
"collection_id": 567,
"project_id": 890,
"workflow_status": "DATA_EXTRACTION",
"documents": [
{
"id": 456,
"type": "APINV",
"status": "PENDING"
}
],
"journal_entries": [
{
"id": 789,
"posting_date": "2024-01-15",
"status": "DRAFT"
}
]
}
Error Responses
| Status Code |
Description |
| 404 |
Voucher not found |
| 403 |
No access to voucher |
Endpoints
| Method |
Endpoint |
Description |
| GET |
/vouchers |
List vouchers |
| GET |
/vouchers/{id} |
Get a single voucher |
| POST |
/vouchers/merge |
Merge multiple vouchers into one |
| POST |
/vouchers/split |
Split a multi-page voucher |
| GET |
/vouchers/{id}/statements |
List statements for a voucher |
| POST |
/vouchers/{id}/statements |
Create a statement for a voucher |
Merge Vouchers
POST /api/v2/vouchers/merge
Merges multiple vouchers into a single PDF voucher. PDFs and images from the source vouchers are combined into one document. Non-PDF files (Word, Excel, etc.) are transferred as attachments on the merged voucher. The page order in the merged PDF follows the order of the voucher_ids array.
Request Body
| Field |
Type |
Required |
Description |
| voucher_ids |
integer[] |
Yes |
List of voucher IDs to merge. Must contain at least 2 IDs. Order determines page order in the merged PDF |
| source_action |
string |
No |
What to do with source vouchers after merge. Default: NONE |
Source Action Values
| Value |
Description |
NONE |
Keep source vouchers unchanged |
ARCHIVE |
Archive the documents associated with the source vouchers |
DELETE |
Delete the source vouchers. Fails if any source voucher has posted journal entries |
Example Request
{
"voucher_ids": [101, 102, 103],
"source_action": "ARCHIVE"
}
Example Response (201 Created)
{
"id": 200,
"created_at": "2026-04-10T08:30:00Z",
"document_date": "2026-04-10",
"status": "PENDING",
"collection_id": null,
"project_id": null,
"workflow_status": null
}
Error Responses
| Status |
Description |
| 400 |
voucher_ids missing, not a list, or contains fewer than 2 IDs |
| 400 |
Invalid source_action value |
| 400 |
Source vouchers belong to different client accounts |
| 400 |
source_action is DELETE but a source voucher has posted journal entries |
| 400 |
No PDF-able files found in the selected vouchers |
| 403 |
No access to one of the specified vouchers |
| 404 |
A voucher ID was not found |
Split Voucher
POST /api/v2/vouchers/split
Splits a multi-page PDF voucher into multiple vouchers by page ranges. Each page range produces a new voucher. Pages are 1-indexed and ranges are inclusive. If the source voucher has a statement, it is copied to all new vouchers.
Request Body
| Field |
Type |
Required |
Description |
| voucher_id |
integer |
Yes |
ID of the PDF voucher to split |
| page_ranges |
integer[][] |
Yes |
List of [start_page, end_page] pairs. Must contain at least 2 ranges. Pages are 1-indexed and inclusive |
| source_action |
string |
No |
What to do with the source voucher after split. Default: NONE |
The source_action values are the same as for Merge Vouchers.
Example Request
{
"voucher_id": 456,
"page_ranges": [[1, 2], [3, 5], [6, 6]],
"source_action": "DELETE"
}
Example Response (201 Created)
Returns an array of newly created vouchers, one per page range:
[
{
"id": 457,
"created_at": "2026-04-10T09:00:00Z",
"document_date": "2026-04-10",
"status": "PENDING",
"collection_id": null,
"project_id": null,
"workflow_status": null
},
{
"id": 458,
"created_at": "2026-04-10T09:00:00Z",
"document_date": "2026-04-10",
"status": "PENDING",
"collection_id": null,
"project_id": null,
"workflow_status": null
},
{
"id": 459,
"created_at": "2026-04-10T09:00:00Z",
"document_date": "2026-04-10",
"status": "PENDING",
"collection_id": null,
"project_id": null,
"workflow_status": null
}
]
Error Responses
| Status |
Description |
| 400 |
voucher_id missing or not an integer |
| 400 |
page_ranges missing, not a list, or contains fewer than 2 ranges |
| 400 |
A page range is not a list of exactly 2 integers |
| 400 |
Invalid source_action value |
| 400 |
Voucher is not a PDF |
| 400 |
Voucher has only one page |
| 400 |
Page range is out of bounds |
| 400 |
Start page is greater than end page in a range |
| 400 |
Page ranges overlap |
| 400 |
source_action is DELETE but voucher has posted journal entries |
| 403 |
No access to the voucher |
| 404 |
Voucher not found |
Voucher Statements
Voucher statements capture user-provided metadata about a voucher, such as the expense purpose, item categories, payment method, and payor. They are used during the document processing workflow to enrich vouchers with accounting-relevant information. Creating or updating a statement can trigger automatic updates to the linked journal entry (e.g. setting the project dimension) and influence the document posting workflow.
List Voucher Statements
GET /api/v2/vouchers/{id}/statements
Returns a paginated list of statements for a specific voucher, ordered by creation date (newest first).
Path Parameters
| Parameter |
Type |
Description |
| id |
integer |
Voucher ID |
Query Parameters
| Parameter |
Type |
Required |
Description |
| page |
integer |
No |
Page number (default: 1) |
| per_page |
integer |
No |
Items per page (default: 100) |
| with |
string |
No |
Include related resources (supported: created_by, payor, project, collection, tags) |
Response
{
"data": [
{
"id": 10,
"created_by_id": 7,
"created_at": "2026-04-10T09:15:00Z",
"client_account_id": 7,
"voucher_id": 1234,
"voucher_category_id": 2,
"item_categories": "ELECTRONICS,SOFTWARE_CLOUD_SERVICES",
"purpose": "WORKPLACE_EQUIPMENT",
"participant_information": null,
"additional_information": "New laptop for development team",
"payment_method": "BUSINESS_CARD",
"payor_id": null,
"project_id": 5,
"collection_id": null
}
],
"meta": {
"page": 1,
"pages": 1,
"per_page": 100,
"records": 1
}
}
Error Responses
| Status |
Description |
| 403 |
No access to the voucher’s client account |
| 404 |
Voucher not found |
Create Voucher Statement
POST /api/v2/vouchers/{id}/statements
Creates a new statement for a voucher. When a statement is created, the system may automatically update the linked journal entry’s project dimension and manage document posting workflow tasks.
Path Parameters
| Parameter |
Type |
Description |
| id |
integer |
Voucher ID |
Request Body
| Field |
Type |
Required |
Description |
| voucher_category_id |
integer |
No |
Voucher category ID |
| item_categories |
string |
No |
Comma-separated item categories (see Item Categories below) |
| purpose |
string |
No |
Expense purpose (see Purpose Values below) |
| participant_information |
string |
No |
Details about event participants (max 500 characters) |
| additional_information |
string |
No |
Additional notes (max 500 characters) |
| payment_method |
string |
No |
How the expense was paid (see Payment Methods below) |
| payor_id |
integer |
No |
Business partner ID of the person who paid |
| project_id |
integer |
No |
Project to associate with this expense |
| collection_id |
integer |
No |
Voucher collection ID |
| tags |
array |
No |
Array of tag objects with id field, e.g. [{"id": 1}, {"id": 2}] |
Example Request
{
"item_categories": "ELECTRONICS",
"purpose": "WORKPLACE_EQUIPMENT",
"payment_method": "BUSINESS_CARD",
"project_id": 5,
"additional_information": "New laptop for development team",
"tags": [{"id": 1}]
}
Response (201 Created)
Returns the created statement object (same shape as list response items).
Error Responses
| Status |
Description |
| 400 |
Invalid item category, purpose, or tag validation failure |
| 403 |
No access to the voucher’s client account |
| 404 |
Voucher not found |
Statement Attributes
| Attribute |
Type |
Description |
| id |
integer |
Unique identifier (read-only) |
| created_by_id |
integer |
User who created the statement (read-only) |
| created_at |
datetime |
Creation timestamp (read-only) |
| client_account_id |
integer |
The client account ID |
| voucher_id |
integer |
The voucher this statement belongs to |
| voucher_category_id |
integer |
Voucher category reference |
| item_categories |
string |
Comma-separated list of item category codes |
| purpose |
string |
Expense purpose code |
| participant_information |
string |
Details about participants (for entertainment/events) |
| additional_information |
string |
Free-text notes |
| payment_method |
string |
How the expense was paid |
| payor_id |
integer |
Business partner ID of the payor |
| project_id |
integer |
Associated project |
| collection_id |
integer |
Associated voucher collection |
Relationships
| Relationship |
Description |
| created_by |
The user who created the statement |
| payor |
The business partner who paid |
| project |
The associated project |
| collection |
The associated voucher collection |
| tags |
Tags attached to the statement |
Payment Methods
| Value |
Description |
PRIVATE_ACCOUNT |
Paid from a personal bank account |
PRIVATE_CARD |
Paid with a personal card |
BUSINESS_ACCOUNT |
Paid from the company bank account |
BUSINESS_CARD |
Paid with a company card |
Purpose Values
| Value |
Description |
MAINTENANCE_OF_OWN_ASSETS |
Maintenance or repair of company assets |
BUILD_PHYSICAL_PRODUCT |
Materials for building physical products |
USED_IN_CUSTOMER_PROJECTS |
Expense related to customer project work |
FOR_RESALE |
Goods purchased for resale |
WORKPLACE_EQUIPMENT |
Office and workplace equipment |
INCREASE_SALES |
Marketing, sales, or promotional expenses |
INTERNAL_EMPLOYEE_EVENTS |
Internal events, team activities |
OVERTIME_TRAVEL_INCONVENIENT_WORKING_HOURS |
Travel, overtime, or inconvenient working hours |
Item Categories
Common item category values include: ELECTRONICS, FOOD, FUEL, VEHICLES, BROADBAND_TELEPHONY, SOFTWARE_CLOUD_SERVICES, OFFICE_SUPPLIES, MARKETING, TRAVEL, ACCOMMODATION, CLOTHING, CLEANING, INSURANCE, RENT, PROFESSIONAL_SERVICES, EQUIPMENT, and others. Multiple categories can be combined with commas.