Stockouts: definition, real cost, and how to measure them
What a stockout actually is, the five cost layers most business cases miss, the three rate formulas that get confused with each other — and why the buffer you are holding is mostly protecting you from not knowing when the replenishment will arrive.
What is a stockout?
A stockout is a demand event that arrives when there is no sellable stock to fill it: a customer wants to buy, an order line needs to ship, or a production line needs a part, and the inventory is not available. It is measured as a rate over time and locations, not as a count of incidents, and it is the operational opposite of availability.
The phrase doing all the work in that sentence is “no sellable stock.” There are at least six physically different situations that all present to a customer as the same empty shelf, and each one has a different root cause and a different fix. Treating them as one number is the reason most availability programs stall: the report says 3% and nobody can say which 3%.
The supply-side condition: you hold less inventory than committed demand.
The demand-side event: someone asked, and could not be served.
The response: the order stays open and ships when stock arrives.
A backorder is not the absence of a stockout. It is a stockout with a recovery plan attached.
Which is why fill-rate reporting that nets out eventually-shipped backorders will systematically flatter your availability. If a retailer's shelf was empty for six days, shipping the units on day seven does not undo the lost sales, and it does not remove the deduction.
The distinction that matters most in practice is between a stockout you knew was coming and one you discovered. The first is a decision with a price attached. The second is a bill that arrived already paid.
There is a cheap test for which kind you mostly have. For your last five outages, ask who said it first.
If the answer is any of those, the signal reached your organisation from the outside — and no forecasting investment addresses that. A DC manager finding out from the driver at the gate and a planner finding out from an ETA that moved four days ago are the same failure priced very differently. Run that test before you scope any spend. It takes an afternoon, and it will point at a different budget than you expect.
Six things that all look like an empty shelf
Same symptom, six different root causes, six different first reports to pull. This is the taxonomy that turns a portfolio-level percentage into something you can assign.
| Type | What the system says | What is physically true | First report to pull |
|---|---|---|---|
| True stockout | On-hand = 0 | Nothing is there — replenishment arrived late, or demand ran above plan | Inbound ETA against remaining days of cover |
| Phantom stockout | On-hand > 0 | Nothing sellable is there — record error, shrink, misplacement, stranded in the backroom | Zero-sales-with-positive-stock exception report |
| Wrong-node stockout | Network on-hand is healthy | The stock exists, in a building this order cannot be filled from — allocation rules and network deployment, not quantity | On-hand by node against demand by node |
| Allocation / ATP stockout | On-hand > 0, ATP = 0 | Stock is committed, quarantined or reserved — ATP logic, QA holds, blocked lots, stale reservations | ATP reconciled against physical on-hand |
| Partial stockout | Line partially filled | Some units were available — pick shortage, pack-size rounding, allocation split | Line fill rate against order fill rate |
| Promotional stockout | Plan was met | The plan never carried the volume — promo lift not loaded into replenishment or inbound | On-shelf availability during event weeks only |
amber = the record lies to you · red = unrepeatable
The wrong-node row gets worse the less of the network you own. Stock at a 3PL DC, consignment at a customer site, and units committed to ship-from-store are all positions your replenishment logic is reasoning about from someone else's system, on someone else's refresh cycle. Two new DCs does not mean two new problems — it means the same exception problem, arriving later.
One row deserves its own paragraph, because it is where the money and the relationship actually burn. A promotional stockout is not an availability rate, it is a total write-off on a fixed and unrepeatable investment. The ad is in circulation. The display shipped. The end-cap is bought and paid for. The retailer built their forecast off your promised volume and cleared the space for it. Miss that window and there is no partial credit — you get the deduction, the empty end-cap, and a buyer who brings it up at the next line review. Which has a reporting consequence: promoted-item availability has to be measured separately, on event weeks only. Blending event weeks into a monthly portfolio number is exactly how a catastrophic promo miss disappears into a 3.0% and nobody upstream ever learns it happened.
Corsten and Gruen put the worldwide grocery average near that mark in the early 2000s, and roughly double it on promoted items. That is what normal looks like, not a target — and the shopper standing in front of the gap cannot tell which of the six rows above created it.
What a stockout actually costs
Before the arithmetic, name why this is hard. You are being asked to do two opposite things in the same quarter: hold less inventory, and be out of stock less often. Finance is measuring your working capital and your customers are measuring your availability, and the lever most teams reach for first — more safety stock — makes one of those numbers better by making the other worse. You already know this, which is presumably why you are reading a page about stockouts instead of just raising your buffers.
The way out is not a smarter trade-off between the two. It is finding the availability failures that cost nothing in working capital to fix, because they were never inventory failures. A phantom stockout, a wrong-node stockout, and a late container nobody flagged all present as the same empty shelf, and none of the three is solved by buying more units. That is most of what follows.
Ask a supply chain team what a stockout costs and you will usually get one number: the gross margin on the units that did not sell. That is the smallest reliably-quantified layer and typically less than half the true cost. Recapture is what swings it most, and it is not a guess. Gruen and Corsten's worldwide out-of-stock research found the consumer response splits roughly into thirds and change: about 31% buy the item at another store, about 45% substitute (split between another brand and another size or pack), about 15% delay, and roughly one in ten simply does not buy. For a brand, the share that hurts is the 31% who left your distribution point plus the 26% who tried a competitor. For a retailer, it is the 31% who left the building plus the 9% who abandoned. Same event, two entirely different loss profiles — which is why manufacturer and retailer stockout business cases should never share a recapture assumption.
Lost gross margin
At-risk demand during the outage, minus whatever you recapture, times unit gross margin. Plan on 40–60% of at-risk units being permanently lost — recapture is the variable that swings this number most.
Expedite premium
The cost of buying back time you no longer have. Roughly 1.5–3× a standard truckload rate for team drivers or dedicated expedite; roughly 6–12× per kilogram moving ocean to air, depending on lane and market.
Substitution and margin mix
The customer takes the alternate SKU, the sale is preserved and the margin is not. Substitution frequently pushes volume onto a promoted or lower-margin item — call it 2–8 gross margin points on the substituted volume.
Retailer penalties and slot risk
Fill-rate and OTIF compliance programs push the retailer's availability cost back onto the supplier, commonly at 1–3% of order value per non-compliant PO. That is the invoiced part; losing facings and promotional slots is the larger exposure.
Long-tail share loss
A stockout breaks a purchase habit and funds a competitor's trial. It is the only layer that compounds, and the only one nobody can price per event — which is exactly why it never appears in the business case and why it should still be named out loud in the room.
cost per event = (at-risk demand × [1 − recapture] × unit GM) + expedite + penalty + recovery labour
Layers 3 and 5 sit outside this formula and are usually larger than layer 1.
What one nine-day gap costs
Take a hypothetical mid-volume consumer goods SKU at a $400M brand. It sells 1,200 units a week at $18 wholesale on a 38% gross margin — so $6.84 of gross margin per unit, and $8,208 of gross margin per week. The replenishment container was rolled at transshipment and then held two days at customs. Net effect: nine days with no stock at the DC.
At-risk demand is 1,200 × (9 ÷ 7) = 1,543 units hitting an empty position. Assume 55% recapture through delayed purchases and in-portfolio substitution, which is generous for a brand and roughly consistent with the consumer-response split above. Permanently lost units = 1,543 × 0.45 = 694.
The gap surfaced on day four, with the two largest retail accounts already short. 1,800 units (720 kg) moved by air to cover their next two order cycles. Note what that air shipment did and did not do: it protected two accounts and the compliance score attached to them. It did not close the DC gap, which ran the full nine days until the delayed container cleared.
Layer 1 — lost gross margin
694 permanently lost units × $6.84
$4,747
Layer 2 — expedite premium
1,800 units / 720 kg air at $4.80/kg vs $0.45/kg ocean
$3,132
Layer 4 — retailer penalty
$27,000 of order value short-shipped × 3%
$810
Recovery labour
≈22 hours across planning, CX and logistics at $65 fully loaded
$1,430
Total
vs. $8,208 of gross margin this SKU earns in a week
$10,119
A nine-day gap cost more than a full week of everything that SKU earns, and that excludes layers 3 and 5 entirely. Now look at what the two largest lines have in common: $4,747 of margin that was already unrecoverable by day four, and $3,132 of air freight bought precisely because it was day four. Both are late-detection costs. Neither is a forecasting cost.
Scaling it to a portfolio — with your numbers, not ours. The arithmetic is (active SKUs × locations × 365) × your stockout rate. Keep the location dimension in: the rate defined below is a SKU-location-day rate, and dropping locations understates a four-DC network by a factor of four. At 2,500 SKUs across 4 DCs and a 2.9% rate, that is 105,850 SKU-location-days out per year.
We are deliberately not going to hand you a blended cost per SKU-location-day. The honest range spans two orders of magnitude between a dead C-item nobody was going to order and a promoted A-item behind a compliance-scored account, and any vendor who gives you one number is giving you a number they made up. Do this instead: take your top 50 SKUs by margin contribution, price out the last real outage on each one exactly the way the ledger above is priced, and use that as your A-class rate. Apply a token figure to the tail and say that you did. The total will survive a CFO asking where it came from, which a benchmark never does.
One stockout arrives at four different desks
That ledger adds to a single figure, but nothing in your business ever presents it that way. The air freight lands in a logistics freight variance. The deduction lands in a finance accrual two months later, against a PO nobody remembers. The lost margin lands in a sales gap-to-plan that gets explained by something else entirely. The substituted volume lands nowhere at all.
Each fragment is small enough locally to absorb without a conversation. So the availability business case gets written by whoever felt the largest single fragment, using only the part they can see, and it understates by construction. Before you argue for budget, find out who else already paid for the same nine days. Assembling the four fragments into one figure is usually the whole difference between a programme that gets funded and one that gets sympathised with.
How to calculate stockout rate
There is no single stockout rate. There are two that matter, they answer different questions, and quoting the wrong one is how availability programs end up optimising something nobody cares about.
stockout rate = stockout SKU-location-days ÷ total SKU-location-days
Worked: 4,200 active SKU-location combinations over a 30-day month = 126,000 SKU-location-days. You recorded 3,780 days at zero available. Stockout rate = 3,780 ÷ 126,000 = 3.0%, so availability is 97.0%. The trap is that this weights a dead C-item exactly the same as your top seller.
Unweighted
3.0%
treats a dead C-item like your top seller
Demand-weighted
6.8%
78,200 of 1,150,000 forecast units — the only one that predicts the revenue hit
Same month, same data. Report both. If the gap between them is large, your outages are concentrated in fast movers, which is a replenishment-frequency problem, not a forecast-accuracy problem.
The commercial denominator
The second formula is line stockout rate = order lines short or unfilled ÷ total order lines — the inverse of line fill rate. Worked: 1,180 short or unfilled lines out of 24,600 = 4.8%, so a 95.2% line fill rate. Units shipped ÷ units ordered is friendlier still, because a mostly-filled line scores well — useful for capacity sizing, misleading as a service metric. Now do the arithmetic that gets skipped.
0.952⁶ = 0.744
If orders average six lines, the share arriving complete is 74.4%. A 95% line fill rate means roughly one order in four arrives incomplete. That is the number your customer experiences, and it is why 95% feels like a good score internally and a bad service level externally.
One discipline point outranks the choice of formula: define the clock, at both ends. A stockout day should start when available-to-promise hits zero against real demand, not when someone notices. It should end when stock is physically pickable, not when the receipt posts. Both lags run in the flattering direction, which is why almost nobody measures them. Measure yours once, on ten events, and apply the correction openly — a stockout rate with a documented clock beats a lower one that quietly starts late and stops early, because only the first survives someone else recalculating it.
The phantom stockout
A phantom stockout is an availability failure where the inventory record shows units on hand but no sellable unit exists at the point of demand. It is the most expensive class of stockout because every automated system downstream trusts the record: replenishment does not trigger, the item stays orderable, the ATP check passes, and the customer or the store associate discovers the truth instead of the planner.
The record says
on-hand 480
The floor says
0 sellable
Every automated system downstream trusts the left-hand number.
Record inaccuracy is worse than most teams assume, but be careful with the number everybody quotes. The most-cited work here — DeHoratius and Raman, examining roughly 370,000 inventory records at one large US retailer — found about 65% of SKU-store records did not match the physical count. That is one retailer, in a store environment, from research published in the 2000s. Do not carry it into a board deck as your figure; someone will check the scope and you will lose the argument on a stat you did not need. Carry the method instead. Cycle-count your top 200 SKU-locations this week. You will have your own defensible number by Friday, and it will not be zero.
Phantoms come from a short and boringly consistent list. Stock is physically present but not accessible: stranded in the backroom, on a pallet in the wrong aisle, behind a mixed-SKU pallet, or in a bulk location nobody replenishes from. Receiving errors: the ASN said 480 cases, 456 arrived, the receipt posted at ASN quantity. Unit-of-measure errors: eaches received as cases, or a pack-size change nobody propagated to the item master. Unrecorded shrink and damage. In-transit inventory booked as on-hand before it is pickable, which is the cleanest way to manufacture a phantom at scale. Stale reservations and expired allocations holding stock hostage against orders that died weeks ago. And quality holds that block a lot in one system without decrementing availability in another.
There is a related loss that belongs here, because it is the same information failure wearing different clothes. For food, beverage and other dated goods, an inbound delay that finally ends the outage but arrives with 40% of remaining shelf-life already burned is a double hit: you paid for the gap, and you will pay again in markdown. Shelf-life burn is not recoverable, which is why the detection date matters even in the cases where the stock eventually shows up.
The strategic point: teams facing an availability problem overwhelmingly reach for a forecasting investment first. If a material share of your outages are phantoms, better forecasting cannot help you, because the forecast is not what failed. Fix the record before you buy a better prediction of demand against a record you do not trust.
Why most stockouts are not forecasting failures
This is the argument you are probably having with your own planning team this week, and it is settleable with arithmetic rather than opinion. The standard safety stock formula for independent demand and lead-time variability is:
SS = Z × √( LT × σd² + d² × σLT² )
d = average daily demand · σd = standard deviation of daily demand · LT = average lead time in days · σLT = standard deviation of lead time in days · Z = service factor (1.28 at 90%, 1.65 at 95%, 2.05 at 98%, 2.33 at 99%)
Take a realistic import SKU. Demand d = 170 units/day with σd = 45. Lead time from supplier PO to pickable stock LT = 32 days with σLT = 6 days. Target 95% cycle service level, so Z = 1.65. The demand-variability term is 32 × 45² = 64,800. The lead-time-variability term is 170² × 6² = 28,900 × 36 = 1,040,400. Total variance 1,105,200, square root 1,051, safety stock = 1.65 × 1,051 = 1,735 units.
Demand variance · 64,800 · 6%
The safety stock on that SKU is almost entirely a buffer against not knowing when the replenishment will actually arrive. Cut σLT from 6 days to 3, holding everything else constant: 28,900 × 9 = 260,100, plus 64,800 = 324,900, square root 570, times 1.65 = 940 units.
At $9 landed cost per unit that is $7,155 of working capital released on one SKU; across 500 A-class SKUs, roughly $3.6M, with no service trade-off whatsoever. So when planning insists the forecast held, they are very likely right — and it is still not an argument against acting, because the requirement was never mostly about demand.
Be precise about what does and does not achieve that reduction, because this is where vendors overclaim. Knowing an ETA earlier does not by itself reduce σLT. Two separate things reduce your exposure. First, measuring σLT per supplier, per lane and per mode lets you size buffers to observed reality instead of to fear, and gives you the evidence to attack the specific lanes and suppliers generating the variance. Second, seeing the deviation early does not change the physics of the late container, but it converts a stockout into a choice — and the cost of that choice decays fast.
That decay is the whole point. Rewind the same nine-day gap and price the options by when you found out. Day minus twelve, while the container was still pre-gate: re-sequence to an earlier vessel or a faster service. A few hundred dollars of rebooking, and no gap at all. Day minus five: a partial air split to protect the two compliance-scored accounts — roughly the $3,132 above, and the gap still runs at the DC. Day minus one: domestic expedite from whatever node holds surplus, at 1.5 to 3 times linehaul, and the gap runs anyway. Day zero: the full stack, plus a conversation with the retailer's buyer.
Nobody's forecast was wrong in any of those four scenarios. The input that changed the cost by an order of magnitude was the date the information arrived. And that gets sharper, not softer, in Q4 — peak is when the option set is thinnest, the freight market is tightest, and the supply chain org gets graded. Flat annualised arithmetic quietly assumes risk is uniform across the year. It is not.
The closing window
Every recovery option needs a minimum amount of notice. Miss its window and it is gone — the option set only ever shrinks.
Re-sequence the ocean booking
Off the table once: cargo is gated in at origin
Rebook the full replenishment ocean to air
Off the table once: cargo is gated in, or packaging is not air-ready
Partial air split to protect key accounts
Off the table once: the supplier cannot split the lot
Inter-DC or inter-store transfer
Off the table once: no node holds surplus
Substitute SKU or alternate pack
Off the table once: the customer will not accept substitution
Re-promise or reschedule with the customer
Off the table once: the retailer order cutoff has passed
Domestic expedite (team drivers, dedicated)
Off the table once: capacity tightens in the market
Nothing
Off the table once: n/a — this is what is left
Read it right to left: every day of notice you lose closes one more row.
Cost multiples are typical ranges for reference, not quotes — rebuild them with your own lane rates.
The ledger in the worked example is just this ladder read at day four. Nothing about the container changed; only which rows were still open when somebody looked.
See your inbound exposure on a 30-min callThe outages that cost the most are the ones nobody escalated
Every team can name its worst stockout of the year. That one got a post-mortem, a named owner and a corrective action — and it is almost never where the money went. The money is in the tail: two- and three-day gaps on mid-velocity SKUs, each one too small to trigger an escalation, none of them ever looked at as a set.
So pull last quarter's outages as a list rather than as a set of memories, and rank them by margin at risk instead of by how loud each one was. That ranking rarely matches the one in your head, and the gap between the two is the part of the problem that has never had an owner.
How to prevent stockouts: six levers, ordered by payback
Ordered deliberately. The cheapest levers are process, not software, and they come first because they change what the later ones are worth.
1. Fix the record before you fix the forecast
Cycle count by velocity class, not on a flat calendar: A items monthly, B quarterly, C annually, plus event-triggered counts on every negative-on-hand and every zero-sales-with-stock flag. Nothing downstream works on a record you cannot trust, and this lever costs process discipline rather than capital.
2. Run the phantom exception reports weekly
Three rules find most of your phantom population at almost no cost. Assign every flag an owner and a 48-hour clock, or the report becomes wallpaper inside a month.
3. Buffer against the variance that actually dominates
Decompose safety stock into its demand and lead-time terms per SKU, then size to whichever term is larger. Do not take the 94% above as your number — it is a function of that SKU's 32-day lead time and 6-day sigma, and a domestic five-day replenishment produces the opposite answer. Run the decomposition on twenty of your own A-items. Import-heavy portfolios usually come back lead-time-dominated; short-lead domestic portfolios usually do not. Which one you are decides whether the next dollar belongs in forecast tuning or in supplier and lane reliability, and it is a two-hour exercise to find out. The cost side of the same discipline is in our guide to reducing supply chain costs.
4. Set service levels by SKU, not by policy
A single 98% target across the portfolio overspends on the tail and underprotects the head. Segment by margin contribution and by compliance exposure — a SKU sitting behind an OTIF-scored retail account carries penalty risk a direct-to-consumer SKU does not, and should carry a higher Z.
5. Watch inbound with the same intensity you watch on-hand
Days of cover is a function of two numbers, and most teams monitor one continuously and the other monthly. The signal that predicts next month's stockout is not today's on-hand — it is the gap between the promised arrival date and the actual one, on POs still in transit. That is what inventory visibility across nodes and in-transit stock is for.
6. Give every at-risk position an owner and a deadline
Detection changes nothing on its own. The closing-window ladder above is only useful if someone is accountable for making the call before the window shuts. An at-risk SKU with no named owner defaults to the most expensive option available — usually air freight, and sometimes nothing at all.
What to do Monday morning
Those outputs tell you whether you have a forecasting problem, a record problem, or an inbound visibility problem. They are three different budgets, and most companies fund the wrong one.
Where Orkestra fits, and where it does not
Most of what is above is work you do with the systems you already own. Orkestra is relevant to exactly one part of it: the gap between when an inbound replenishment goes off plan and when your team finds out.
Orkestra is an orchestration and visibility layer that sits over your existing ERP, TMS and WMS and unifies them. No rip and replace. For availability specifically, three things change.
Inventory visibility reconciles on-hand, in-transit and open purchase commitment into one live record, at the grain a replenishment decision is actually made: client, warehouse, article, pack configuration, forward cover. So days of cover reflects what is arriving, not what a PO once promised. The same record carries out-of-stock lineage — when a position went to zero, and when it is coming back, at DC and at store.
The Exception Monitoring Agent watches inbound continuously and raises the deviation the moment a carrier or supplier feed shows it, rather than the moment someone opens a report. Be precise about the division of labour, because this is where vendors blur things: the agent detects the deviation, and the forward-cover view is what tells you which deviations matter. Neither one moves the container. What they change is which column of the closing-window ladder you are still standing in when you find out.
And because connected inbound movements are captured against their promised dates, the analytics layer gives you measured lead-time variability by supplier, by lane and by mode. That is the σLT the safety stock formula above needs, and most teams are currently estimating it.
One published deployment, scoped honestly: DBW Advanced Fiber Technologies cut total supply chain costs 18% after replacing a spreadsheet-run, multi-continent operation with one platform — with Orkestra also running their North American logistics as their 4PL. Read that as a full-scope engagement result, not a visibility-module result, and not an availability result. We do not have a published stockout-rate number, and would rather say so than borrow one.
It will not tell you how many units to buy. It will not fix an inaccurate inventory record, though the exception reporting will help you find them. If your stockouts are genuinely driven by forecast error or by physical count accuracy, the fix belongs in your planning and warehouse processes, not here. What Orkestra addresses is the class of stockout where the replenishment was late, the information existed somewhere in a carrier feed or a supplier confirmation, and nobody saw it while the cheap options were still open.
Stockout questions, answered
Levitt Safety moved 1.75 million units of critical PPE across two continents during a global health crisis with zero shipment delays.
“1.75 million masks and face shields arrived on time with no delays.”— Levitt Safety, Healthcare & PPE
