PREPARING or DELIVERED). Fire spark does not accept a fixed kitchen enum.
Requires an access token with the
orders:write scope. See
Token to obtain a token.How this fits the order flow
- After checkout, Fire spark sends a webhook when the order reaches a status you subscribed to.
- Your POS creates the ticket when
order.status.changedarrives withdata.statusinjecting(or whichever status you use for handoff). - Each later kitchen event should PATCH the next fulfillment status. Fire spark updates the order and may send another webhook.
- The call is asynchronous. It claims the advance while the fulfillment is
WAITINGand returns without waiting for the next node, so you can call it from the webhook handler. The order in the response can still be the snapshot from before this advance. A409means the row was notWAITING.
When to call this endpoint
The labels below are examples. Use the fulfillment statuses configured for your merchant.An order can be in more than one fulfillment status at once (for example
kitchen and delivery). Send the next status for the work you are advancing.
Other in-progress statuses stay until you update them.
Path parameters
Request body
Mark the order paid
While the order is inPAYING, send fulfillment_status PAID when your POS collected the payment. Fire spark marks the tenders of that paying step as paid (one capture per tender, as if each one were marked collected). The order advances to PAID only once every tender of the step is settled. A reserved reward counts as settled; Fire spark confirms reward redemptions.
- Without
tenders: every tender the paying step is still waiting for is marked paid, and the order advances. This is the all-at-once path. - With
tenders, and the step has one tender: that tender is marked paid whencompletedistrue, and the order advances. Same behavior as before. - With
tenders, and the step has more than one tender: only items withcompleted: truechange. Tenders you leave out stay as they are. The order does not advance until every tender of the step is inPAID, counting the tenders in this call. Repeat the same call for each tender. The last one advances the order. Each earlier call returns200, not an error.
IDLE or PENDING tenders that charge money can be marked. A tender that is already PAID is not captured again. An unknown id, or an id that is not on this order, returns 404 TENDER_NOT_FOUND.
While tenders are still pending, the response includes the order in data plus:
pendingTenders is a count. One tender left uses “1 tender still pending”. When the call that finishes the set advances the order, the same fields come back with pendingTenders 0, transitioned true, and message Tender updated. Order transitioned to PAID.
A tender-only update does not send an order webhook or a realtime order event. Those fire only after the order actually advances, once that step has finished its own work.
Response
Returns the current order indata. The advance is asynchronous, so this body can still be the snapshot from before the status you just sent.
Pair this endpoint with order webhooks:
the webhook delivers the order when it reaches a subscribed status; this
endpoint is how your POS reports the rest of the kitchen path. Do not send a
terminal status (
FULFILLED, VOIDED, REVERSED, REFUNDED) — those
nodes are entered automatically. After the last kitchen or delivery status
(for example DELIVERED), Fire spark auto-enters FULFILLED. If an awaited
callback exhausts retries, it auto-enters VOIDED (unpaid) or REVERSED
(paid). Cancel and refund from the dashboard still reach those terminals.