How to control expiration and obsolete stock
Expirations are not bad luck. A written-off batch is the end of a chain of earlier decisions: over-ordered, placed in the wrong location, and flagged only when discounting is the last option left.
Why it happens
Most systems show expiry dates, not expiry risk. The question is not “when does it expire” but “will it sell out before then at the current pace, in this location”.
Products past supplier payment terms sit as frozen cash with a countdown attached. The older the stock, the fewer options remain.
When sales of an item stop completely, days pass before anyone asks whether it is misplaced, blocked, damaged — or quietly expiring on a back shelf.
What good control looks like
Connect expiry dates with sales speed and location to see risk months ahead, not weeks
Act in the cheap order: rotate and redistribute to faster locations → promote → discount → return → write off last
Watch no-consumption signals: stock with zero sales is either invisible to customers or already a risk
Fix the rules that over-bought, so the same batch problem does not repeat next season
Horizon flags expiry risk while redistribution still beats the bin, routes at-risk stock to locations and channels where it sells, and its Outlet module calculates how much to reduce the price to sell out by a chosen date with the least margin given away.
Related: Glossary of inventory-flow terms · Horizon vs the alternatives · Value Calculator
Common questions
How early should expiry risk be visible?
What should happen first when a batch is at risk?
See this on your own data.
The free demo begins with a real simulation on your history — where sales, cash and time are leaking, and what the system would have done instead.