All guides

By September 6, 20268 min read

Inventory Turnover Ratio: Formula and Worked Examples

The inventory turnover formula, the two numerators people argue about, and how to build average inventory from Shopify data, worked on a real catalogue.

Two people can calculate inventory turnover on the same store, in the same week, from the same data, and come back with 4.9 and 13.7. Neither has made an arithmetic mistake. One divided cost by cost. The other divided retail sales by inventory valued at cost, which quietly multiplies the answer by the store's markup.

That is the whole reason this metric confuses people, and it is why "is my turnover good?" is usually unanswerable as asked. This post is the calculation itself: which numerator, how to build the denominator out of Shopify data, and what the finished number is worth. For where turnover sits among the other numbers worth watching, start with the Shopify inventory metrics to track guide, which this post sits underneath.

What turnover measures

Inventory turnover counts how many times you sold and replaced your average stock holding over a period, normally a year. A turnover of 6 means the average shelf emptied and refilled six times. It is a speed measure, and its usefulness comes from the fact that both failure modes show up in it: buy too much and it falls, buy too little and it climbs while your stockouts climb with it.

Everything difficult about turnover is in the inputs, not the division.

The formula

Two conventions are both standard practice, and they are not interchangeable.

At cost: Inventory turnover = COGS ÷ average inventory at cost
At retail: Inventory turnover = Net sales ÷ average inventory at selling price

Average inventory, in its conventional form, is beginning inventory plus ending inventory divided by two. The standard definition adds that averaging monthly values "will provide a much more representative turn figure", which matters more than it sounds and gets its own section below.

A third, unit-based variant also circulates: units sold divided by average units on hand. It is a legitimate convention, not a tiebreaker between the other two. It has the advantage of removing valuation from the question entirely, and the disadvantage that you cannot aggregate it across products that cost different amounts.

Which numerator to use

The rule is that both halves of the fraction share a basis. Cost over cost, or retail over retail. The number that gets published in error is net sales over average inventory at cost, which is not a convention at all: it inflates turnover by roughly your markup multiple and cannot be compared to anything, including your own figure from last year if you calculated that one properly.

Pick a basis, apply it to both halves, and write down which one you used. Half the turnover arguments on the internet are two people using different bases.

For a single SKU with one markup, the at-cost and at-retail conventions land on the same ratio, because the markup cancels. Across a whole catalogue they do not, and the reason is worth understanding: valuing inventory at retail weights your high-markup lines more heavily in the denominator than valuing it at cost does. If your high-markup lines are also your slow movers, the retail-basis figure comes out lower. The worked example below shows exactly that happening.

Practical default for a Shopify store: calculate at cost. Your cost per unit is a field you already maintain, your Shopify reports can give you units sold, and the at-cost convention is the one your accountant and any finance-side reader will assume.

Getting average inventory from Shopify data

Shopify shows you stock levels now. It does not keep a valuation history you can average across a year, which means the denominator is the part of this calculation you have to construct yourself.

Here is why a single snapshot fails. Take "Cedar & Fig, 250g" from the site's running example: 5 units a day, $7 cost, $18 retail, ordered up to 240 units whenever stock falls to its reorder point of 90. Stock never sits still. It slides from 240 down to 90 over roughly a month, jumps back to 240 the day a delivery lands, and repeats. The true average across the cycle is 165 units, or $1,155 at cost.

Why one stock snapshot is the wrong denominatorA single SKU's stock level drawn across a run of six order cycles. Stock falls in a straight line from two hundred forty units down to ninety units, then jumps vertically back to two hundred forty when the delivery arrives, and the pattern repeats. A dashed horizontal line at one hundred sixty-five units marks the true average across the whole span, sitting midway between the two extremes. Two points are marked on the sawtooth: the top of one refill, where a snapshot taken on delivery day would read two hundred forty units, and the bottom of a later cycle, where a snapshot taken the day before a delivery would read ninety. Both readings are real stock levels and both are wrong as an average, which is why a turnover denominator built from one snapshot can be off by nearly half in either direction.One SKU, three possible denominatorsCedar & Fig, 250g: stock cycling between 90 and 240 unitscount today: 240count tomorrow: 90240just received165true average90reorder pointthe average inventory your turnover denominator needs
Stock spends almost no time at its average. That is the problem with valuing inventory on whichever day you happened to run the report.

Value that SKU on delivery day and you get 240 units, $1,680 at cost. Its turnover then reads 12,775 ÷ 1,680, or 7.6, against a true figure of 11.1. The snapshot was not wrong about the stock level. It was wrong as an average, by 45%.

Three workable ways to build the denominator, in order of preference:

  • Record a stock valuation on the same day every month and average the twelve. This is the version the standard definition recommends, and a monthly calendar reminder is the whole implementation.
  • Use beginning plus ending divided by two, taking both readings at the same point in the ordering cycle so the bias at least cancels.
  • If a SKU cycles predictably between a reorder point and a target level, the midpoint of those two is a defensible estimate. For Cedar & Fig that is 90 plus 240, halved, giving 165.

Whichever you pick, use the same method next period. A turnover figure compared against itself over time is worth far more than one compared against a stranger's.

Worked example

All figures here are illustrative, chosen to be checkable rather than measured from any real store.

One SKU. Cedar & Fig, 250g sells 5 units a day, so 1,825 units a year. At $7 cost, that is $12,775 of COGS. Average inventory is 165 units, or $1,155 at cost.

$12,775

annual COGS, 1,825 units at $7

$1,155

average inventory at cost, 165 units

11.1

turnover at cost

12,775 ÷ 1,155 = 11.06. On the retail basis the same SKU gives 32,850 of net sales (1,825 at $18) over 2,970 of inventory at selling price (165 at $18), which is also 11.06. One product, one markup, so the basis cancels.

The whole store. Now put that SKU in a three-line catalogue alongside a travel tin ($4 cost, $10 retail, 1,500 units a year, 375 units average on hand) and a brass lantern ($8 cost, $32 retail, 500 units a year, 250 units average on hand).

LineAnnual COGSAvg inventory at costTurnover at cost
Cedar & Fig, 250g$12,775$1,15511.1
Travel tin$6,000$1,5004.0
Brass lantern$4,000$2,0002.0
Store total$22,775$4,6554.9

22,775 ÷ 4,655 = 4.89. Run the same store on the retail basis and net sales come to $63,850 against inventory at selling price of $14,720, giving 4.34. Same store, same period, both conventions applied correctly, and the answers differ by more than a tenth. The lantern is the reason: it is the slowest line and carries the fattest markup, so valuing inventory at retail hands it 54% of the denominator instead of 43%, and it drags the store figure down.

And the mistake from the opening paragraph: net sales of $63,850 over inventory at cost of $4,655 gives 13.72. That is the same store again, and the number is meaningless.

Turnover and days of inventory

Turnover converts directly into a number of days, which is often easier to act on because you can hold it up against a lead time.

Days inventory outstanding (DIO) = 365 ÷ inventory turnover

Cedar & Fig at 11.06 turns gives 33 days. The store at 4.89 gives 75 days. DIO inherits the cost-versus-retail problem wholesale, so a DIO quoted without its basis is as ambiguous as the turnover it came from.

Days inventory outstanding, days of inventory and weeks of supply are the same idea in different units, and Shopify's own admin reports a related but separate figure called days of inventory remaining, which is forward-looking and unit-based rather than a backward-looking financial ratio. Those distinctions belong to the metrics guide, which covers days of inventory properly. This post stops at the conversion.

What turnover doesn't tell you

Turnover has no opinion about margin. The lantern in the example turns twice a year and the travel tin turns four times, and nothing in the ratio tells you the lantern earns $24 of gross margin per unit against the tin's $6.

This is not a stylistic complaint about the metric, it is a documented relationship. Gaur, Fisher and Raman analysed 311 publicly traded US retailers over 1987 to 2000 and found that inventory turnover varies systematically with gross margin, capital intensity and sales surprise, which is why they proposed an adjusted turnover measure rather than comparing the raw figure across firms (Management Science, 51(2), 181 to 194). The scope matters and travels with the finding: publicly traded retailers, ending in 2000, not small DTC ecommerce. What it establishes is the relationship, not a number. A high-margin brand should expect lower turnover than a low-margin one, and comparing the two is a category error.

Which is also the answer to the benchmark question. There is no methodologically sound published turnover benchmark for small Shopify merchants; the figures in circulation come from companies selling inventory software. Compare your store to itself and your categories to each other. For the margin side of the question, GMROI is the metric that joins margin to inventory investment, and it is the natural next read after this one. To judge a single buying decision rather than the whole store, sell-through rate uses a different denominator and answers a different question.

A low turnover figure on its own is a prompt, not a verdict. The follow-up work is identifying which SKUs are actually slow moving, separating fast movers from slow movers so the two get different reorder policies, quantifying how many units are genuinely excess, and deciding what to do about the cash the slow stock is holding.

The arithmetic here is trivial. Keeping the inputs current is the part that quietly stops happening around month three. StockCue reads up to 24 months of your order history and keeps the demand side of these calculations current on every plan including Free; on Growth you can export the underlying figures to CSV if you would rather run the ratio in your own spreadsheet.

Frequently Asked Questions

What is a good inventory turnover ratio?

There is no defensible published benchmark for a small Shopify merchant, because turnover depends on the category and the business model: a fresh-food store and a furniture store cannot share a number. Two comparisons do work. Compare your store to itself, same formula and same period length, against the previous period. Then compare categories inside your own catalogue, which holds your margin structure and your lead times constant in a way no cross-industry figure can.

Should I use COGS or sales for the numerator?

Both conventions are standard. At cost, turnover is COGS divided by average inventory valued at cost, which is the finance and accounting default. At retail, it is net sales divided by average inventory valued at selling price. The error to avoid is mixing them: dividing net sales by inventory valued at cost inflates the ratio by your markup and produces a number that means nothing. Pick one basis, use it on both halves of the fraction, and say which one you used.

How do I calculate average inventory if I only have today's stock level?

One snapshot is the weakest possible denominator, because stock sawtooths between a delivery and a reorder point and today is one arbitrary point on that line. The standard fallback is beginning inventory plus ending inventory divided by two. Averaging monthly values is better still and is what the conventional definition recommends. If you have no history at all, start recording a stock valuation on the same day each month and calculate turnover once you have a few months of them.

Can I calculate turnover for a single product?

Yes, and it is usually more actionable than the whole-store figure. Use that SKU's cost of goods sold for the period as the numerator and its own average inventory at cost as the denominator. A single SKU also removes the mix problem that makes store-level turnover shift when you change basis, since one product has one markup.

STOCKCUE

Turnover is only as current as the sales figures underneath it. StockCue keeps velocity and demand up to date from up to 24 months of your own order history, with forecasting included on every plan including Free.

Install StockCue on Shopify →
Shovon, Software Engineer at Devmerx

Shovon

Software Engineer

Shovon writes about Shopify inventory operations for Devmerx, the studio behind StockCue: Inventory Forecast.

Need help with your Shopify store?

Devmerx builds and optimises Shopify stores for DTC brands. Book a free 20-minute consultation.