User Manual
Help Center/User Manual/Sales order state machine

Sales order state machine

Last updated 2026-10-19

Sales order states, transitions, and events: from draft to delivered, including the review flow, partial fulfillment, exceptions, and OMS direct shipping.

Sales order state machine diagram

Event table#

EventFromToTriggerActorSide effects
[submit]draftallocatedDefault flow: submit the orderSales / CSATP check + reserve inventory; on stockout: exception / split / wait per policy
[submit]draftpending_reviewReview flow enabledSales / CSEnters approval queue
[OMS direct ship]confirmedfulfilledShip standalone from OMS, bypassing WMSSales / CSTracking/carrier filled in; shortage lines get shortage_qty + reason; status audit written
[OMS direct ship]allocatedfulfilledShip standalone from OMS, bypassing WMSSales / CSSame as above
[approve]pending_reviewconfirmedApproval grantedApprover—
[reject]pending_reviewdraftApproval rejectedApprover—
[allocate]confirmedallocatedAllocate inventorySystem / SalesInventory locked
[release to WMS]allocatedreleasedHand off to warehouse executionSales / SystemWMS outbound shipment created
Auto exceptionallocatedexceptionNo stock at allocate timeSystemManual: back to draft/confirmed, or cancel
[fulfill]releasedfulfilledWMS outbound report, or OMS direct shipSystemWhole order shipped
[partial_fulfill]releasedpartial_fulfilledShip in batchesSystemPartially shipped; remainder ships later
[fulfill]partial_fulfilledfulfilledShip the remainderSystem—
[deliver]fulfilleddeliveredDelivery confirmedSystem / ManualAuto if tracking exists, otherwise manual
[cancel]draft / pending_review / confirmed / allocatedcancelledCancel the orderSales / CSAllowed any time before fulfillment
[cancel]released / partial_fulfilledcancelledCancel the orderSales / CSPropagates to WMS (direct cancel if not picked; return to stock first if picked)
Two fulfillment legs: the WMS leg (released → fulfilled via WMS outbound report) and the OMS direct leg (confirmed / allocated → fulfilled, standalone shipping that bypasses WMS). Short fulfill does not get its own state — the order stays fulfilled and is watermarked "Short".