A hotel room is booked long before anyone sleeps in it.
A booking makes the room unavailable to the next caller. The room is still there, still clean, still countable. Nothing has been used until a guest walks in.
Stock works the same way. An order allocates units — reserves them, in everyday English. Only fulfilment consumes them. The app says Allocated everywhere it shows you this number, so that is the word used from here on.
This page covers:
- What each step does to your numbers
- Allocated is not gone
- Why not deduct earlier
- Where you can see it happen
What each step does to your numbers
Only the last row changes what you own.
| Event | On hand | Allocated | Available to sell |
|---|---|---|---|
| Order placed | Unchanged | Goes up | Goes down |
| Order picked | Unchanged | Unchanged | Unchanged |
| Order packed | Unchanged | Unchanged | Unchanged |
| Order fulfilled | Goes down | Goes down | Unchanged |
| Order cancelled | Unchanged | Goes down | Goes up |
Picking and packing move boxes around a room. They are warehouse states, not inventory events, and the system treats them that way on purpose.
Allocated is not gone
Three numbers describe a product, and confusing them causes most arguments.
- On hand is what is physically in the building. If you counted every shelf, this is the number you would get.
- Allocated is the part of on hand that is already promised to an order.
- Available is on hand minus allocated. This is the number a storefront should be offering.
So 100 on hand with 30 allocated means 70 available. Your shelves still hold 100 units. A count that finds 100 has found the right answer, and the 30 are not missing.
Cancel the order and those 30 return to available instantly. Nothing was deducted, so nothing needs putting back.
Why not deduct earlier
Deducting at order time creates stock that was never really there.
Orders get cancelled, payments fail, duplicates are placed, and carts are abandoned after a reservation is made. Every one of those has to be reversed. Systems that deduct early accumulate reversals, and a reversal that fails silently leaves a phantom number that nobody can trace back to a real event.
Deducting at fulfilment avoids the entire class of problem. One physical thing happened — goods left the building — and one entry records it. That entry is never edited or deleted, so any number can be traced to the event that produced it.
The trade-off is honest and worth naming. Between the order and the shipment, your on hand figure is higher than what you can sell. That gap is exactly the allocated number, and it is visible rather than hidden.
Where you can see it happen
Open any product and look at the movement history.
Every line is one event with a date, a quantity, a location and a reason. A fulfilment shows as a decrease. A delivery shows as an increase. A transfer shows as one decrease and one increase, at two different locations, on the same day.
If a number looks wrong, the history is the place to start. The question is never "what is the number", it is "which event last changed it".
Explore
Recording a delivery. The mirror image of this page: the one routine way stock goes up. Learn more →
A product shows 0 online. Storefront numbers are copies of these figures, pushed out after the fact. Learn more →