orders · reference
The order lifecycle
Every status an order can be in, which moves are allowed, and which three are final.
An order moves through a fixed set of statuses. Moves that are not listed here are refused — by the dashboard, by the API and by the agent alike — so an order cannot skip a step or go backwards.
The statuses
| Status | Meaning |
|---|---|
DRAFT | Being assembled; not yet a commitment |
PENDING | Waiting on the customer or on you |
CONFIRMED | Agreed, not yet paid |
PAID | Money received |
PROCESSING | Being prepared |
SHIPPED | Handed to the carrier |
DELIVERED | Received by the customer |
COMPLETED | Closed successfully |
RETURNED | Came back |
CANCELED | Called off |
Which moves are allowed
| From | Can move to |
|---|---|
DRAFT | CONFIRMED, CANCELED |
PENDING | CONFIRMED, CANCELED |
CONFIRMED | PAID, CANCELED |
PAID | PROCESSING, SHIPPED, CANCELED |
PROCESSING | SHIPPED, CANCELED |
SHIPPED | DELIVERED |
DELIVERED | COMPLETED, RETURNED |
COMPLETED | — final |
RETURNED | — final |
CANCELED | — final |
Three consequences worth knowing before you plan around this:
A shipped order cannot be canceled. Once it is with the carrier the only forward move is DELIVERED, and a
problem after that is handled as RETURNED. If you cancel, do it before the parcel leaves.
PAID can go straight to SHIPPED. PROCESSING is optional — useful if you pick and pack, skippable if you
do not.
The three final statuses are final. There is no reopening: a returned or canceled order stays that way, and a new attempt is a new order. This is deliberate — an order that can change after it closed makes every report based on it unreliable.
What happens on every change
A status change is never just an update. Each one:
- takes a lock on that order, so two people (or a person and a webhook) cannot change it at the same moment;
- writes an audit entry recording what moved, who moved it and why;
- publishes an event that fulfilment, notifications and your integrations consume.
That is why a status is changed through the order screen, the API or the agent — and why nothing writes it directly. A change that skipped these would move the order while everything downstream carried on believing the old one.
Who can change a status
Anyone with Manage orders — owner, admin and member. See Roles and permissions.
An assistant connected over MCP can move an order too, with a key that carries write access. It is held to the same table above: an invalid move is refused with the list of valid ones.