Create invoice
Creates a new customer invoice in the organisation. Set isDraft to false to immediately post the invoice and create the underlying transactions.
Creating a customer invoice
Invoices belong to a template and are addressed to a contact (or a free-text recipient). They are made up of an ordered list of positions, each of which has a discriminatortype:
product— a standard billable line with aquantity,singleAmount, andcontraAccountdiscount— reduces the preceding positions, by either apercentageor an absoluteamount(exactly one of the two must be set)text— a non-billable text linesubtotal— renders the running subtotal of the preceding positions
Draft vs. posted
TheisDraft flag controls whether the new invoice is posted immediately:
isDraft: true— saves the invoice as a draft. No accounting transactions are created.isDraft: false— posts the invoice and creates the underlying transactions onopeningDate. The transaction date must fall within an editable fiscal year and VAT period.
Foreign-currency invoices
To issue an invoice in a non-primary currency, provideoriginalCurrency (3-character ISO 4217 code). The currency must already be enabled in the organisation.
exchangeRate is optional. When omitted, the invoice inherits the organisation’s stored exchange rate for that currency, the same behaviour as foreign-currency ledger entries. When provided, it is expressed as 1 originalCurrency = X primaryCurrency (e.g. 0.98 if 1 EUR = 0.98 CHF). An exchangeRate without originalCurrency is rejected.
External reference
Use the optionalexternalReference string to retain an id that belongs outside Infinity. It is capped at 128 characters, returned on create, get, and list responses, and can be used as an exact-match filter when you find invoices.
The reference must be unique among the organisation’s invoices. A duplicate returns 409 Conflict with error code customer-invoices/external-reference-already-exists.
Example
The following payload creates a posted CHF invoice with two product lines and a 10% discount:Retrying safely with idempotency keys
If a request fails or times out, you may not know whether the invoice was created. To retry safely without creating a duplicate invoice, provide a uniqueIdempotency-Key header (for example a UUID) with your request:
- Keys are scoped to your organisation, API key and endpoint. The same key can be used once for an invoice and once for an estimate.
- Keys are retained for 24 hours. After that, a key can be used again and will create a new invoice.
- Reusing a key with a different payload returns
409 Conflictwith error coderest-api/idempotency-key-payload-mismatch. - While a request is still being processed, concurrent requests with the same key return
409 Conflictwith error coderest-api/idempotency-key-request-in-progress. - If a request fails, its key is released, so the same key can be used to retry.
Authorizations
API token for authentication. Obtain from your Infinity account settings.
Headers
A unique key that makes this request idempotent, for example a UUID. If a request fails or times out, it can safely be retried with the same key without creating a duplicate: a retry with the same key and payload returns the status and response of the original request, including the resource it created.
Keys are scoped to your organisation and API key, and are retained for 24 hours. Reusing a key with a different payload returns 409 Conflict. While a request is still being processed, other requests with the same key also return 409 Conflict.
1 - 200Body
The invoice payload.
Request body for creating a customer invoice.
The opening date (issue date) of the document in YYYY-MM-DD format. For invoices, this is also the date used for the posted accounting transactions.
The ordered list of positions on the document. At least one position is required, and discount positions must specify exactly one of percentage or amount.
A standard billable line item with a quantity, single amount, and contra account. Most invoice and estimate positions are of this type.
- ProductPosition
- DiscountPosition
- TextPosition
- SubtotalPosition
When true the invoice is created in draft state and no transactions are posted. Set to false to immediately post the invoice.
The id of the invoice template to render the document with. When omitted while creating an invoice or estimate, the organisation's default template is used. Use the invoice templates endpoint to list the available templates.
The id of the contact this document is addressed to. Required unless customRecipientText is provided.
An ad-hoc recipient text used when no contact is associated with the document.
2000An optional reference for this document in an external system.
128Optional document title displayed on the rendered output.
128Payment terms for this document in days from the opening date. Defaults to 30 on create.
0 <= x <= 365Text rendered above the positions.
2000Text rendered below the positions.
2000Whether position amounts are entered gross (including VAT) or net (excluding VAT).
gross, net The language used to render the document.
de, en, fr, it The columns to render in the positions table. If not provided the template default is used.
A column that can be shown on the rendered invoice or estimate.
quantity, unit, articleNumber, name, date, vatDebt, vatRate, singleAmount, totalAmount, discountRate, positionNumber, customTextColumn1, customTextColumn2, customTextColumn3 For foreign-currency documents: the 3-character ISO 4217 currency code the document is denominated in. Must be a currency code that is enabled in the organisation. When set without exchangeRate, the organisation's stored exchange rate for that currency is used.
3For foreign-currency documents: the conversion rate from the original currency to the primary accounting currency, expressed as 1 originalCurrency = X primaryCurrency. Optional when originalCurrency is set; if omitted, defaults to the organisation's stored exchange rate for that currency. Cannot be set without originalCurrency.
When true the document is rendered as a QR-bill (Swiss QR-Rechnung). Defaults to false.
Response
The invoice was created successfully.
The full representation of a customer invoice.