# Order lifecycle

The statuses a Kustom order moves through from checkout to settlement — incomplete, complete, authorized, captured, cancelled, expired, closed — where a refund fits, and who moves it at each step.

Paid is not finished. When a customer completes checkout Kustom *authorizes* the amount — it
reserves the money without moving it — and nothing reaches your account until you capture.
Every Kustom product touches one stretch of this line, and knowing which stretch is what
makes the tabs of these docs fit together.

## The line

The first two statuses belong to the **Checkout API** and describe the checkout session. The
rest belong to the **Order Management API** and describe the money. The order id is the same
object in both, and the handover happens the moment the payment authorizes.

- `checkout_incomplete` _(Checkout API)_ — **You.** POST the cart and render the snippet. The customer is in the checkout, and you can still change the order by POSTing any subset of its fields. See [Create an order](/checkout/integrate/create-order/).
- `checkout_complete` — **The customer.** Presses Pay order. Kustom redirects their browser to your confirmation URL and, separately, calls your push URL server-to-server. The order is read-only from here. See [Confirmation & push](/checkout/integrate/confirmation-and-push/).
- `AUTHORIZED` _(Order Management API)_ — **Kustom.** The payment method authorizes: the money is reserved, not moved, and none of it has reached you. Acknowledge the order once your own record of it exists.
  - `CANCELLED` — **You.** Cancel what you cannot fulfill. The reservation is released and nothing is charged.
  - `EXPIRED` — **Time.** An authorization lapses after about 28 days with no capture. See [Extend it](/order-management/extend-authorization/).
- `PART_CAPTURED → CAPTURED` — **You.** Capture as you ship, in one call or several. This is where the money moves. Refunding does not change the status: it stays CAPTURED and the refunded amount grows. See [Capture an order](/order-management/capture/).
- `CLOSED` — **Kustom.** Nothing is left to capture or refund, and Kustom closes the order.

## The one thing to get right

Of the two ways you hear that an order reached `checkout_complete`, only one is reliable. The
browser redirect to your confirmation page is a convenience, and a customer who pays and closes
the tab never triggers it. The server-to-server push always fires. Create your own order record
on the push, and treat the redirect as decoration.

## Related

- [Order Management](/order-management/) — capture, refund, cancel, amend, in full
- [Confirmation & push](/checkout/integrate/confirmation-and-push/) — the moment the order becomes yours
- [What an order is](/basics/what-an-order-is/) — the object itself
