Order states
An order's status drives whether you can capture payment, fulfill items, or refund. Each transition emits an outbound webhook.
State machine
stateDiagram-v2 [*] --> draft: cart.checkout draft --> pending: checkout-session created pending --> paid: payment.captured pending --> cancelled: buyer abandons or merchant cancels paid --> fulfilled: all fulfillments delivered paid --> partially_refunded: payment.refunded (partial) paid --> refunded: payment.refunded (full) fulfilled --> [*] refunded --> [*] partially_refunded --> [*] cancelled --> [*]
States
draft— created viaPOST /carts/{id}/checkout(or directly via the orders API). No payment attached.pending— a checkout session has been minted against the order. Payment is in flight (PaymentEmbed mounted on the buyer's storefront).paid— payment was captured. Fulfillments can now be created.fulfilled— every fulfillment row attached to this order reached its terminal state (shipped/delivered for shipment, granted for access, delivered for digital, etc.).partially_refunded/refunded— a refund event was processed against the linked payment. Partial refunds remain mutable for further refunds up to the original captured amount.cancelled— terminal. Reached frompendingbefore payment.
Outbound events
order.createdon enteringdraft.order.updatedon every status transition.order.cancelledon enteringcancelled.order.fulfilledon enteringfulfilled.order.refundedon enteringrefunded/partially_refunded.