Walk into your storeroom and point at the shelf nobody touches. Four hundred units of the colourway that seemed obvious in January, ordered because the MOQ was 500 and 100 felt silly. That is dead stock: inventory that has stopped selling and is now just an expensive object taking up rent. Most founders know how to identify dead stock in the abstract — “it hasn’t moved in a while” — and then never put a number on it, because the number is uncomfortable. This guide gives you a threshold you can defend, the query to run on a Shopify export, the true annual cost, six ways out with the honest trade-off attached to each, and the upstream fix that stops the next pile from being born.
Key takeaways
- Dead stock is not “90 days without a sale.” The threshold is roughly twice that product’s own replenishment cycle.
- Identify it at variant level from two Shopify exports — products and 12 months of order line items — then sort by capital at risk, not by days idle.
- The real cost is carrying cost (20-25% of value a year) plus the gross profit that cash would have earned elsewhere.
- A ₹4 lakh pile left alone for a year commonly costs about ₹4 lakh — roughly what it cost to make.
- Every route out has a price. Discounting a hero SKU teaches your best customers to wait for the next sale.
- Dead stock is a forecasting failure that happened at the purchase order three to six months earlier. That is where the fix lives.
What actually counts as dead stock
The industry default — no sales in 90 days — is a habit, not a definition. It is far too patient for a fast-fashion drop and far too twitchy for a heavy staple that customers buy once a year. Ninety days flags a slow-burning core product as dead while letting a failed seasonal launch look healthy for another quarter.
A more useful definition has two parts. A SKU is dead when (a) you still have units on hand and (b) it has gone longer without a sale than its own replenishment cycle can possibly justify. That second half is the bit worth calculating.
The review period is how often you look at that SKU and decide whether to reorder — weekly for bestsellers, quarterly for the tail. Doubling the cycle is deliberately forgiving: the product has had two full chances to be reordered and you would not have reordered it either time. That is dead, not slow.
| Product type | Lead time | Review period | Cycle | Dead at |
|---|---|---|---|---|
| Printed tee, seasonal drop | 30 days | 15 days | 45 days | 90 days |
| Handmade jewellery, small batches | 21 days | 14 days | 35 days | 70 days |
| Core staple, continuously restocked | 90 days | 30 days | 120 days | 240 days |
| Imported skincare actives | 60 days | 30 days | 90 days | 180 days |
Two filters keep the list honest. Add a value floor — ignore anything where units on hand × unit cost is under, say, ₹5,000, or you will drown in dead swatches and sample sizes. And separate the three species people lump together: slow-moving stock still sells, just lazily; dead stock has stopped; obsolete stock cannot practically be sold at all (expired, superseded packaging). Only the third has no route back to cash.
How to identify dead stock in a Shopify export
You do not need software for the first pass. You need two CSVs and twenty minutes.
Step 1 — pull the two exports
In Shopify admin: Products → Export → All products, plain CSV. That gives you handle, SKU, variant inventory quantity and — if you have filled it in — variant cost. Then Orders → Export → line items by date range for the last 12 months, which gives you created-at date, line item SKU and quantity.
Step 2 — reduce the order file to one row per SKU
Pivot the orders export on Lineitem sku with two values: MAX of the created-at date (the last time anyone bought it) and SUM of quantity for the last 90 days. Call that sheet Sold.
Step 3 — three formulas in the product sheet
Keep your threshold N in cell N1 so you can change it per category without rewriting formulas. The 999 is doing real work: a SKU that has never sold returns no match, and you want it at the top of the list rather than silently skipped.
If you run a warehouse or a database rather than a spreadsheet, the same logic in SQL:
Step 4 — read it correctly
Three traps catch people on the first run. Run it at variant level, never product level. A shirt that sells fine in M and L looks alive in aggregate while ₹90,000 of XS and XXL sits dead underneath it — product-level reporting is the single most common reason dead stock hides in plain sight.
Exclude stockout days before you judge anything. A SKU that was unavailable for sixty of the last ninety days has not been rejected by customers; it has been hidden from them. Marking it dead is how brands kill products that were working. This is why Honey Shelf measures velocity from in-stock days only — the same correction that keeps your reorder points honest keeps your dead-stock list honest.
Sort by capital at risk, not by days idle. The oldest SKU on your list is usually a ₹3,000 rounding error. The expensive one is often only 70 days idle. You are hunting cash, not age — the same instinct behind a healthy inventory turnover ratio. Once you want this list refreshed weekly rather than rebuilt by hand, reports with XLSX export is where it lives.
What dead stock really costs
Founders usually count one layer of the cost. There are three.
1. Locked working capital. The cash you paid your manufacturer is sitting in folded cotton. It is not gone, but it is not available either — and for a growing brand, availability is the whole game.
2. Carrying cost. Storage, insurance, handling, shrinkage, damage and obsolescence typically run 20-25% of inventory value per year. This is money leaving your account for the privilege of owning something nobody wants.
3. Opportunity cost. The largest number and the one nobody writes down: the gross profit that same cash would have earned in a product that actually turns. This is what makes “let’s hold it, maybe it picks up next season” such an expensive sentence.
Worked example: costing a ₹4 lakh pile for one year
An apparel brand has 1,000 units of a printed shirt. Landed cost ₹400, retail ₹1,200. It sold 18 units in the last six months and nothing in the last 100 days. The founder’s instinct is to wait for next summer.
Read the last line again. Doing nothing for twelve months costs roughly what the pile cost to manufacture — and you still own the pile, now a season older and worth less. If your cash turns slower than 2× a year, scale the opportunity line down; even at 1× the total lands near ₹2.5 lakh. Run it with your own numbers. The conclusion rarely changes.
A second clock is running too. Recovery value decays as the season passes: the shirt that clears at 40% off in month three needs 65% off in month nine and a liquidator by month fifteen. Every month you hesitate, the cost side rises and the recovery side falls. Speed is worth more than a good price.
Six ways out, and what each one costs you
| Route | Typical recovery per unit (₹400 cost) | Speed | What it really costs you |
|---|---|---|---|
| Discount ladder (20% → 40% → 60%) | ₹480-960 | 4-10 weeks | Margin, and a lesson your customers remember |
| Bundle with a bestseller | ₹250-450 effective | 2-6 weeks | Cannibalises margin on a product that was fine |
| Marketplace listing | ₹300-600 after commission | 3-8 weeks | Fees, returns, and your price integrity on Google |
| Influencer / PR gifting | ₹0 cash, content in return | 1-3 weeks | Full write-off of cost; only works at small volume |
| B2B or liquidator bulk sale | ₹100-200 | 1-2 weeks | 25-50% of cost, and goods may resurface cheaply |
| Donation / write-off | ₹0 | Days | No cash back; buys space, closure and a clean book |
The discount ladder recovers the most cash per unit, so start there — but only on products your best customers are not watching. Marking down your hero SKU is the most expensive thing on this table and it never appears in the P&L as a cost. Do it twice and you have taught your list a rule: never buy at launch, the price always comes down. Full-price sell-through in the first two weeks of every future drop pays for that lesson. Clear hero-SKU overstock through a bundle, a private segment email, or a channel your core audience does not browse.
Bundling works because the customer is already converting; you are adding, not persuading. The trap is giving away margin on a product that would have sold at full price anyway. Cap it: bundle-only offers, a fixed number of units, and a hard end date.
Marketplaces move volume fast, and that is the point. But commissions and return rates are materially higher than your own store, so model the net, not the sticker — and accept that a ₹499 marketplace listing is now the price a shopper finds when they search your brand.
Gifting recovers no cash, which is exactly why founders underrate it. If the units are already a write-off, converting them into content, reviews and reach beats a liquidator’s cheque. It scales to a few hundred units, not a few thousand.
Liquidation is the honest option for large volumes and turned seasons: a fraction of cost, one payment, a fortnight. Agree in writing where the goods may be resold, or your product reappears at a third of retail in a channel you cannot control.
Donation or write-off returns no money but buys back the shelf, the ops attention and the closure. In India, writing off inventory generally means dealing with the input tax credit already claimed on those goods — confirm the current treatment with your CA before you book it.
A workable sequence: give routes one to four your first 60 days, then move whatever is left to five or six without a second debate. Clearance that drags for six months is just dead stock with a discount code attached.
The prevention half: dead stock is made at the PO
Here is the part that actually saves money. The pile did not die last month. It was created on the day you approved a purchase order three to six months earlier — dead stock is a forecasting failure with a long fuse. Clearing it is damage control; the fix lives upstream.
Three habits produce most of it:
- Rounding up to the MOQ. You needed 150, the minimum was 500, so you took 500 and told yourself it would sell eventually. Roughly 350 units were dead on arrival. Splitting a minimum into a test run plus a committed repeat is usually negotiable — see how to negotiate MOQ with manufacturers.
- Ordering the range at equal depth. Eight colourways, 200 each, because it looks like a collection. Demand is never uniform. Depth should follow expected rank, which is what SKU rationalization forces you to confront.
- Forecasting off the launch spike. Week one is friends, list and novelty. Extrapolating it into a quarter is the most reliable way to manufacture a year of dead stock. Use methods built for small, noisy datasets — our guide to demand forecasting methods covers the ones that survive a 40-SKU catalogue.
Then add one checkpoint. Thirty days after a product lands, measure its sell-through rate against what you expected. A product tracking at half its plan at day 30 is not going to recover at day 120; it is going to become the shelf you point at. Acting then — a bundle, a photoshoot, a price test, a paused reorder — costs a fraction of acting at day 200, because the product is still current and still worth full price to somebody.
The aging buckets, and what each one triggers
A dead-stock list is only useful if each row has an owner and a next action. Bucket by days since last sale and attach a standing response, so nobody has to relitigate the decision every month.
| Days with no sale | What it means | Action it triggers |
|---|---|---|
| 0-30 | Normal lull for most catalogues | Nothing. Keep it in the weekly report and move on. |
| 31-60 | Early warning | Diagnose before you discount: check photos, page depth, a missing core size, a broken variant. Pull it from the next reorder draft. Test one email segment. |
| 61-90 | It is not selling | Freeze reorders. Start a clearance route — bundle, marketplace or gifting — and write an exit plan with a named owner and a date. |
| 90+ | Dead | Execute clearance to completion. Decide keep-or-cut for next season. Deduct the trapped cash from your next PO budget so the mistake is visible when you place the next order. |
Scale the buckets to your own cycle: if your threshold is 180 days rather than 90, double every row. And be strict about the last column. Dead stock accumulates not because founders cannot see it, but because seeing it triggers no obligation. Ninety days of no sales should remove a SKU from the reorder draft automatically, whether or not anyone remembers to say so.
Make the list run itself
Rebuilding two CSV exports and a pivot table every month is the kind of task that gets done twice and then quietly abandoned. That is when dead stock compounds. Honey Shelf watches real daily sales velocity per variant, excludes stockout days before judging anything, keeps a days-remaining countdown on every product, and drafts production and material orders from what is actually moving — so slowing SKUs surface before your cash is stuck in them, and never reach the next purchase order by accident.