Days Inventory Outstanding (DIO): Formula, Worked Example, and How to Improve It

Days inventory outstanding (DIO) measures how many days, on average, your stock sits before you sell it. If your DIO is 60, it takes roughly two months to turn a typical unit into a sale. A lower number usually means less cash tied up on the shelf and less risk of writing off dead stock. This guide gives you the formula, a worked example, real benchmarks, and the specific levers that pull the number down without starving your shelves.
What days inventory outstanding actually measures
DIO answers one question: how long does a dollar of inventory stay as inventory before it becomes cost of goods sold? It's an efficiency and liquidity signal, not a vanity metric. Every day of DIO is a day your money is locked in product instead of sitting in the bank or funding growth.
You'll see it under a few names. Days inventory outstanding, days sales of inventory (DSI), days in inventory, and inventory days all describe the same idea. The formula is identical. Don't let a vendor's rebranding confuse you.
DIO matters most when you're carrying real stock: retail, distribution, manufacturing, ecommerce, food. If you're a services business with almost no inventory, the number is close to meaningless. For everyone else, it's one of the cleanest reads on how well your buying and selling are in sync.
The DIO formula
Here's the standard formula:
DIO = (Average Inventory / Cost of Goods Sold) × Number of Days in Period
For a full year, the number of days is 365. For a quarter, use 90 or 91. A few notes that trip people up:
- Use cost, not revenue. Both inventory and COGS should be at cost. Mixing a retail-priced sales figure with cost-priced inventory inflates the result.
- Average inventory = (beginning inventory + ending inventory) / 2. If your stock swings hard by season, average several month-end balances instead of just two points.
- Match the period. If COGS covers a full year, the days figure is 365. If it covers one month, use ~30.
You can also get there through inventory turnover, since the two are inverses:
Inventory Turnover = COGS / Average Inventory
DIO = 365 / Inventory Turnover
A turnover of 6 means a DIO of about 61 days. A turnover of 12 means about 30 days. Same information, different framing.
A worked example
Say you run a mid-size electronics distributor. Over the last year:
- Beginning inventory: $420,000
- Ending inventory: $580,000
- COGS for the year: $3,000,000
Step 1, average inventory:
(420,000 + 580,000) / 2 = 500,000
Step 2, plug into the formula:
DIO = (500,000 / 3,000,000) × 365 = 60.8 days
So on average it takes you about 61 days to sell through your inventory. If a competitor in the same category runs 40 days, they're recycling cash roughly 50% faster than you and carrying less exposure to price drops and obsolescence. That gap is worth chasing.
Run the same math per product category, not just company-wide. A blended 61 days can hide a fast-moving line at 20 days propping up a slow line quietly parked at 140.
DIO vs inventory turnover vs the cash conversion cycle
DIO rarely lives alone. It's one leg of the cash conversion cycle (CCC), which tracks how long cash is tied up across the whole operating loop:
Cash Conversion Cycle = DIO + DSO − DPO
Here's how the pieces relate:
| Metric | What it measures | Direction you usually want |
|---|---|---|
| DIO (days inventory outstanding) | Days stock sits before sale | Lower |
| DSO (days sales outstanding) | Days to collect after a sale | Lower |
| DPO (days payable outstanding) | Days you take to pay suppliers | Higher (within terms) |
| CCC (cash conversion cycle) | Net days cash is tied up | Lower |
Worked quickly: DIO of 61, DSO of 35, DPO of 45 gives a CCC of 51 days. Cut DIO to 40 and, holding the rest steady, your CCC drops to 30. That's 21 fewer days of working capital locked in the business, which is real cash you can redeploy.
The takeaway: don't optimize DIO in isolation. A savage DIO cut that causes stockouts will torch revenue, and squeezing suppliers on DPO can cost you priority or better pricing. Balance the three.
What counts as a good DIO
There's no universal target, because a grocer and a jeweler live in different worlds. Rough industry ranges:
- Grocery and perishables: often 10 to 30 days. Product spoils, so fast is survival.
- General retail and ecommerce: commonly 30 to 60 days.
- Electronics and apparel: frequently 45 to 90 days, with seasonality.
- Industrial and heavy equipment: 90 to 180+ days is normal because units are big and slow.
Compare yourself to your own trend and to direct competitors, not to a cross-industry average. A rising DIO quarter over quarter is a warning sign worth investigating even if the absolute number looks fine.
How to lower your DIO
The number moves when either inventory shrinks or sales speed up. Concrete levers, most to least controllable:
- Kill dead and slow-moving SKUs. Identify anything that hasn't sold in 90+ days and discount, bundle, or liquidate it. Dead stock inflates average inventory and never leaves on its own.
- Tighten reorder points. Order smaller and more often rather than big infrequent batches. This directly lowers average inventory without risking service levels if your lead times are reliable.
- Improve demand forecasting. Base reorder quantities on actual sell-through, not gut feel or last year's flat number.
- Fix the data first. You can't manage DIO you can't see. Accurate, real-time inventory tracking across every location is the prerequisite for every other step.
- Automate the read. Wire DIO into a dashboard so it updates as sales post, instead of recalculating by hand each month.
That last point is where tooling earns its keep. If your stock counts, sales history, and COGS live in one system with an API, you can compute DIO continuously and alert on drift the moment it starts.
Inventoros handles the foundation here out of the box. It's a free, open-source, self-hosted inventory system with multi-location stock tracking and full sales history, so the raw numbers behind your DIO stay accurate and current. Pull them into your own reporting through the REST and GraphQL API, or read the documentation to wire up webhooks and schedule the calculation. You own the data and the server, with no per-seat fee metering how often you check.
FAQ
What is a good days inventory outstanding number?
It depends entirely on your industry. Grocers often run 10 to 30 days, general retail 30 to 60, and heavy equipment 90 to 180 or more. The useful comparison is against your own historical trend and direct competitors, not a generic benchmark. A stable or falling DIO alongside healthy service levels is the real goal.
What's the difference between DIO and inventory turnover?
They're two views of the same thing. Inventory turnover counts how many times you sell through your average stock in a year, while DIO converts that into days. The link is DIO = 365 / turnover. A turnover of 8 equals a DIO of about 46 days. Use turnover for a high-level ratio and DIO when you want a number expressed in days.
Should I use average inventory or ending inventory in the DIO formula?
Average inventory is more accurate because it smooths out swings, especially with seasonal stock. Use (beginning + ending) / 2 at minimum, or average several month-end balances if your levels move a lot. Ending inventory alone is acceptable for a quick estimate but can distort the result if you measured on an unusually high or low day.
Can DIO be too low?
Yes. A very low DIO can mean you're running so lean that you hit stockouts, miss sales, and disappoint customers. It can also signal panic discounting that's dumping inventory below healthy margin. The aim isn't the lowest possible number, it's the lowest number you can hold while still fulfilling demand reliably.