Key takeaways
- Dead stock is a store-level fact. A product can sell well across the chain and sit untouched in one store, and a chain-wide total averages the two away.
- Work out days of cover per product and per store: stock on hand divided by average daily sales over the last 90 days. Then sort the stock into dead (no sales), slow (sells, with months or years of cover) and excess (sells well, above target).
- Count the shelf before you mark anything down. Store stock records are often wrong, and a product the system shows in stock that nobody can find stops selling too.
- Choose the action by kind: move stock to stores where it sells, stop reordering slow and excess lines, and return or mark down only what is dead everywhere.
- Run the same rules on the same stores a week or two later. The second list, not the first, shows whether the actions worked.
Ask a retail chain for its dead stock and you usually get one number for the whole network. That is the wrong place to look. The same product can sell every day in eight stores and not at all in the ninth, and a chain-wide report averages the two into a figure that looks healthy. Dead stock is a fact about one product in one store.
The money involved is large. In its 2023 study, IHL Group put the cost of overstocks to retailers worldwide at $562 billion, against $1.2 trillion for out-of-stocks1. A chain can carry both in the same product: too much of it in one store and too little in the next.
The four checks below find dead stock store by store, and each comes with its arithmetic. The examples come from Berezka Retail, a chain of 20 Eastern European delis in Romania whose stock marql reads.
Dead, slow and excess are three different problems
Each of the three calls for a different action, so it pays to keep the words apart:
- Dead stock is on hand and has not sold for long enough that the silence is conclusive. Waiting will not fix it.
- Slow stock sells, but so rarely that what is on hand would last for many months or years.
- Excess stock is a product that sells well, with more of it in the store than the target level.
A markdown clears dead stock and gives away margin on excess stock that would have sold anyway. Pausing reorders fixes excess stock and does nothing for dead stock. So sort first, then act.
Check 1: days of cover, for every product in every store
Days of cover is stock on hand divided by average daily sales. A 90-day sales window works for most lines: long enough to smooth out a slow week, short enough to reflect what sells now.
Calculate it per product and per store, never on the chain total. Here is one product in three stores:
Across the three stores120 units · 2 a day · 60 days of cover
Store A40 unitsnone sold in 90 days
Dead stock
Store B6 units1.5 a day
Empty in 4 days
Store C74 units1 every other day
Slow: 148 days of cover
So one healthy chain figure hides three different problems. A and B together are usually the cheapest fix in store stock: moving units from a store where a product does not sell to one where it is about to run out recovers sales without a new order. Operations research calls these moves lateral transshipments: stock moved between locations at the same level of a supply chain, either on a schedule to rebalance it or when one location cannot meet demand from its own shelves2.
At Berezka, it was the first change the team noticed. Arseniy Burlakov, Director of Berezka Romania:
The first thing that we saw that was an improvement using marql was the rotation between stores, that really improved. We knew exactly where to send the products from one store to another.
Mixed sweets by the kilo
31 kg
Lavash, packs of 10
42 packs
Black sturgeon caviar, 500 g
1 jar
Check 2: count the shelf before you trust the record
Everything above assumes the stock record is right, and often it isn't. DeHoratius and Raman examined nearly 370,000 inventory records from 37 stores of one retailer and found 65% of them inaccurate3.
The error matters most for the products a dead-stock report flags. When units are stolen, damaged or misplaced, the record still shows them on hand. Shoppers cannot buy what is not on the shelf, so sales stop. And because the system believes the store is stocked, it never reorders. Kang and Gershwin, who modelled this, call it the freezing of replenishment. In one of their simulations, an unrecorded loss of 1 item for every 100 that shoppers wanted ended with 17% of all demand lost to empty shelves4.
Units in the store
Day 1Day 56
So stock on record with no sales has two explanations: nobody wants the product, or nobody can find it. The first is dead stock. The second is a stock-out the report cannot see, and a markdown changes nothing. Before any markdown, someone in the store checks the shelf and the back room. If the counts come up short across many products, that is a different job: investigating an inventory shortage.
Check 3: rule out new, seasonal and repacked stock
A product that arrived ten days ago and has not sold yet is new, not dead, so check when a line first came in before acting on it. For everything older, the window has to be long enough to be conclusive. This is the rule marql runs for every product in every store:
Stock on hand in the store
No sale in the last 60 days
Not poured into a bin in the last 60 days
Fewer than 5 sold in 90 days, or 60 days or more on the shelf
Dead stock
Fails a step: still selling, or slow
A product that sold a few units earlier in the 90 days and then stopped counts as slow until it has been on the shelf for 60 days.
Seasonal lines need the same care. Winter stock in September has not failed; compare it with the same weeks last year before acting on it.
Repacked goods trip up any rule based on sales. A shop that pours a case of sweets into a bin and sells by weight records no sales against the case for its whole life, though it may be the busiest stock in the store. Judge it by movement instead: a case poured in the last 60 days is moving.
Check 4: put a price on the stock, and on keeping it
Value each dead or slow position at cost: units on hand times what the chain paid per unit. That is frozen capital: money already spent on goods that are not turning into sales. It is the right figure for ranking the list, but it is not what the problem costs.
The cost of keeping stock is the holding cost. Inventory models traditionally express it as a yearly percentage of the stock's value, on the view that the capital tied up is the largest part of it5. Storage, handling, insurance, shrink and the risk that the product ages make up the rest. Work out your own rate: start from what the chain pays on its credit line, or expects to earn on spare cash, then add those costs on top. At 20% a year:
€10,000of stock at cost
€38a week to keep it
That weekly figure is what an action has to beat. What the chain paid is spent either way, so it should not set the floor for a markdown. The choice is between what the stock can bring in now and what it costs to keep waiting, and a product with no sales in 90 days rarely earns its keep by staying put.
Match the action to the kind of stock
Once the list is sorted and counted, the action mostly follows from the kind of stock:
- Dead in one store, selling in others: move it. Leave about a week of sales at the sending store, and move only where the receiving store's margin on the units covers the cost of the trip.
- Slow or excess, still selling: stop reordering until cover is back at target. Don't mark down a product that sells.
- Dead everywhere: ask the supplier for a return or a swap first, then try a markdown or a bundle with a product that sells, and delist it if none of those works.
Research on clearance pricing for retail chains adds a caution. How fast stock clears depends on price and season, and also on how much of the assortment is left for shoppers to choose from6. That favours gathering leftovers into fewer stores, where they make a fuller display, before cutting the price.
Berezka's first scan, on 23 September 2026, listed 792 products with more than 90 days of stock. Two of them tied up almost the same capital and needed opposite answers:
Premium vodka, 0.7 l
XAOMA Ultrapremium
Cold-smoked halibut
Halibut afumat la rece
The reading, 23 September
At a bottle a month, the vodka on hand would last more than 30 years. Holding off on reorders fits the halibut and would leave the vodka exactly where it is.
Read the same list again
The first list shows where the money is; only a second reading shows whether anything moved. Run the same rules on the same stores one or two weeks later. At Berezka the second reading, on 1 October, listed 211 fewer products, and the capital in the list was 8% lower.
23 September7921 October581
Note why each product left the list: it sold, it moved, it went back to the supplier, or a count corrected the record. The next decision depends on which.
How marql runs these checks
marql reads sales and stock from a chain's POS and ERP and applies the rules above to every product in every store: days of cover over 90 days, the 60-day dead-stock test, which counts a recent pour of repacked goods as movement, and capital at cost. Warehouses are left out of the scan, because their stock serves the whole network.
It proposes store-to-store transfers where one store holds well above its maximum and another sells the product and is at or below its reorder point, leaves the sending store at least a week of sales, and skips any move whose margin would not cover its cost. Every order and transfer is a draft a person accepts or dismisses; marql writes nothing into the ERP. The Impact Ledger then measures what each accepted action did.
The excess stock playbook walks through one case end to end, and this comparison sets out when a full replenishment suite is the better fit.
See it on your own data
Connect your POS and ERP, and marql builds this list for every store in your chain, with days of cover and capital at cost on each line.
Count the shelf before you trust the list, and sort the list before you act on it.
Sources
- Wilson, M. (2023-07-31). Study: Global retail losses due to inventory 'distortion' hit $1.77 trillion. Chain Store Age, reporting IHL Group research. chainstoreage.com
- Paterson, C., Kiesmüller, G., Teunter, R. and Glazebrook, K. (2011). Inventory models with lateral transshipments: A review. European Journal of Operational Research, 210(2), 125-136. doi:10.1016/j.ejor.2010.05.048
- DeHoratius, N. and Raman, A. (2008). Inventory Record Inaccuracy: An Empirical Analysis. Management Science, 54(4), 627-641. doi:10.1287/mnsc.1070.0789
- Kang, Y. and Gershwin, S. B. (2005). Information inaccuracy in inventory systems: stock loss and stockout. IIE Transactions, 37(9), 843-859, doi:10.1080/07408170590969861. The simulation figures are quoted from the authors' MIT working paper of 23 August 2004. PDF
- Berling, P. (2008). Holding cost determination: An activity-based cost approach. International Journal of Production Economics, 112(2), 829-840. doi:10.1016/j.ijpe.2005.10.010
- Smith, S. A. and Achabal, D. D. (1998). Clearance Pricing and Inventory Policies for Retail Chains. Management Science, 44(3), 285-300. doi:10.1287/mnsc.44.3.285
Written by
Maxim T.
CMO, marql