What is dead stock?
Dead stock is inventory you hold but no longer sell: products with units on hand whose last sale is older than your dead-stock window — 90 days by default, configurable per organization — including products that have never sold at all. The dead-stock widget lists these products with the cash each one ties up, worst first.
Formula
dead stock = quantity on hand > 0
AND (never sold, OR last sale older than the window)
Worked example
With a 90-day window, a SKU with 140 units on hand and a last sale 122 days ago is dead; at €11 confirmed unit cost it ties up €1,540. A seasonal store that sets its window to 180 days would not flag it. The window is a business judgment — the default suits steady assortments, and slow-cycle catalogs should widen it rather than treat every off-season SKU as dead.
How Saldo Metrics computes it
v_inventory_position takes the newest inventory snapshot per product and store,
computes each product's last sale date and units sold inside the window, and flags
is_dead_stock when stock is on hand and no sale falls inside the window. The
window comes from the org's setting (default 90 days), so the flag is
caller-dependent by design and never cached across orgs. Valuation uses the
product's best confirmed cost record; a product with no confirmed cost has
unknown cash tied up, not zero — the row is flagged missing_cost and the
widgets report how many SKUs that gap covers instead of letting the total quietly
shrink. Sales recency counts orders in any status here; a cancelled order still
proves the product moves.
Why it matters
Dead stock is a double loss: the capital is locked, and the shelf or warehouse space it occupies has carrying cost. It also decays — yesterday's dead stock rarely revives on its own. The list ordered by cash tied up is a markdown and clearance worklist: the top handful of rows usually hold most of the money.
Common mistakes
- Using one window for a mixed catalog. Evergreen and seasonal assortments need different windows; the org setting is a single dial, so read seasonal SKUs with judgment.
- Discounting dead stock below recovery without checking margin history. Some dead SKUs are better written off than sold at a loss that also costs shipping.
- Ignoring the uncosted count. A dead-stock total that excludes 40 uncosted SKUs is a floor, not the number.
Where you see this in the app
The Dead Stock dashboard widget (per-product list) and the dead-stock-value alert metric.
- Formula
- on-hand stock with no sale inside the org's dead-stock window (default 90 days)
- How Saldo Metrics computes it
- canonical.v_inventory_position
Last reviewed 2026-08-29