How inventory becomes "aged" in the first place

Overstock happens for predictable reasons: a demand forecast that ran too optimistic, a seasonal item that didn't fully sell through its window, a reorder placed before a sales slowdown was visible, or a product that simply underperformed expectations. The reason matters less than catching it early — the earlier you identify a SKU as genuinely slow-moving (rather than "just having a quiet month"), the more pricing flexibility you have before storage costs and further depreciation eat into the decision.

Why marketplaces specifically penalize aged inventory

On marketplaces offering fulfillment services (Amazon FBA, Walmart WFS, and similar), inventory sitting in a fulfillment center beyond a certain age commonly triggers escalating long-term storage fees — the longer a unit sits, the more it costs you just to keep it there, independent of whether it ever sells. Some platforms also fold aged-inventory levels into a broader inventory health score that can affect your future storage allowance if it gets too high. Both mechanisms mean that "just let it sit until it eventually sells" carries a real, growing cost — it isn't a free option.

The core decision: discount now vs. hold

Worked example. A unit costs you $10 to acquire and currently sells at $15. It's been aging in a fulfillment center and accruing a long-term storage surcharge of $0.75 per unit per month. If you hold it for 6 more months hoping demand picks up, that's $4.50 in additional storage cost per unit — on top of continuing to tie up the $10 of capital that unit represents. Discounting now to $11 still clears cost and immediately frees both the capital and the storage cost, even though it's a much thinner margin than the original $15 price.

The comparison that matters isn't "discounted price vs. full price" — it's discounted price now vs. expected value of holding, where expected value of holding has to subtract the accruing storage cost and the opportunity cost of the tied-up capital, and multiply the eventual sale price by your realistic (not hoped-for) probability of actually selling it before it ages further.

A simple decision framework

  1. Confirm it's actually slow-moving, not a temporary dip — check sell-through over a meaningful window, not the last week or two.
  2. Calculate the true cost of holding — remaining accrued storage fees plus a reasonable estimate of the capital's opportunity cost — for a realistic holding period.
  3. Compare against a markdown that still clears your unit cost, and compare that against the do-nothing (keep holding) option.
  4. Consider a non-price lever before jumping straight to discounting: bundling with a faster-moving product, moving it to a different channel or listing where it might find new demand, or running a short promotional push rather than a blanket price cut.
  5. If none of the above pencils out, liquidate — through a marketplace's own removal/liquidation program if offered, a bulk liquidator, or a clearance-focused secondary channel. Recovering even a small fraction of unit cost is usually better than paying storage indefinitely on inventory that's demonstrably not going to sell at a normal price.

Don't let sunk cost drive the decision

The amount you originally paid for the unit is gone regardless of what you decide next — it shouldn't factor into whether you discount today. The only numbers that matter going forward are the incremental cost of continuing to hold (storage, capital) versus what you can actually recover by acting now. Holding out for your original margin on inventory that isn't selling at that price usually just adds more storage cost on top of an already-sunk cost.

Preventing the next round of overstock

Aged inventory is frequently a forecasting problem showing up downstream — see Demand Forecasting for Ecommerce and revisit the reorder quantity for that SKU (see Reorder Points and Reorder Quantity) so the next purchase order is sized closer to actual demand rather than repeating the same overbuy.