Developer
Resources
The request bodies, exactly as the boundary enforces them.
Create a customer or vendor
| Field | Required | Notes |
|---|---|---|
| name | Yes | Legal / trading name, ≤ 255 characters |
| No | Valid email; 409 conflict if it already belongs to a party of this business | |
| phone, address, city, state, country, countryCode | No | countryCode is ISO 3166-1 alpha-2 |
| currency | No | ISO 4217; defaults to the business currency |
| taxId, website, note | No | |
| creditLimit | No | Number ≥ 0 |
| paymentTerm | No | Days, integer ≥ 0 |
| categoryId, centerIds[] | No | Category and the locations the party is visible in |
Create an invoice
json
{
"receiver": "<customer id>",
"date": "2026-08-26",
"dueDate": "2026-09-25",
"subject": "August services",
"items": [
{ "id": "<item id>", "qty": 2, "rate": 150.00, "description": "Consulting day" }
]
}| Field | Required | Notes |
|---|---|---|
| receiver | Yes | Customer id from /customers |
| date | Yes | YYYY-MM-DD — the invoice date settlement is ordered by |
| items[] | Yes, ≥ 1 | Each line: id (item), qty > 0, rate ≥ 0; optional description, discount, discount_type, tax |
| dueDate, subject, currency, exchange_rate, center, documentDiscount | No | center must be in the bound user's location allow-list |
| status | No | 2 = post (default: numbered and journalled), 1 = save as draft |
ℹ️Why the response has fewer fields than the dashboard
The API returns the same envelope the dashboard receives; figures (totals, balances) are computed by the backend and never re-derived. The invoice number is allocated at post time and returned as no.
Create an item
| Field | Required | Notes |
|---|---|---|
| name | Yes | Unique within the business |
| sku, barcode | No | sku unique within the business |
| type | No | Product (default), Service, Material, Expense |
| sub_type | No | buy (default), sell, both |
| rate, cost | No | Selling price, purchase cost |
| measurement | No | Unit of measure, default "Unit" |
| category_id, income_account_id, expense_account_id, inventory_account_id | No |
Pagination and ids
page (1-based) and page_size (default 25, max 200). Lists return pagination.total_count / has_next / has_prev. Ids are UUIDs and are accepted with or without dashes.