K-06
Days of Supply (DOS / DIO)
How long would today's stock last — against trailing history or the forward plan, in units or dollars, and what do you report when demand is zero?
There is a reference build of this metric: the Inventory Health & Working Capital dashboard in the showcase runs this definition over frozen, simulated data — not a live client system.
Definitions and source tables below are current to the date above — verify against current SAP, Oracle, Microsoft, Infor, and Databricks documentation before you build.
What days of supply measures
Days of supply is stock divided by a demand rate: how long what you hold would last at the pace you are consuming it. Weeks of supply and days on hand are the same ratio in different units, and days of inventory outstanding is the same ratio in dollars — the inventory leg of the cash-to-cash cycle.
The demand basis is the whole argument. Trailing days of supply divides by what actually shipped over some past window; forward coverage divides by what the plan says will ship. They agree in a steady-state portfolio and disagree exactly when it matters — on a ramp, into a season, on an item approaching end of life. Trailing coverage on a product about to be discontinued looks comfortable right up to the moment the demand stops.
The second thing to settle before publishing is what happens where demand is zero. Mathematically the answer is infinite; operationally those items are the most interesting inventory in the portfolio. Letting them drop out of the number, or letting them run to infinity inside an average, are both ways of not looking at them.
Also answers to DOS · DOH · Days on Hand · DIO · Weeks of Supply · Forward Coverage
The decision switches
Three switches. The first one has to be labeled on every chart, because trailing and forward coverage answer different questions and look identical.
| Switch | Settings | Practice default |
|---|---|---|
| Demand basis | Trailing average · Forward forecast | Trailing for scorekeeping, forward for steering — and label which one every chart is. |
| Units vs value | Units · Value | Both have a place; never mix them inside a single view. |
| Zero-demand items | Infinite or excluded · Capped and reported separately | Cap at the horizon and report the zero-demand bucket as its own count — that bucket is the excess and obsolete feed. |
Demand basis
- dependsTrailing average — stable and defensible, and structurally blind to ramps and end-of-life
- dependsForward forecast — what planners actually steer by — and it inherits every bit of forecast error
Practice default Trailing for scorekeeping, forward for steering — and label which one every chart is.
Units vs value
- dependsUnits — the operational read — how many days the warehouse can keep shipping
- dependsValue — days of inventory outstanding: comparable across items and legible to finance
Practice default Both have a place; never mix them inside a single view.
Zero-demand items
- raises the scoreInfinite or excluded — silently drops the worst inventory in the portfolio out of the number
- dependsCapped and reported separately — keeps the items visible as their own population instead of as an outlier
Practice default Cap at the horizon and report the zero-demand bucket as its own count — that bucket is the excess and obsolete feed.
Formula & grain
DOS = on-hand quantity ÷ average daily demand (declared window)
- Numerator
- Current on-hand at the declared scope
- Denominator
- Demand per day over the declared trailing window or forward horizon
- Grain
- Item × location — portfolio coverage from pooled numerator and denominator, never the average of item-level coverage
- Note
- Days of inventory outstanding is the same ratio in value: average inventory value ÷ COGS per day.
Common pitfalls
- Averaging coverage across items — The classic never-average-a-ratio failure. A mean of item-level days of supply is dominated by whichever items happen to have thin demand; pool the stock and pool the demand, then divide.
- Infinite days — Items with no demand either blow up the average or get quietly excluded, and both versions lie. Cap the value, and publish the count of capped items beside the number.
- Trailing and forward switched mid-deck — Two slides, two demand bases, one metric name — and an audience that reasonably assumes they are comparing like with like. Label the basis on the chart itself.
- Window sensitivity — A 30-day trailing window and a 90-day trailing window are different metrics that share a name, and the difference is largest exactly where demand is changing. Print the window.
- Coverage read off the planning grid — Coverage read off a planning grid carries two reading rules. The projected-balance row is a closing balance per bucket — a LAST, never a sum down the time axis. Bucket dates are a vendor rule: Oracle dates supply and demand to a non-daily bucket's last working day, firm, implement and input-data dates exempt, so finer coverage is precision the grid does not carry — an inference from that rule, not the grid: SAP's Advanced MD04 dates elements individually. Name your system's bucketing rule before quoting coverage finer than the bucket.
Source tables — SAP
Source tables — JD Edwards
Source tables — Dynamics 365
InventSum is on-hand and InventTrans supplies issues for a trailing rate; ForecastSales is the forward basis. Pin the company, and reach site or warehouse through InventDim.
Source tables — Infor M3
Source tables — Oracle EBS
Sum the on-hand quantity detail before joining anything to it — the table is finer-grained than the item and organization it is usually treated as. Material transactions give the trailing rate; forecast dates give the forward one.
Source tables — Oracle Fusion
These carry the stock side and the trailing demand rate. A forward basis has to come from planning extracts landed beside them, so a forward coverage view in Fusion depends on two extract paths staying in step.
Store the components, not the ratio
Every switch above is a different way of reading the same underlying facts, so the components — quantities, dates, values, flags — are what belongs in the gold layer, never the finished percentage. Bronze keeps the source tables as extracted, silver resolves the encodings once, and gold carries a component-level fact that each variant of Days of Supply (DOS / DIO) reads as a SELECT — the pattern worked through in full in the OTIF entry's landing pattern.