E-commerce excess inventory: when your capital is sleeping in the warehouse
Excess inventory (overstock, dead stock) is one of the three silent killers of an e-commerce operation, alongside stockouts and uncontrolled returns. Unlike stockouts — which hurt because the lost sale is visible — excess inventory is invisible: the units are there, the ERP says stock is available, but capital is frozen, warehouse space is consumed, and every week the product depreciates, becomes obsolete, or loses relevance. An e-commerce with 45% of its inventory turning less than twice per year has a working-capital problem that no margin can offset.
Inventory turnover: the mother metric
The inventory turnover ratio measures how many times stock is sold and replenished in a period:
Inventory turnover = Annual COGS ÷ Average inventory
A healthy retail e-commerce turns 6-12 times per year (one turn every 30-60 days). Premium DTC brands with a broad SKU count turn 4-8 times. Fast-commerce of rapid consumption exceeds 15. The absolute value matters less than the comparison to your category benchmark and to your own historical series. A sustained turnover decline across 2-3 quarters is the early warning; by the time the P&L shows the margin impact, you are already six months late.
The operational inverse — days inventory outstanding (DIO) — is more useful in CFO conversations:
DIO = (Average inventory ÷ COGS) × 365
A DIO of 120 days means capital is trapped four months before converting back to cash. Multiplied by your cost of capital (interest rate or opportunity cost, typically 12-18% in Latin America and 6-10% in the US), the real carrying cost appears: financial interest, insurance, shrinkage, obsolescence, warehouse space, and forced-markdown risk. Aggregate industry benchmarks put total carrying cost at 20-30% of inventory value per year.
ABC classification: not every SKU deserves the same treatment
The ABC analysis — based on the Pareto principle — classifies SKUs by sales contribution:
- Class A (~20% of SKUs, ~80% of sales): high SKU velocity, fine-grained management, frequent replenishment, tight safety stock.
- Class B (~30% of SKUs, ~15% of sales): standard management, cyclical replenishment.
- Class C (~50% of SKUs, ~5% of sales): candidates for discontinuation, bundling with A-items, or make-to-order.
A mature e-commerce reviews this classification quarterly. SKUs drifting from B to C for two consecutive quarters are dead stock in the making; cutting them before they cross the obsolescence threshold avoids the 40-60% forced markdown that the industry applies in end-of-season clearance.
Dead stock and sell-through rate
Dead stock is defined operationally as inventory with no sales in 90-180 days (the threshold varies by category; fashion uses 90, large appliances use 180). Sell-through rate — units sold divided by units received in a period — is the companion metric:
Sell-through = Units sold ÷ Units received × 100
A healthy sell-through in retail e-commerce is 70-85% at the close of a short season (6-8 weeks) and 60-75% in a long season (12-16 weeks). Below 50% signals structural overbuying; above 95% signals structural stockouts — both erode margin, one via markdown and the other via lost sales and marketplace ranking degradation.
SKU velocity, safety stock, and EOQ
SKU velocity (units sold per unit of time) is the direct input for the replenishment model. Combined with supplier lead time and demand variability, it generates safety stock:
Safety stock = Z × σ_demand × √lead time
where Z is the service factor (1.65 for 95%, 2.05 for 98%) and σ is the standard deviation of daily demand. Overestimating safety stock is the #1 cause of silent dead stock: the buffer grows with each review and no one trims it when demand stabilizes.
Economic Order Quantity (EOQ) resolves the trade-off between ordering cost and holding cost:
EOQ = √(2 × annual demand × order cost ÷ holding cost per unit)
In e-commerce with Asian suppliers of 45-90 day lead times, EOQ underestimates the risk of getting stuck long if demand drops. Modern practice combines EOQ with supplier MOQ (minimum order quantity) and a dynamic reorder point (ROP) recomputed weekly using SKU velocity from the last 28 days.
Trapped working capital: the number the board understands
The calculation that translates operations into finance: working capital in inventory = Total inventory × unit cost. A Latin American e-commerce with 18M USD annual revenue and a 110-day DIO has roughly 3.2M USD frozen in inventory; cutting DIO to 75 days frees 1M USD of capital that can fund growth, pay down debt, or expand marketing. The ROI of an inventory optimization project rarely has a competitor at that level.
Markdown cadence: the 10-30-50-70 playbook
Once dead stock is identified, the fastest exit is a structured markdown cadence. The goal is to convert inventory to cash before it reaches zero value. A proven schedule:
- Week 1-2: 10% off. Tests price sensitivity. No urgency yet.
- Week 3-4: 30% off. Added to flash-sale and clearance sections. Push via email to past buyers of the category.
- Week 5-6: 50% off. Full price-anchor visibility on the product page. Run retargeting ads on near-purchasers.
- Week 7-8: 70% off. B-stock or bulk-lot sale to liquidation partners (B-Stock Solutions, BULQ, Via Trading) if online retail traffic is insufficient.
The accounting treatment: inventory write-downs (under IFRS IAS 2 and US GAAP ASC 330) must reduce inventory to Net Realizable Value (NRV). A 70% markdown means an NRV write-down of 70 cents per dollar of cost — a direct P&L charge. Proactive 8-week markdown cadence generates better cash recovery than waiting for the write-down decision at year-end.
Preventing overstock: the upstream fixes
Better forecasting: move from manual estimates to statistical demand models. SKU velocity from the prior 28-day rolling window is better than a static annual average. For seasonal categories, Holt-Winters exponential smoothing or STL decomposition captures the seasonal pattern and projects forward. Many e-commerce platforms (Shopify, Amazon Seller Central, Linnworks) expose 90-day rolling velocity — use it.
Smaller initial buys: the temptation to overbuy on a first purchase to hit MOQ thresholds or volume discounts creates the dead stock problem. Negotiating a test-order exception (50-100 units) at the standard unit cost — even without the volume discount — is cheaper than owning 500 units of a product that doesn't sell. Quantify: volume discount at 15% on 500 units = USD 375 saved on USD 2,500 cost. If 30% of the units end up dead stock, the write-down is USD 750. The discount evaporated and left a loss.
MOQ negotiation by category: for class A SKUs (20% of SKUs, 80% of sales), MOQs matter less because replenishment is rapid. For class C SKUs (50% of SKUs, 5% of sales), negotiate MOQ equal to 4-8 weeks of demand instead of 3-month blanket orders. Most suppliers will accommodate this for established accounts if asked.
Liquidation channels: the hierarchy
- Own clearance section (highest recovery, lowest volume throughput). Good for 10-30 units.
- Flash sale to email list (recovery 40-60% of original price, fast). Works within 72-hour window.
- B2B bulk sale to resellers or jobbers (recovery 20-40% of cost). B-Stock, BULQ, Via Trading, or direct outreach to flea market resellers for physical goods.
- Tax-deductible donation (in Mexico under LISR Art. 27, in the US under IRC 170(e)): donation of inventory to eligible nonprofits yields a deduction equal to cost in Mexico, or up to twice cost in the US for C-corps donating for care of the ill. Recovery equivalent is the tax shield.
- Destruction + write-off (last resort, zero cash recovery). Triggered only when shipping + liquidation cost exceeds liquidation value.
Conclusion
Measuring turnover, DIO, ABC mix, sell-through, and dead stock by category — and acting weekly on the outliers — is the difference between an e-commerce that scales with healthy margin and one that grows in revenue but suffocates in working capital. The simulator turns your ERP data into the six metrics that the CFO, the purchasing manager, and the marketplace manager need to see in a single view.