Excess inventory feels vague until you attach a number to it. Once every SKU has a cover target, the gap between what you hold and what you need becomes a euro figure per line. At that point clearing overstock stops being a buyer's side project and becomes a finance-approved program with a weekly scoreboard.

Key takeaways

  • Excess inventory is the on-hand quantity above a cover target, valued at unit cost, not a percentage on a turnover report.
  • Backward-looking turnover hides lines that peaked early in the year; forward cover (what the next eight weeks of receipts add versus what you sell) catches them.
  • Carrying cost turns a stock figure into an annual leak: 20 to 30 percent of value per year is the usual range for distributors.
  • Release cash in a fixed order: stop-buy, transfer, bundle, liquidate. Discounting first destroys margin you could have kept.
  • Report cash released weekly. Leadership sustains attention when the number moves.

Why excess inventory hides in plain sight

Most distributors track inventory as a total: stock days at company level, turnover per category, a valuation line on the balance sheet. All of those are averages. A category turning 6 times a year can contain forty SKUs turning twice, funded by twenty turning twelve times. The forty lines quietly hold working capital that could fund fast movers or pay down a credit line.

The second hiding place is time. Annual turnover is a rear-view mirror: a line that sold strongly in January and stalled in June still shows a healthy twelve-month ratio. Today's decision depends on current velocity, not last year's total.

Step 1: Set a cover target per SKU class

A cover target is the number of days of demand you are willing to fund on the shelf. It is not a minimum; it is the band above which stock is excess. Targets vary by class because the cost of a stockout and the cost of holding differ.

ClassTypical cover targetRationale
A lines (top ~20% of revenue)21–30 daysHigh velocity, frequent replenishment, stockout costs real revenue
B lines30–45 daysSteady demand, standard supplier lead times
C lines (long tail)45–60 daysLow velocity, infrequent orders, but every unit held is slow cash
Lines being exited0 daysAny stock above open orders is excess by definition

Tune the bands to your working capital policy and supplier cadence; a 21-day target on a line the supplier ships every six weeks only generates noise.

Step 2: Quantify excess inventory per line

With a target in place the arithmetic is simple and repeatable:

Excess units = max(0, on-hand − daily run rate × target cover days)
Excess cash = excess units × unit cost

Worked example

InputSKU 2210 (B line)
On-hand (reconstructed from net flow)1,840 units
Daily run rate (12-week average)14 units/day
Cover target40 days
Needed stock = 14 × 40560 units
Excess units = 1,840 − 5601,280 units
Unit cost€6.20
Excess cash€7,936
Current cover = 1,840 ÷ 14131 days

Run this on every SKU and sort by excess cash; the first twenty rows usually explain most of the problem. Rank by cash, not unit count: a low-volume expensive line outranks a pallet of cheap fittings.

Step 3: Look forward, not just backward

Excess on the shelf is half the picture; the other half is stock already committed to arrive. A line at 131 days of cover with two open purchase orders in transit will be at 200 days by month end.

Forward cover answers that question directly: take the net stock you will build over the next eight weeks (purchases plus returns minus expected sales) and divide by trailing weekly demand. The result is expressed in weeks and tiers cleanly:

Forward cover built (next 8 weeks)TierWhat it means
< 4 weeksLowReplenishment roughly matches demand
4–8 weeksMediumOpen orders will push cover above target; review quantities
8–16 weeksHighCancel or defer open orders where the supplier allows
≥ 16 weeksCriticalStop purchasing; plan clearance before receipt

The point is timing. Cancelling a purchase order before it ships costs nothing. Discounting the same stock four months later costs margin.

Step 4: Price the trap with carrying cost

Finance rarely reacts to units. They react to an annual cost. Carrying cost bundles capital cost, warehouse space, insurance, handling, shrinkage and obsolescence. For distributors the all-in rate typically lands between 20 and 30 percent of inventory value per year.

Applied to the example above: €7,936 of excess at a 25 percent rate is roughly €1,984 a year, on one B line. Across the top hundred overstocked SKUs, that number justifies a clearance budget and a weekly update to leadership.

Step 5: Release cash in the right order

  1. Stop-buy. Freeze reorders on every line above target. This is free and immediate. Review open purchase orders for cancellation or deferral.
  2. Transfer. If another branch or warehouse is below target on the same SKU, move stock before you discount it company-wide.
  3. Bundle. Pair excess lines with fast movers that sales already asks for. Attach rates from co-movement data tell you which pairings are natural.
  4. Liquidate. Only where recovery beats the carrying cost of waiting. A line costing €1,984 a year to hold can absorb a real discount and still come out ahead.

Report cash released weekly, by line, alongside the remaining excess. When the number moves every Monday, the program keeps its sponsor.

How Flowra handles this

Flowra reconstructs each product's stock trajectory from net transaction flow, so you do not need a clean opening balance to start measuring excess inventory. Every product gets a forward-cover reading over the next eight weeks, tiered low to critical, alongside its risk score and velocity trend. When a holding-cost rate is configured, the annual carrying cost appears next to the excess figure so finance sees the leak in euros per year.

Recommendations arrive as drafts, not orders. Flowra is read-only by default: a stop-buy or clearance proposal shows the fact, the forecast, the hypotheses it rests on and a confidence badge, and nothing changes in the ERP until a buyer approves. When the data is stale or a forecast cannot stabilise, Flowra withholds the recommendation and says what is missing. The weekly Monday digest lists cash released and remaining excess by line, which is the scoreboard the program needs. You can read more about the evidence structure on the evidence-backed AI section or see how it plays out in distribution use cases.

Flowra · recommendation draftConfidence: High
Stop purchasing SKU 2210 and defer open PO 4471 (600 units) by six weeks
Fact
Reconstructed cover is 131 days against a 40-day target. Excess estimated at 1,280 units, €7,936 at cost.
Forecast
With PO 4471 received on schedule, forward cover reaches 14 weeks by week 6 (tier: high). Demand trend is flat over 4 vs 12 weeks.
Recommendation
Freeze reorders; defer PO 4471. Alternative: transfer 400 units to the north depot, currently at 18 days of cover on the same SKU.
Hypotheses
Supplier accepts deferral without penalty; no promotion scheduled on this line in the next 8 weeks; run rate holds at 14 units/day.
Next step
Approve, adjust the quantity, or ask why. Nothing changes in the ERP until you do.
Data refreshed 14 h ago · 18 months of history · Source: Odoo (read-only)

Frequently asked questions

How do you calculate excess inventory?

Excess units equal on-hand minus (daily run rate × target cover days), floored at zero. Multiply by unit cost to get excess cash. Rank SKUs by that cash figure, not by unit count, and use sellable stock only.

What is a reasonable inventory carrying cost rate?

For distributors the all-in rate, covering capital, space, insurance, handling and obsolescence, usually falls between 20 and 30 percent of inventory value per year. Use your finance team's cost of capital as the floor and add warehousing and shrinkage on top.

Should I discount overstock immediately?

No. Stop buying first, then transfer to locations below target, then bundle with fast movers. Discount only where recovery beats the carrying cost of holding. Cancelling an open order is free; a markdown four months later is not.

Related reading

See it on your own data. Upload a CSV or connect Odoo, WooCommerce or SQL — first stock-risk report in minutes, no credit card.

Get my free inventory report →