Skip to content
stokrio
All guides
Reports

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 sold

Always 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 usedAverage inventoryTurnover (COGS $600,000)DIO
Start and end only$100,0006.061 days
Twelve month-ends$150,0004.091 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 AProduct BProduct 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
Turnover6.00.612.0
DIO61 days608 days30 days
GMROI4.01.44.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.0

This 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.

Frequently asked questions

What is GMROI?
Gross margin return on inventory: gross margin divided by average inventory at cost. A GMROI of 3 means each dollar of inventory at cost earned three dollars of gross margin over the period.
How do I convert turnover into days of inventory?
Divide the number of days in the period by turnover. Annual turnover of 5 means about 365 divided by 5, or 73 days of inventory on average.
Should average inventory be at cost or retail?
At cost. Turnover uses cost of goods sold and GMROI uses gross margin, both of which compare properly only against inventory valued at cost.
Why does my turnover look great for products that keep stocking out?
Stockouts reduce average inventory, which raises turnover. Read turnover alongside in-stock rate so high turnover caused by empty shelves is not mistaken for efficiency.

See Stokrio with your own data

Create a workspace in minutes. Connect Shopify or start with the API.