Skip to main content
POST
Create Order

Authorizations

Authorization
string
header
required

Bearer token authentication

Query Parameters

cart_token
string
required

Token of the cart to create order from

Body

application/json
expected_total
string

The cart total the client showed the operator, as a decimal string in the cart currency's major unit ("141.74"). Requires expected_currency. When the cart's total differs at the charge boundary the response is 409 with meta.code = cart_total_changed and nothing is charged.

Not nullable, unlike its siblings here: half a pair is a 422, so an explicit null for either field has no meaning. Omit both to leave the total unpinned. Matches checkout-v2026-04 and public-v2025-06.

Pattern: ^\d{1,12}(\.\d{1,5})?$
Example:

"141.74"

expected_currency
string

ISO 4217 code of the currency shown. Requires expected_total. Not nullable, for the reason given there.

Example:

"USD"

accepted_agreement_ids
integer[] | null

Ids of the agreements the shopper accepted, from the cart's agreements array. Required in practice whenever the cart has a required agreement: checkout refuses with 422 and errors.agreements when any agreement the cart marks required is missing from this list. The one exception is a cart whose payment is already authorized or captured (for example an express wallet or an asynchronous payment completion), which is never refused, so the order is not left without its payment. Omit it only for a cart with no required agreements.

Example:
accepted_agreement_versions
object[]

The version of each accepted agreement's text the operator's client showed, as the agreement's id with the content_digest from the cart's agreements array. Optional. When present, the order is refused with 422 and errors.agreements if a named version is no longer the agreement's live text.

Example:
order
object | null

Response

object | null

Order created

order
object | null
meta
object | null