Cash on delivery means the order is not paid when it ships and may never be paid at all. The customer decides at the doorstep, days later.
Every ecommerce assumption about payment preceding fulfilment is inverted here.
An order ships unpaid and settles when the courier collects cash. Its lifecycle is measured in days with several intermediate states rather than paid or unpaid.
A meaningful share of COD orders are declined at the door. That is a normal outcome needing a state and a stock return, not an error.
Delivery progress arrives as callbacks from the courier. Those have to be reachable and idempotent, since the same update often arrives twice.
Inventory is held for goods that may come back, so availability reflects what is genuinely sellable rather than what has been paid for.
Checkout and account pages always reach the origin, and Vietnam is well served from within Asia.
A store treating shipment as completion overstates revenue and understates stock. Neither is visible until somebody reconciles the courier's remittance against the order list.
The number that matters is not orders placed but cash remitted, and the gap between them is the entire operational challenge.
Payment arriving after delivery rather than before it changes what an order means at every stage.
| Setting | What we do | Why |
|---|---|---|
| Order lifecycle | States covering shipped, delivered, refused and remitted | Cash on delivery means an order can be fulfilled and never paid, so paid-or-unpaid cannot describe where it actually is. |
| Refusal handling | Recorded as an outcome with stock returned | Doorstep refusals are a routine share of COD volume, and treating them as failures leaves inventory committed to goods sitting in a warehouse. |
| Courier callbacks | Reachable and idempotent | Delivery updates arrive as machine requests and frequently arrive twice, so a non-idempotent handler double-counts or double-returns stock. |
| Stock commitment | Reflecting sellable rather than paid goods | Inventory is held against orders that may come back, so availability has to account for goods in transit both ways. |
| Origin region | Asia rather than a distant origin | Checkout and account pages always reach the origin, and those are the requests where distance is felt. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Move the store to an Asia origin — migration is free, order states modelled.