Dead stock on Shopify: how to find it before it eats your cash
A practical method for spotting dead and slow-moving inventory in Shopify without a $199-a-month planning tool.
Dead stock is inventory you'll realistically never sell at full price: demand for it has disappeared, or was never there, and every month it sits on the shelf it costs you money instead of making you money. It's the part of dead stock inventory that most definitions skip — this isn't just "unsold stuff," it's a standing monthly expense dressed up as an asset.
This guide covers the definition, the reasons dead stock piles up on Shopify stores specifically, a fully worked example of what one dead SKU costs per month, how to find it in your Shopify admin, and what to do once you have. The framing matters: most content stops at "dead stock is bad, discount it." The more useful question is what each dead SKU is burning per month, because that number decides which tactics are worth your time.
What dead stock is (and what it isn't)
The workable definition: a SKU is dead stock when it has no realistic path to selling through at its current price. Not "it's slow this month." Not "we over-ordered a little." Dead means the demand that was supposed to justify the buy has evaporated — the trend passed, the colorway flopped, the model got replaced, the customer who wanted it already bought it somewhere else.
Accounting makes a useful distinction here. Obsolete inventory is stock that can no longer be sold at normal prices because demand has disappeared or newer products replaced it, and it eventually gets written down or written off entirely (AccountingTools, accessed Oct 2026). Dead stock is the retail version of that. The same source draws the line against slow-moving inventory: slow-moving stock is still saleable at ordinary prices, just at a low turnover rate; obsolete (or dead) stock has no realistic path left (AccountingTools, accessed Oct 2026).
Three terms, one shelf:
| Term | What it means | Still recoverable? |
|---|---|---|
| Slow-moving inventory | Sells, but slower than your restock rhythm | Yes — usually just needs time or a nudge |
| Excess inventory | More units than demand justifies, but demand exists | Yes — the surplus portion eventually sells |
| Dead stock | No realistic demand at current price | Only via markdown, bundling, or liquidation |
The distinction matters because the response is different. A slow mover needs a nudge; an excess position needs patience; dead stock needs a decision. If your copy is selling but too slowly, that's a slow-moving inventory problem — catch it there and you never meet the dead-stock version.
Why dead stock accumulates on Shopify stores
Nobody orders dead stock on purpose. It accretes through a handful of predictable mechanisms, and Shopify's structure amplifies several of them.
Minimum order quantities and case packs. Your supplier wants 300 units or sells in cases of 24. When you're testing a new SKU, the MOQ forces you to buy months of demand in one shot. If the test fails, the excess has nowhere to go — the supplier doesn't take returns, and your demand curve says 4 units a month.
Variant proliferation. Three colors × four sizes = 12 SKUs per product, and one great product can hide eleven dying variants. The aggregate sell rate of the product looks healthy in your sales reports while the olive-and-XXL combination hasn't moved since spring. Shopify's own merchandising tools make adding variants frictionless; nothing in the flow asks what happens to the losers.
Bundles. Bundle apps are a legitimate way to clear old inventory — Shopify lists "clear out old inventory" among the benefits of selling bundles, and notes you'll need a bundles app to create them (Shopify Help Center, "Product bundles", accessed Oct 2026). The trap is the leftover component. A 2-pack that pairs your best-seller with a dud moves the dud's inventory only until the best-seller component runs dry — then the remaining dud units are alone again, and often alone at a worse cost basis because you bought extra to feed the bundle.
Seasonal leftovers. Holiday packaging, summer weights, event merch, last year's model. The calendar closes on these categories, not gradually but all at once — in week 51 there's demand, in week 3 there's none. Whatever didn't clear by the boundary date becomes dead by definition, not by degree.
"Just in case" reorders. A supplier offered free freight over a threshold, or you reordered because a restock felt safer than a stockout, or you bought extra of something that was hard to get last year. Case-packs plus caution is the quietest dead-stock generator there is, because each individual decision looks defensible. (The other end of that trade — running out — has its own price, covered in what an out-of-stock product actually costs you.)
The common thread: dead stock on a small store is usually not one bad buy. It's 20 reasonable buys that each left a residual, spread across 20 SKUs nobody looks at anymore.
What one dead SKU costs you per month
Here's the worked example. Realistic numbers: you bought 240 units of a canvas tote (one colorway of a three-color product) at $8.50 cost, retailing at $28.99. It sells 3 units a month. It's been on the shelf for a year and a half.
Capital tied up:
240 units × $8.50 = $2,040
That's cash you paid suppliers that hasn't come back and, at the current rate, won't for a long time. Time to sell through at full price:
240 units ÷ 3 units/month = 80 months (about 6.7 years)
Carrying cost. Inventory carrying cost — the combined cost of storage, capital tied up, insurance, shrinkage, and obsolescence risk — is commonly estimated in the industry at roughly 15–30% of inventory value per year. Treat that range as an assumption, not a law; your actual rate depends on your storage situation, your cost of capital, and how fast your category goes stale. For this example, use the 20% midpoint:
$2,040 × 20%/year = $408/year = $34 per month
At the edges of the range, the burn is $25.50/month (15%) to $51/month (30%). Put differently: at $20.49 of margin per sale, this SKU burns the margin of nearly two full-price sales every month while selling three. More than half of what this product earns in a month goes straight to storing the stock that isn't selling.
The full-price path, totalled up. If it keeps selling 3/month to zero, the average unit sits about 40 months before selling. Total carrying cost over the whole run:
240 units × $8.50 × 20%/year × (40 ÷ 12) ≈ $1,360
Your total gross margin is 240 × $20.49 = $4,917.60, so the carrying cost eats roughly 28% of it — and that calculation assumes the tote is still sellable in 2032, which for a fashion-adjacent item is generous.
The markdown math: when discounting actually pays
The standard advice is "just mark it down." The arithmetic is more interesting than the advice.
A 40% markdown takes the tote to $17.39, leaving $8.89 of margin per unit — so every unit sold at 40% off sacrifices $11.60 versus full price. The sacrifice buys freedom from carrying. One unit held for one month costs 20% × $8.50 ÷ 12 ≈ $0.14 in carrying. The break-even question: how many months would a unit have to sit for the carrying saved to justify the $11.60 sacrifice?
$11.60 ÷ $0.14 ≈ 82 months (about 6.8 years)
Even at the top of the carrying-cost range (30%), the break-even is about 55 months. On pure carrying-cost math, a 40% markdown only pays for itself on units that would otherwise sit four-and-a-half to seven years.
The markdown is still right in three cases the math doesn't capture:
- The discount changes velocity. The calculation above assumes the discounted units sell at the same rate. If 40% off moves the tote from 3/month to 25/month, you clear 240 units in under 10 months, and the real comparison becomes "$2,133 of contribution in 10 months" versus "$4,918 spread over 7 years with $1,360 of carrying" — suddenly much closer, and better if cash matters.
- The product decays. Carrying cost at 20%/yr understates fashion, seasonal, and tech products, where the price you can get falls over time. A tote from a 2024 color story in 2032 isn't a $28.99 item even on a good day. For perishable categories, delay isn't just carrying cost — it's write-off risk. If the item never sells, you lose the entire $2,040.
- Cash and space are scarce. $2,040 of dead capital and the shelf space it occupies have uses your spreadsheet doesn't model: funding a reorder of something that actually sells.
The practical conclusion: don't blanket-discount dead stock, and don't blanket-hold it either. The units that would have sold soon anyway should sell at full price; the deep markdown belongs on the tail — which is exactly why markdown ladders (start shallow, deepen on a schedule) outperform one big fire sale. The tactics, with trade-offs, are in how to get rid of dead stock.
How to find dead stock in your Shopify admin
Dead stock hides in plain sight because nothing in a normal sales view shows you the SKUs not selling. You have to look at the inventory side. Shopify's native reports can get you most of the way — the analytics features described below are available on any Shopify plan per Shopify's analytics documentation, and the inventory-specific reports are documented in Shopify's inventory reports guide.
Work through them in this order:
- Inventory sold daily by product. Shows average units sold per day per variant. Sort ascending and scroll to the bottom: the zero-sales rows are your candidates.
- Inventory remaining per product (days of inventory remaining). This divides on-hand quantity by average daily sales from the last 28 days. Two things to know: a variant with no sales in the period shows "N/A" — which is precisely your dead-stock flag — and a large number (200, 500, 900 days) is a slow-motion version of the same problem.
- Products by sell-through rate. Percentage of available stock sold over roughly the last 30 days (the report runs about two days behind, per Shopify's docs). Low or 0% sell-through with high on-hand quantity is the pattern to hunt.
- Month-end inventory value. Totals your on-hand inventory at cost — this requires cost-per-item to be set on your products, so fill that in if you haven't. Compare the report across a few months: if the total barely falls, your inventory value is largely parked, and this report's per-SKU rows tell you where.
Two caveats worth knowing before you trust the numbers: Shopify's inventory-based metrics only reach back to October 1, 2023, and from October 1, 2026 the reports measure On hand quantity (including committed and unavailable units) rather than Available, per the inventory reports documentation — so historical comparisons across that date can shift for reasons that have nothing to do with your actual stock.
A third caveat cuts the other way: quantity-sold columns in these reports don't reflect returns, per Shopify's docs. A SKU showing 3 sales a month is showing gross sales — if half of them come back as returns, the real velocity is lower and the real cover is longer. For high-return categories (apparel sizing, home goods), scan the order reports for refund volume on your watch-list SKUs before concluding they're merely slow rather than effectively dead.
If you sell in person through Shopify POS, the same logic applies with one wrinkle: a store SKU can look dead online while selling steadily at the counter, and the inventory reports cover both channels in the same numbers — so check whether the online-only view matches your mental model before writing a variant off.
What the native reports don't give you is the dollar framing. You can see that a variant sold 0 units and has 240 on hand, but assembling "240 units × cost × carrying rate = $X/month" for every SKU is manual spreadsheet work. This is the one place we'll mention ourselves: detection of exactly this — a per-SKU view of inventory that isn't moving and what it costs — is part of what InventoryX (V1) is built to surface, alongside its stockout-days ledger. What no tool, including ours, will do for you is execute the fix: marking down, bundling, and liquidating stay manual, by design.
Once you've found it
Detection is the cheap half. The expensive half is deciding, per SKU, between holding, discounting, bundling, donating, and liquidating — and doing it without training your customers to wait for fire sales. That decision is tactics-and-trade-offs territory, covered properly in how to get rid of dead stock.
If you take one habit from this article, make it this: ask not "is this dead?" but "what is this burning per month?" A SKU with a $34/month burn has an argument for a decisive markdown today. A SKU burning $4/month might just need patience and a bundling slot. The number, not the label, makes the call.
Next step: pick your five longest-unmoving SKUs, run them through the carrying-cost math above (five minutes with a calculator), and then take the worst one straight to the clearance-tactics article and pick its exit.