How to Reduce Excess and Obsolete Inventory in Ecommerce
Excess stock is a pacing problem and obsolete stock is a recovery problem, and they need different fixes. How to find both with an aging report, sell-through and turnover, decide between markdown and liquidation with real numbers, and book an E&O reserve that keeps gross margin honest.
Two Problems That Look Like One
Open any warehouse report six months into running an ecommerce brand, and you will find it: a shelf, a bin, sometimes an entire pallet of stock that stopped moving a while ago and nobody quite noticed. It happens to well-run stores as often as sloppy ones. The difference is what happens next.
Excess and obsolete inventory, usually shortened to E&O, is often treated as a single problem, but it is really two. Excess inventory is stock held in quantities beyond what current demand supports. It is still sellable, just slower than planned. Obsolete inventory is stock unlikely to sell at a meaningful price at all, because the product was discontinued, replaced, or has fallen out of demand for good. Excess stock calls for slower buying and a push on demand. Obsolete stock is closer to a sunk cost, where the job is to recover as much cash as you can.
The distinction matters because the fix for each is different, and so is the accounting treatment. This guide walks through how to identify both, how to choose a clearance route with numbers rather than instinct, how to reflect lost value on the books, and how to stop the next batch from forming.
Swipe sideways to compare columns.
| Excess inventory | Obsolete inventory | |
|---|---|---|
| What it is | More units than current demand will absorb in a reasonable time | Units unlikely to sell at a meaningful price at all |
| Typical cause | Overbuying, optimistic forecast, bulk discount | Discontinued, replaced, expired, or out of fashion |
| Still sells? | Yes, slowly | Rarely, and only at a steep discount |
| Main lever | Slow the reorders, push demand | Recover cash, write the value down |
| Accounting | Usually none beyond monitoring | Write-down, reserve, or write-off |
Why Excess and Obsolete Inventory Builds Up
Dead stock rarely comes from one bad decision. It is usually the compounding effect of a few habits that each seem reasonable in isolation:
- Bulk ordering for a supplier discount without modelling how long the quantity will take to sell through. A 10% unit discount is quickly eaten by a year of holding cost.
- Forecasting off a single strong month instead of trailing sales and seasonality.
- No formal reorder point, so purchasing runs on instinct rather than a repeatable trigger tied to lead time and daily sales.
- Rapid SKU expansion: new colours, sizes, or bundles launched before the core product has proven steady demand.
- Holding last season's stock "just in case" when the data says it will not sell at full price again.
These are ordinary habits, and they add up whenever purchasing runs ahead of the numbers that should drive it. The stores that manage inventory well are not the ones that never overbuy. They catch it early and act before the carrying cost outweighs the recovery value.
How to Identify Excess and Obsolete Inventory
Before touching a clearance strategy, get a clear read on what is actually sitting idle and why. This is much easier when purchasing, inventory, sales, and the general ledger draw on connected data instead of four separate exports, which is the practical case for accounting system optimization in a growing store: the aging report and the balance sheet end up telling the same story.
Run an inventory aging report
An inventory aging report groups SKUs by how long they have sat since the last unit sold, usually in bands such as 0 to 90, 91 to 180, 181 to 365, and over 365 days. Inventory platforms such as Cin7, NetSuite, and Extensiv generate this directly, and Shopify's inventory reports cover days of inventory remaining and sell-through on its higher plans. If you are working from spreadsheets, pull the last sale date per SKU and calculate days since movement.
There is no universal cutoff where inventory officially becomes obsolete. A 90-day window is aggressive for a business with long replenishment cycles or genuinely seasonal products, and too generous for a fast fashion brand where a 45-day-old SKU is already stale. Set the bands against your own historical turnover, not a rule of thumb borrowed from a blog post, this one included.
Measure sell-through, weeks of supply, and turnover
Aging tells you how long stock has sat. Sell-through, weeks of supply, and turnover tell you whether it is actually a problem.
A SKU that is 90 days old but still selling at 15 to 20% of its stock each month is not dead stock. It is a slower mover you should reorder less of. A SKU with 220 units on hand selling 4 a week, on the other hand, has 55 weeks of supply, which is more than a year of cash parked on a shelf.
Turnover gives the same signal at category or store level, and it is one of the first numbers lenders and acquirers ask for. A store with $960,000 of annual COGS and $180,000 of average inventory turns 5.3 times a year, or about 68 days of inventory. The inventory turnover calculator runs both figures from your own COGS and inventory balances.
Segment SKUs with ABC analysis
Once you have aging and movement data, segment. ABC analysis ranks SKUs by revenue or gross profit contribution. A common split puts the SKUs that together produce about 80% of revenue in A, the next 15% in B, and the long tail in C, though the thresholds are a convention you can adjust. A items are your top performers and rarely have an excess problem. B items are steady mid-tier stock worth monitoring. C items are where slow-moving and dead inventory concentrates, which keeps clearance effort on the SKUs actually dragging on cash flow instead of spreading it evenly across the catalogue.
5 Steps to Reduce Excess and Obsolete Inventory
1. Split slow-moving stock from dead stock
Combine the aging report, movement data, and ABC segments into one working list, then split it into two buckets. Slow-moving stock is recoverable at close to full margin with the right push. Dead stock is unlikely to sell without a steep discount or an alternate channel. Flag anything discontinued by the supplier or replaced by a newer version as dead regardless of age, since those rarely recover. This split decides everything that follows.
2. Calculate what holding the stock costs
This is the step most guides skip, and it is usually what convinces a founder to act. Carrying cost is not just warehouse rent. It includes storage and handling, insurance, the cost of capital tied up in stock, shrinkage and damage, obsolescence risk, and the opportunity cost of shelf space that could hold a product that turns.
Run the math on your own dead stock. At a 25% annual rate, a SKU that has sat for eight months has already cost about a sixth of its value just by existing on the shelf, before you have recovered a dollar from selling it. Across the store in the example below, the $54,000 of stock older than 90 days costs roughly $13,500 a year, or $1,125 a month, to keep. The inventory carrying cost calculator builds the cost from its components if you do not want to assume a rate.
3. Choose the right clearance strategy
Match the tactic to how far the SKU has drifted from sellable:
Swipe sideways to compare columns.
| Route | Best for | What it protects | Watch out for |
|---|---|---|---|
| Bundling with a bestseller | Mildly slow stock | Price perception on the bestseller | Bundle margin, see stacked discounts and BOGO math |
| Email or SMS flash sale to your list | Moderately overstocked SKUs | Public price, since the discount stays private | Training subscribers to wait for sales |
| Public markdown | Seasonal stock at the end of its window | Speed | Margin, and a lower reference price once the sale ends |
| Liquidation (B-Stock, liquidators, wholesale) | Genuinely dead stock | Cash and warehouse space | Recovery is often 20 to 40 cents on the dollar, or less |
| Donation | Stock with near-zero resale value | Disposal cost, possible deduction | Tax rules and documentation, see step 4 |
Before a flash sale, work out where the discounted price leaves margin, not markup, since a 30% markdown on a product with a 50% markup leaves far less than people expect. The margin vs markup guide shows why the two numbers diverge.
The expensive mistake is holding out for full margin on stock that has already shown it will not sell at full price. Every extra month in storage adds carrying cost and lowers what anyone will eventually pay. The decision gets clearer when you put numbers on it.
Worked example: markdown or liquidate?
A store holds 300 units of a discontinued accessory that cost $18 each, $5,400 in total. A liquidator offers 30% of cost, $5.40 a unit, or $1,620 today. The alternative is a markdown to $24, with fulfilment and payment fees of about $6 a unit, so each sale nets $18 and simply recovers cost. Holding cost runs at 25% a year on the average value still on the shelf.
Swipe sideways to compare columns.
| Liquidate today | Markdown sells 25/month | Markdown sells 8/month | |
|---|---|---|---|
| Units sold at $24 in 12 months | 0 | 300 | 96 |
| Net from markdown sales | $0 | $5,400 | $1,728 |
| Carrying cost over the year | $0 | −$675 | −$1,134 |
| Leftover units liquidated at $5.40 | $1,620 (all 300 now) | $0 | $1,101.60 (204 units) |
| Economic value recovered | $1,620 | $4,725 | $1,695.60 |
If the markdown really moves 25 units a month, it recovers nearly three times what the liquidator offers. If it moves 8, a year of effort, email sends, and shelf space ends up worth $75.60 more than taking the offer on day one, and the leftover stock is a year older. The deciding input is the sales rate at the lower price, so test the markdown for two to four weeks and read the result before committing a whole season to it.
4. Account for write-downs and an E&O reserve
This is where the operational and financial sides of the problem connect, and it is the part operator-level advice most often leaves out.
If inventory has genuinely lost value, the books need to show it. That happens through a write-down, which reduces the recorded value to what the stock is realistically worth, a write-off, which removes stock with no remaining value entirely, or an obsolescence reserve, an allowance set up in advance for inventory expected to lose value. Leaving overstated inventory at full cost inflates reported assets and flatters gross margin, which becomes a real problem during financing, due diligence for a sale, or any decision made off numbers that do not reflect the shelf.
Swipe sideways to compare columns.
| Treatment | When it applies | Effect on the books |
|---|---|---|
| Write-down | Stock still has some value, but less than cost | Inventory reduced to realisable value; the loss usually goes through cost of goods sold |
| Write-off | Stock has no value and is destroyed, donated, or scrapped | Remaining carrying value removed in full |
| E&O reserve | Loss is expected across aged stock but not yet tied to specific units | A contra-inventory allowance estimated from aging, adjusted each period |
Under US GAAP (ASC 330), inventory measured using FIFO or average cost is reported at the lower of cost and net realizable value, meaning the expected selling price less the costs to complete and sell. Inventory measured using LIFO or the retail inventory method still follows the older lower of cost or market test. Once written down under US GAAP, the reduced amount becomes the new cost and is not written back up if prices recover. IFRS (IAS 2) also measures inventory at the lower of cost and net realisable value, but does allow a reversal when value recovers.
Most stores that handle this well run it as a quarterly routine: pull the aging report, apply a reserve percentage to each age band, and book the adjustment so the balance sheet reflects what the inventory is actually worth. The percentages below are illustrative; yours should come from what aged stock has actually recovered in the past.
Swipe sideways to compare columns.
| Days since last sale | Inventory at cost | Reserve rate | Reserve |
|---|---|---|---|
| 0 to 90 | $126,000 | 0% | $0 |
| 91 to 180 | $28,000 | 15% | $4,200 |
| 181 to 365 | $16,000 | 50% | $8,000 |
| Over 365, or discontinued | $10,000 | 90% | $9,000 |
| Total | $180,000 | 11.8% | $21,200 |
Suppose that store had $400,000 of revenue and $240,000 of COGS in the quarter, a 40% gross margin. Booking the $21,200 reserve through cost of goods sold takes COGS to $261,200 and gross margin to 34.7%. That 5.3-point drop is not a new loss. It is a loss that had already happened on the shelf and was simply not yet visible. The gross vs operating vs net margin guide shows how that flows down the rest of the P&L, and the COGS calculator reconciles beginning inventory, purchases, and ending inventory once the adjustment is in.
5. Prevent the next round of excess inventory
Clearing what is already sitting idle solves today's version of the problem. Preventing the next round means tightening the front end of purchasing:
- Set a real reorder point from lead time and average daily sales, plus safety stock sized to demand variability, rather than a round number that feels safe. The safety stock calculator returns both, and the EOQ vs reorder point vs safety stock guide explains which question each one answers.
- Forecast from trailing 12-month sales plus known seasonality, not one strong month or a supplier's suggested order quantity.
- Cap each month's purchasing with an open-to-buy budget so orders cannot outrun the sales plan. The open-to-buy calculator builds it from planned sales, markdowns, and target inventory.
- Before taking a bulk discount, compare the saving with a year of carrying cost on the extra units. The economic order quantity calculator shows the order size where ordering and holding costs balance.
- Run a quarterly SKU review so slow movers are flagged before carrying cost outpaces recovery value.
- Launch new products with a conservative first order and a defined reorder trigger, instead of a large first buy based on demand that has not been tested against real sales.
Turn Excess Inventory Into a Cash-Flow Lever
The stores that handle this well do not treat excess and obsolete inventory as a once-a-year cleanup. They treat it as a recurring habit: run the aging report, check sell-through and turnover, segment with ABC analysis, clear each SKU through the channel that matches how far it has drifted, and make sure the accounting reflects what is on the shelf.
Done consistently, the routine frees up cash. Capital that has sat in dead stock for six months can go into inventory that turns, and fewer days of inventory shortens the time between paying a supplier and collecting from a customer. The cash conversion cycle calculator shows how many days that frees up.
Try the inventory carrying cost calculatorBuild a holding cost from capital, warehouse rent, insurance, handling, and obsolescence, and see what your idle stock costs each year.What this does not cover
- Reserve percentages and aging bands are policy choices. The figures here illustrate the method and are not a standard; base yours on what aged stock has actually recovered.
- Perishable, regulated, or date-coded goods such as food, cosmetics, and supplements have expiry rules that override any aging band.
- Marketplace fee schedules, including Amazon storage and aged inventory surcharges, change regularly. Use the current published rates.
- Tax treatment of write-downs, disposals, and donations depends on jurisdiction, accounting method, and entity type. Confirm it with a qualified accountant before filing.
Frequently Asked Questions
What is excess and obsolete inventory?
Excess inventory is stock held beyond current demand that is still sellable, typically at or near full price given time. Obsolete inventory is stock unlikely to sell at meaningful value at all, usually because it was discontinued, replaced, or demand has permanently dropped. Together they are often called E&O inventory.
How do you identify obsolete inventory?
Run an inventory aging report to see how long each SKU has sat since its last sale, then check sell-through, weeks of supply, and turnover to confirm whether it has genuinely stalled or is just a slower mover. Cross-check whether the product has been discontinued or replaced, since age alone does not always mean obsolete.
What is an E&O reserve?
An excess and obsolete inventory reserve is an allowance that reduces inventory on the balance sheet to reflect value expected to be lost on aged or discontinued stock. It is usually calculated by applying a percentage to each aging band and adjusted every quarter or month.
What is the difference between an inventory write-down and a write-off?
A write-down reduces the recorded value of stock that still has some value, for example to its net realizable value. A write-off removes stock with no remaining value, such as goods that are destroyed, scrapped, or donated.
How often should you review aging inventory?
Monthly suits fast-moving ecommerce catalogues with frequent SKU changes. Quarterly is reasonable for smaller stores or categories with longer sales cycles. The right cadence depends on how fast your catalogue turns, and the reserve should be updated at least as often as you close the books for reporting.
How can you reduce excess inventory without hurting margins?
Segment before you discount. Bundle slow movers with bestsellers instead of discounting broadly, use targeted promotions to your existing customer list before public markdowns, and reserve liquidation for stock that has proven it will not sell through normal channels. The goal is recovering the most value from each tier, not one blanket discount across the catalogue.
Written by
Do The Calculation Team
Do The Calculation
Do The Calculation is built by a small team of data analysts and spreadsheet developers. Where a guide depends on a published formula, standard, or government rule, the calculator it links to names that source directly so you can check the number yourself.
About the team