Skip to main content
Validates the current cart, locks the payment intent, copies the fulfillment workflow, closes the order, and starts the durable place-order walker. The walker enters the first state and waits for a later status update.
Requires a Storefront API access token from Token exchange. A second place of the same order is rejected.
In @fire-spark/storefront, call order.placeOrder(). With no intent_id, the SDK saves the current tenders first (from setTenders / applyRedeem, or from payment as one real tender) and then places with that draft’s intent_id. If the last cart sync was rejected, placeOrder throws OrderSyncRejectedError (with the API code) and places nothing. With no real tender and redeems that do not cover the total, it throws OrderPaymentRequiredError (code: PAYMENT_REQUIRED) without calling the API.

Path parameters

Request body

Send intent_id or payment.type. There is no cash default: a body without either ({}) is rejected with 422 PAYMENT_REQUIRED, unless the redeems cover the whole total. Then place builds only REDEMPTION tenders. A saved DRAFT or LOCKED intent is abandoned when you place without intent_id. The new intent is LOCKED.
To lock a draft you already saved:

Response