Proformas
List proformas
Returns a paginated list of proformas in a simplified preview shape. Use this endpoint for lists, sync flows, and quick payment-status overviews; use the detail endpoint for the full payload.
GET
List proformas
Authorizations
Bearer token created for a specific company in Integrations → API.
Query Parameters
Filter by document number.
Filter by client.
Filter by payment status.
Available options:
paid, unpaid, partially_paid, overdue, will_not_be_paid Issue date from.
Issue date to.
Due date from.
Due date to.
Minimum total amount without VAT.
Maximum total amount without VAT.
When true, only proformas that do not yet have a linked final invoice are returned.
Field used for sorting.
Available options:
number, issueDate, dueDate, total, totalWithVat Sorting direction.
Available options:
asc, desc Number of results per page.
Required range:
1 <= x <= 500Page number.
Required range:
x >= 1Previous
Create proformaCreates a new proforma.
### Recommended flow
The recommended happy path is to send `clientId` and `items`.
If the client does not exist yet or you do not want a separate client create step, send the `client` object without `clientId`. The backend attempts to match an existing client and creates a new one only when no match is found.
If you send both `clientId` and `client`, the `client` object acts as a sparse snapshot override for this specific proforma.
### How defaults are resolved
Most document fields are optional. The backend resolves them in this order:
1. explicit value from the payload,
2. client default values,
3. company document settings,
4. system resolver.
In practice, this means for example:
- `number` and `numericalSeriesId` are resolved from the primary numbering series when omitted,
- `variableSymbol` is derived from the final document number when omitted,
- `bankAccountId` falls back to the primary company bank account when omitted,
- `dueDateDays` may be resolved from client preferences or company document settings,
- `deliveryMethodId`, `paymentMethodId`, `currencyId`, `languageId`, `qrTypeId`, `note`, and `textAboveItems` may be resolved from the client or company settings,
- `issueDate` defaults to today.
### How client resolution works
Client resolution is strictly deterministic:
- when you send `clientId`, the backend loads that client by ID within the token scope,
- when `clientId` is omitted, the `client` object is used to match or create the client,
- when you send both `clientId` and `client`, `client` is applied only as a snapshot override for this document.
Matching is deterministic and follows this order:
- for companies: `vatId`, then `countryId + subjectId`, then `name + email`, then `name + street`,
- for people: `name + email`, then `name + street`.
### How line items work
A line item can be created in three ways:
1. as a manual item with its own name, unit, price, and VAT rate,
2. through `priceListItemId` and `quantity`,
3. through `priceListItemId` and sparse overrides for selected fields such as the price or name.
If you send a discount without `discountName`, the backend fills in a localized default discount label based on the document language.
If you send an `Idempotency-Key`, the same key with the same payload returns the original response without creating the proforma again.
Next
List proformas

