Create order
Creates a new order.
Recommended flow
The recommended happy path is to send clientId and items.
If the client does not exist in Fintoro yet, or you do not want to create it in a separate step, send a client object without clientId. The backend will try to match an existing client and create a new one only if nothing matches.
If you send both clientId and a client object, the client object acts as a sparse snapshot override for this specific order.
How defaults work
Most document fields are optional. The backend resolves them in this order:
- explicit payload value,
- client defaults,
- company document settings.
In practice this means for example:
numberandnumericalSeriesIdare resolved from the primary numbering series if you omit them,issueDatedefaults to today,transferTaxLiabilitydefaults tofalse,deliveryMethodId,paymentMethodId,currencyId,languageId,note, andtextAboveItemscan be resolved from client defaults or company document settings.
How client resolution works
Client resolution is strictly deterministic:
- if you send
clientId, the backend loads that client within the token scope, - if you omit
clientId, theclientobject is used for matching or creation, - if you send both
clientIdandclient, theclientobject is used only as a document snapshot override.
Matching is deterministic and uses this order:
- for companies:
vatId, thencountryId + subjectId, thenname + email, thenname + street, - for people:
name + email, thenname + street.
How item hydration works
An item can be created in three ways:
- as a manual item with explicit name, unit, price, and VAT,
- via
priceListItemIdandquantity, - via
priceListItemIdplus sparse overrides for selected fields such as price or name.
priceListItemId is used only for input hydration. The order response returns the final canonical item shape and does not echo this price list reference back as a separate field.
Quotation link
Optional quotationId can be used to link the order to an existing quotation that is not already attached to another order.
If you send Idempotency-Key, the same key with the same payload returns the original response without creating a second order.
Authorizations
Headers
Body
- Option 1
- Option 2
Payload used to create an order. The usual happy path is clientId plus items; the backend can resolve many other values automatically. You must send either clientId or the client object.
Order items. This field is always required. Per-item uuid is not part of the request contract; if you send it, the backend ignores it. warehouseAllocations are not supported for orders.
1 - 100 elementsPayload for a single order line item. Three modes are supported: a manual item, priceListItemId + quantity, or priceListItemId with sparse override fields. quantity is always required. If you omit priceListItemId, you must also send name, unitPrice, and vatRate. unitId is optional; when you omit it for a manual item, the backend defaults to unit 1 (piece / Unit::Piece). If you send priceListItemId, the backend can hydrate the name, unit, unit price, and VAT rate from the price list item, and the payload then acts only as a sparse override.
- Option 1
- Option 2
Delivery method ID from the delivery method reference table. Resolution priority is payload -> client preference -> company document settings.
1
Payment method ID from the payment method reference table. Resolution priority is payload -> client preference -> company document settings.
1
Currency ID from the currency reference table. Resolution priority is payload -> client preference -> company document settings.
1
Language ID from the language reference table. Resolution priority is payload -> client preference -> company document settings.
1
Response
The order was created.
Order.
Delivery method ID from the delivery method reference table.
1
Payment method ID from the payment method reference table.
1
Currency ID from the currency reference table.
1
Language ID from the language reference table.
1

