Inventory turnover, days of inventory and GMROI, with worked numbers
How to calculate inventory turnover, days inventory outstanding and gross margin return on inventory, why average inventory matters, and how to read them together.
Stokrio Team · · 6 min read
Turnover and GMROI are the two numbers that tell you how hard your inventory is working. Turnover says how often stock sells through; GMROI says how much gross margin each dollar of stock earns. Either one alone can mislead. Together they show which products deserve more of your cash and which deserve less.
Key takeaways
- Inventory turnover = cost of goods sold ÷ average inventory at cost.
- Days inventory outstanding (DIO) = days in the period ÷ turnover. It's turnover expressed as "how many days of stock we hold".
- GMROI = gross margin ÷ average inventory at cost. It's the gross margin earned per dollar of inventory.
- GMROI = (gross margin ÷ COGS) × turnover, so a low-margin product can match a high-margin one by turning faster.
- Calculate average inventory from regular snapshots, not just the start and end of the year. Seasonal brands can be out by a long way otherwise.
The formulas
inventory turnover = cost of goods sold ÷ average inventory at cost
days inventory outstanding = days in period ÷ inventory turnover
GMROI = gross margin ÷ average inventory at cost
gross margin = net sales − cost of goods soldAlways use inventory at cost in the denominator. Mixing cost of goods sold with inventory valued at retail price inflates neither number consistently and makes comparisons meaningless.
A business-level example
A brand's last twelve months:
- Net sales: $1,000,000
- Cost of goods sold (COGS): $600,000
- Gross margin: $1,000,000 − $600,000 = $400,000
- Inventory at cost at the start of the year: $140,000
- Inventory at cost at the end of the year: $100,000
Simple average inventory = ($140,000 + $100,000) ÷ 2 = $120,000.
- Turnover = $600,000 ÷ $120,000 = 5.0 times a year.
- DIO = 365 ÷ 5.0 = 73 days.
- GMROI = $400,000 ÷ $120,000 = 3.33.
Read in plain English: the brand sells through its stock about five times a year, holds roughly 73 days of stock on average, and every $1 of inventory at cost generates $3.33 of gross margin a year.
Why average inventory needs care
The start-and-end average is fine for a business with steady stock levels. It's badly wrong for a seasonal one.
Suppose a gift brand starts and ends the year with $100,000 of stock, but builds up to $300,000 for the end-of-year peak. The simple average is ($100,000 + $100,000) ÷ 2 = $100,000. If you instead average twelve month-end values and they come out at $150,000, the picture changes:
| Average used | Average inventory | Turnover (COGS $600,000) | DIO |
|---|---|---|---|
| Start and end only | $100,000 | 6.0 | 61 days |
| Twelve month-ends | $150,000 | 4.0 | 91 days |
Same business, same year — a 30-day difference in how much stock it appears to hold. Daily snapshots are better still. Whatever you use, use it consistently, and say which method sits behind the number.
Product-level: where the decisions are
Business-level numbers are good for board packs. Decisions happen at product and category level. Three products over a year:
| Product A | Product B | Product C | |
|---|---|---|---|
| Net sales | $100,000 | $50,000 | $40,000 |
| COGS | $60,000 | $15,000 | $30,000 |
| Gross margin | $40,000 | $35,000 | $10,000 |
| Gross margin % | 40% | 70% | 25% |
| Average inventory at cost | $10,000 | $25,000 | $2,500 |
| Turnover | 6.0 | 0.6 | 12.0 |
| DIO | 61 days | 608 days | 30 days |
| GMROI | 4.0 | 1.4 | 4.0 |
The arithmetic:
- A: turnover $60,000 ÷ $10,000 = 6.0; GMROI $40,000 ÷ $10,000 = 4.0.
- B: turnover $15,000 ÷ $25,000 = 0.6; GMROI $35,000 ÷ $25,000 = 1.4.
- C: turnover $30,000 ÷ $2,500 = 12.0; GMROI $10,000 ÷ $2,500 = 4.0.
Product B has by far the best margin percentage and the worst return on inventory. It holds 608 days of stock — well over a year and a half. Product C has the thinnest margin but turns twelve times a year and earns exactly the same return per dollar of inventory as A.
The link between them:
GMROI = (gross margin ÷ COGS) × turnover
A: (40,000 ÷ 60,000) × 6.0 = 0.667 × 6.0 = 4.0
B: (35,000 ÷ 15,000) × 0.6 = 2.333 × 0.6 = 1.4
C: (10,000 ÷ 30,000) × 12.0 = 0.333 × 12.0 = 4.0This is why margin percentage alone is a poor guide to where to put cash. If you have $10,000 to invest in stock, product B is the worst place to put it, despite its 70% margin. The fix for B is almost certainly not a price change: it's holding much less of it. If B's average inventory came down to $5,000 with the same sales, its GMROI would rise to $35,000 ÷ $5,000 = 7.0.
What a "good" number is
There's no universal target. Turnover depends heavily on category, lead time and business model: a brand importing by sea with long lead times will naturally turn slower than one buying weekly from a domestic supplier. Rather than chasing a benchmark, compare:
- Each product against its category.
- Each category against the same period last year.
- Your current number against what your lead times imply. If your supplier lead time is 30 days and you review weekly, holding 200 days of stock means you're buying far more than you need.
A GMROI below 1.0 means a product earns less gross margin in a year than the cash tied up in it. That doesn't always mean "cut it" — it might be a new launch still building stock — but it should always have an explanation.
Ways to raise turnover and GMROI
Order smaller, more often
Average cycle stock is roughly half your order quantity. If a product sells 300 units a month and you order four months at a time (1,200 units), average cycle stock is about 600 units. Order monthly (300 units) and it drops to about 150. At $10 a unit that's $4,500 less inventory for the same sales — although freight, MOQs and price breaks may push back, so cost the trade-off.
Clear the tail
Dead and excess stock sit in average inventory and earn nothing. Clearing $20,000 of dead stock from a business holding $120,000 at cost, with COGS unchanged at $600,000, takes turnover from 5.0 to $600,000 ÷ $100,000 = 6.0.
Shorten and stabilise lead times
Longer and more variable lead times require more safety stock. A supplier that's reliable, even if slightly slower, can need less buffer than a fast but erratic one.
Price and range
Where a product turns slowly with a high margin, test whether a lower price moves it faster. Where it turns quickly with a thin margin, test a price rise. GMROI tells you which lever to try.
Traps to avoid
- Stockouts flatter turnover. An empty shelf has very low average inventory. A product that was out of stock for two months will show great turnover and terrible lost sales. Read turnover next to in-stock rate.
- Partial periods need annualising. A quarter's COGS divided by the quarter's average inventory gives quarterly turnover. Multiply by four to compare with annual figures, and be wary of seasonal quarters.
- Landed cost belongs in COGS and inventory. If freight and duties are left out of inventory value but included in COGS (or the other way round), the ratios drift.
- Be consistent about stock in transit. Include it or exclude it, but do the same every period.
Where Stokrio fits
Stokrio's inventory reports calculate turnover, days of inventory and GMROI per product and category, using average inventory from daily end-of-day stock snapshots where available. They sit alongside in-stock rate, excess and dead stock, so a high turnover caused by stockouts is easy to spot.