Stock drifts for the same reasons money does, and most systems make the same mistake with it: they store a number and update it in place. Then the count on the screen and the count on the shelf diverge, and there is no way to work out when it started.
Multi-site inventory with movement tracking. Pick, pack and ship fulfilment workflows. Stock allocation and reservation. Distributor and supplier catalogue ingestion. Bonded and duty-suspended stock handling. Order management across channels. REST APIs for integration with warehouse and third-party systems.
The correct model is the same one that works for money. A stock level is not a stored number, it is the sum of movements: received, picked, shipped, returned, adjusted, written off. Each movement is a record that is never edited.
That gives you the thing a stored count cannot: the ability to ask what the level was on a given date and why it changed. When a count disagrees with the shelf, you get a list of movements to examine rather than a mystery.
It also makes the awkward cases ordinary. Reservations are movements into a reserved state. Damages are write-off movements. Corrections after a physical count are adjustment movements with a reason, not a silent overwrite.
Availability is not stock level. Available means on hand, minus reserved, minus allocated to picked-but-unshipped orders, plus inbound within a window you trust. Selling on raw stock level is how you oversell.
Concurrency decides everything. Two orders for the last unit arriving in the same second is not an edge case at any real volume. Reservation has to be atomic, and the failure has to be handled in the checkout rather than in the warehouse.
Duty and bond status travel with the stock. For regulated or excisable goods, the same physical item has different statuses and different obligations depending on where it sits and where it is going.
Integration is the product. Warehouse systems, couriers, marketplaces and supplier feeds all speak differently and fail differently. The API surface and its error handling matter more than the internal model.
If your stock counts drift, your availability oversells, or you are integrating a warehouse system, we have built inventory that reconciles.