On-hand by location
Quantity across warehouses, stores, third-party logistics, and consignment, with committed and inbound tracked separately from available.
Platform · operations
Inventory is two systems pretending to be one: an operational count of what is on a shelf, and a financial balance in the ledger. They are maintained by different people for different purposes, and the gap between them is discovered at year end when it is expensive.
What it does
Quantity across warehouses, stores, third-party logistics, and consignment, with committed and inbound tracked separately from available.
FIFO, weighted average, or standard with variance, maintained as layers rather than as a single average that quietly absorbs every error.
The inventory subledger reconciles to the control account continuously, so a divergence is caught the week it happens rather than at the annual count.
Receipts, shipments, transfers, adjustments, and write-offs each carry a reason code, because an unexplained adjustment is the thing an auditor will ask about.
Stock committed across Shopify, Amazon, wholesale, and direct orders from one pool, so the same unit is not promised twice.
Days on hand by SKU and location with a reserve calculation that follows a stated policy rather than a year-end judgement call.
Operations cares whether there is stock to ship. Finance cares what it is worth and whether the balance sheet is right. Both are looking at the same physical item and both maintain their own version, because in most stacks the warehouse system and the ledger are connected by a monthly journal rather than by a shared record.
That journal is where the variance hides. It is usually a single number, posted to a catch-all account, that nobody decomposes because decomposing it means reconstructing a month of movements.
A weighted average implemented as a running number is convenient and lossy: it absorbs receipt errors, mispriced returns, and duplicate postings into a cost that then looks plausible. Nobody can trace what moved it.
Maintaining cost as layers — this receipt, at this cost, in this quantity, consumed in this order — means any unit’s cost decomposes into the receipts that produced it. That is more storage and considerably more explanatory power at year end.
Selling the same unit twice happens when each channel reads on-hand rather than available. Committed quantity has to be a first-class number that every channel respects, and it has to decrement on order rather than on shipment.
Where a channel cannot be made to respect it — some marketplace integrations genuinely cannot — the honest answer is a buffer, stated as a buffer, rather than an oversell that surprises somebody.
Obsolescence reserves computed by a documented policy — ageing bands, movement rates, category rules — are defensible and consistent. Reserves decided in December by whoever is closing the year are neither, and they make period comparisons meaningless.
Limits
Bin logic, pick paths, wave planning, and barcode workflows belong in a WMS. We hold quantity, value, commitment, and the accounting.
Multi-level bills of material, routings, work orders, and shop-floor capacity are a different product category and we do not pretend otherwise.
Cycle counts and physical inventory remain physical work. We make the variance explainable, not unnecessary.
Questions
Locations, channels, and costing method is enough for us to show you where the gap opens.