Inventory Turnover Ratio: Formula and Calculator
Inventory turnover ratio is your cost of goods sold for a period divided by your average inventory at cost over the same period. $600,000 of COGS on an average of $150,000 of stock is 4 turns a year, so on average a unit sits about 91 days before it sells (365 ÷ 4).
It runs in your browser, so I never see your numbers.
Inventory turnover ratio
4.0
turns a year
Days to sell
91
365 ÷ turnover
Average inventory
150,000
(first day + last day) ÷ 2
The go-live question that made me care about days to sell
An importer I onboarded this summer had no real landed cost for anything on his shelves. For years he’d added one flat percentage to the supplier price and called it freight and duty. He knew it was off, sometimes a point or two either way, and he kept it because it was a round number.
I told him to use it. What I said was: “your cogs are going to be… not true the first year, but once that inventory turns over, you know, then it’ll be accurate.”
Four days earlier I’d argued the same thing on another go-live call, with a consultant who fixes e-commerce accounting for a living. I’d asked whether rebuilding historical cost was worth the effort, since “within 12 months it’s all going to roll out assuming your inventory turns over at like a decent rate. And then it’s like a lot of work for like something that’s going to be temporary in nature anyway.”
He disagreed. For most of his clients he goes back and rebuilds cost month by month from whatever data they have: “That happens on 75, 80% of my projects.” If a lender or a buyer is going to read this year’s financials before the old stock has sold, an estimate sitting in the opening stock is a problem now, not in a year.
Days to sell is what settles it, one SKU at a time. SKU.io costs stock first in, first out, so the opening units sell first and take the estimated cost with them. If the go-live count was a normal amount of stock for that SKU, one turning 4 times a year has sold through it in about 91 days. One turning 0.3 times takes more than three years, and some of those units never sell at all, which means the estimate sits there until somebody writes the stock down. On weighted average cost it never fully leaves; each new receipt just dilutes it.
So I’d get turnover per SKU from the old system’s sales (the new one has no history yet), sort by days to sell, and correct the opening cost by hand only where it’s measured in years. And if a lender is reading this year’s P&L, pay the consultant.
Count the stock you own, wherever it is
Your COGS includes every sale from every location. Your inventory value often doesn’t. If it comes from the system that runs your own building, it can miss what’s at Amazon FBA, at a 3PL, or at a second warehouse with its own count, and a denominator that’s too small makes turnover read high.
My own Chinese supplier never sends a formal invoice, so the day I place the PO I enter a bill dated that day and pay against it. At that point the goods aren’t even on a boat. Whatever that bill does in my books, those units aren’t stock I can sell, and they don’t belong in the inventory figure I divide by. Once the order ships, whether it counts as your inventory depends on the terms in your contract. If your books record goods at sea, take inventory from the balance sheet so this ratio counts them the same way. If they only book stock on receipt, use that, and keep doing it the same way every period.
How often you buy sets a ceiling
I order from that supplier a few times a year. Buying in a few big lots caps how high turnover can go.
Say each order lands just as the last one sells out, and it sells down evenly. You hold about half an order on average, so you get roughly two turns per buy: near 4 a year if you buy twice, near 8 if you buy four times. Safety stock and a seasonal lump push you below that, and so does the time at sea if your books count goods in transit. A factory that ships each booking in two drops, spread across the cycle, lifts the ceiling, because on average you’re holding a quarter of the booking instead of half. Your deposits still go out against the whole booking. Fill in buys per year in the calculator and it prints the ceiling under your result.
That’s why a “good turnover is 4 to 6” line tells me nothing until I know how often someone can buy. If you buy from a factory twice a year, 3.5 is close to as good as it gets. If a distributor down the road restocks you every week, 3.5 means roughly 100 days of stock you could be holding a fraction of.
The average hides the SKU that isn’t moving
A business-wide 4 can be SKUs turning 12 mixed with SKUs that haven’t sold since spring. My office manager used to keep a days-of-cover spreadsheet for every product. We used the top of it to reorder and the bottom of it to pick what to mark down. It never accounted for returns. When another operator told me he works out cover from sales net of returns, since returned units go back on the shelf, I realized I’d never even considered it, probably because our return rate was low enough that nobody noticed.
For the per-SKU version without the spreadsheet, there’s an inventory KPI calculator in SKU.io Ops Calculators, our free connector for Claude and ChatGPT. Give it a stock list with unit costs and your order lines. It returns turnover, days of inventory, sell-through and stock value for each SKU, using the same method as the calculator above, and marks anything under 2 turns a year as slow unless you set a different line.
Inside SKU.io, the inventory planning report has a turnover column: units sold in the last 180 days, doubled, over units on hand today (how it’s worked out). It’s in units and changes the day a PO is received, which suits buying decisions. A board pack or a loan covenant wants the at-cost average.
The ratio also says nothing about margin. A SKU turning 12 times at a 6% margin earns far less on the cash tied up in it than one turning 3 times at 50%, and turnover ignores when you paid the supplier and when the marketplace paid you. GMROI, gross margin over average inventory at cost, deals with margin. For timing you need the return on the cash itself, which I wrote up in IRR: the true profitability test.
The formula, written out
- Average inventory = (inventory at cost on the first day + inventory at cost on the last day) ÷ 2. For seasonal stock, average the opening value and each month-end.
- Inventory turnover ratio = COGS for the period ÷ average inventory.
- Days to sell = 365 ÷ inventory turnover ratio. Accountants call this days inventory outstanding, and there’s a days inventory outstanding calculator in our free tools that starts from that side.
Keep both sides at cost; sales over inventory at cost doubles the ratio at a 50% gross margin. Annualize a partial period: 1.2 turns in a quarter is about 4.9 a year (1.2 × 365 ÷ 90). The calculator does that when you pick Quarter or Month.
If you sell on one channel out of one warehouse, you don’t need us for this. A spreadsheet once a quarter and the calculator above will do, and inFlow or Zoho Inventory is plenty past that. The trouble starts when the stock is in three places and the sales come through four channels, because then nobody’s inventory figure matches anybody else’s. That’s the case I built SKU.io for. Book a demo and bring a stock list and 90 days of sales.