Field guide 06

How to Calculate GMROI in 5 Steps

A step-by-step method for calculating gross margin return on investment, including where to pull net sales, cost of goods sold, and average inventory cost from Shopify, Square, and Lightspeed Retail X-Series, plus a full worked example.

GMROI, or gross margin return on investment, equals gross margin dollars divided by average inventory at cost over the same window. Calculate it in five steps: lock the window, pull net sales, subtract cost of goods sold, average inventory at cost, then divide. A GMROI of 1.52 means each dollar of inventory returned $1.52 in gross margin.

Key Takeaways

  • The GMROI formula is gross margin dollars divided by average inventory at cost, measured over one fixed window.
  • The numerator of GMROI takes gross margin dollars; gross margin percentage never belongs there.
  • Average inventory must be valued at cost, because valuing it at retail understates GMROI by the full markup.
  • GMROI equals inventory turns multiplied by margin divided by one minus margin, which makes it self-checking.
  • Shopify, Square, and Lightspeed Retail X-Series report the inputs for GMROI but none report GMROI itself.
  • A GMROI below 1.00 means that inventory produced less gross margin than the cash it consumed.

Every shelf in your store is rented space. You pay for it monthly whether the goods move or sit. GMROI is the receipt that says which shelves paid their rent.

This article covers the mechanics. For what the metric means and how it behaves, read What Is GMROI? A Retailer's Definition.

The Four Numbers You Need Before You Calculate GMROI

GMROI takes four inputs, and all four must describe the same window and the same slice of the store. Net sales, cost of goods sold, beginning inventory at cost, and ending inventory at cost.

Two of the four sit in your sales reporting and two sit in your inventory reporting. Most owners who get GMROI wrong pulled them from windows that didn't match.

InputDefinitionWhere it lives
Net salesGross sales minus discounts and returns, excluding shipping income and sales taxShopify profit reports, Square cost of goods sold report, Lightspeed inventory performance report
Cost of goods soldLanded cost of the units that sold during the windowShopify profit reports (the "cost" column), Square cost of goods sold report, Lightspeed inventory performance report
Beginning inventory at costValue of on-hand stock at cost on the first day of the windowShopify month-end inventory value, Square inventory history, Lightspeed inventory cost column
Ending inventory at costValue of on-hand stock at cost on the last day of the windowSame reports, last day of the window

Where each number lives in Shopify, Square, and Lightspeed Retail X-Series

Shopify computes gross profit for you. Its profit reports carry net quantity, net sales, cost, gross margin, and gross profit as standard columns. Shopify defines gross profit as net sales minus cost.

Shopify's month-end inventory value report gives you the other half. It totals the dollar value of available inventory using the cost per item recorded at the time of sale.

Square puts both halves in one place. The cost of goods sold report, under Reports and then Inventory Reports, shows COGS, total revenue, profit, and profit margin. Square requires Retail Plus or Premium for it.

Lightspeed Retail X-Series covers both halves in its inventory performance report. That report carries gross profit, sell-through rate, days cover, inventory cost, and retail value.

None of the three names GMROI as a metric. Every one of them hands you the parts.

If you'd rather see the number than build it, the free trapped-cash calculator returns it from your own store data.

The 5 Steps to Calculate GMROI

The five steps below run on one illustrative store: a 2,100-square-foot pet supply shop on Square for Retail Plus.

Step 1. Lock the window and pick the unit you're measuring

Choose a fixed measurement window and decide whether you're measuring the whole store, one category, or one SKU. A trailing 12 months smooths seasonality out of both the sales side and the inventory side.

A quarter works for fast consumables. Anything shorter turns GMROI into noise for a store with a seasonal buy.

Worked figure: the pet store locks August 1, 2025 through July 31, 2026, at the whole-store level.

Cash Margin Partners can import supported Square order history where production launch status and workspace eligibility permit. History depth, sync timing, and cost completeness vary, so confirm that a successful import covers the full review window. The integrations page lists supported inputs.

Step 2. Pull net sales for the window

Pull net sales, meaning gross sales minus discounts and returns, for the window you locked in step one. Exclude shipping income and sales tax.

Discounts are the input owners forget. A category that cleared only because you ran 30% off in March has already spent that margin.

Worked figure: the pet store's net sales for the 12 months come to $742,000.

Step 3. Subtract cost of goods sold to get gross margin dollars

Subtract cost of goods sold from net sales to get gross margin dollars, the numerator of GMROI. Cost of goods sold means the landed cost of the units that sold in the window. Purchases that never sold stay out of it.

Gross margin dollars go into the formula. Substituting gross margin percentage is the most common way a GMROI calculation goes wrong.

Worked figure: $742,000 in net sales minus $431,000 in cost of goods sold gives $311,000 in gross margin dollars. That's a 41.9% gross margin.

Cost data quality decides whether this step works at all. Shopify states that "profit is reported only for products and variants that had cost recorded at the time they were sold." An item sold before you filled in its cost drops out of the report entirely.

Square handles the same gap through its missing unit cost view, under Items, then Inventory management, then History. Filter the All Costs dropdown to Missing Cost.

Square applies first in, first out accounting to COGS and inventory value. Backfill the gaps before you trust the gross margin figure.

Step 4. Average your inventory at cost across the same window

Add beginning inventory at cost to ending inventory at cost and divide by two. That two-point average is the standard denominator, and it's adequate for a store with a steady buy.

Averaging 13 month-end snapshots produces a better denominator for a seasonal store. A gift shop that ends July at $80,000 and November at $240,000 gets a distorted two-point GMROI.

Value the inventory at cost. Valuing it at retail inflates the denominator by your full markup.

Worked figure: the pet store opened at $196,000 in inventory at cost and closed at $214,000. Average inventory at cost is $205,000.

Step 5. Divide gross margin dollars by average inventory cost and attach the decision

Divide gross margin dollars by average inventory at cost. The quotient is GMROI, read as gross margin returned per dollar of inventory cost.

Worked figure: $311,000 divided by $205,000 equals 1.52. Every dollar the pet store kept in inventory produced $1.52 in gross margin across the 12 months.

Then attach a decision to it. A GMROI with no decision behind it becomes a number you file once a year. The decision lives at the category level.

Apparel Shows a 54.5% Margin. Apparel Returns 80 Cents on the Dollar.

The pet store's 1.52 hides a category that consumes a third of its inventory cash and returns less than it costs. Splitting the same four inputs across four categories exposes it in one table.

CategoryNet salesCost of goods soldGross margin dollarsGross margin %Average inventory at costGMROI
Food and treats$402,000$281,400$120,60030.0%$62,0001.95
Toys and accessories$148,000$74,000$74,00050.0%$44,0001.68
Apparel and gear$104,000$47,320$56,68054.5%$71,0000.80
Aquatics and habitat$88,000$28,280$59,72067.9%$28,0002.13
Store total$742,000$431,000$311,00041.9%$205,0001.52

Apparel and gear holds 34.6% of the store's inventory cash and produces 18.2% of the gross margin. Turn rate explains the gap.

Apparel's $47,320 in cost of goods sold against $71,000 of average inventory works out to 0.67 turns. The racks cycle once every 18 months.

Food and treats runs the opposite pattern: a 30.0% margin and a GMROI of 1.95. There, $62,000 of inventory supported $281,400 in cost of goods sold, or 4.5 turns.

The owner had been protecting apparel for years because the margin looked strong on every invoice. The margin was strong. The rent on the rack was stronger.

Key Insight: The high-margin category is usually the one to check first

High gross margin and slow movement travel together in independent retail, because owners defend what looks profitable per unit. GMROI catches the combination, and it catches it at the category level or nowhere.

Cash Margin Partners is an inventory cash-recovery practice for independent, owner-operated retailers. CMP shows exactly how much cash is trapped in unsold inventory, then gives a prioritized plan to get it back.

Find your $71,000 line

Create a free CMP workspace and use an eligible production connection or compatible item-level upload. Use the imported sales, cost, and inventory evidence in your category-level GMROI calculation only after the import succeeds with sufficient evidence. There's no credit card and no clock on it.

Common Mistakes at Each Step of the GMROI Calculation

Most GMROI errors inflate the number rather than deflate it, which is the dangerous direction. An inflated GMROI tells you to keep buying.

StepMistakeEffect on GMROIFix
1Sales window and inventory window don't matchUnpredictablePull all four inputs from identical start and end dates
2Using gross sales instead of net salesInflatedSubtract discounts and returns before anything else
3Using gross margin percentage in the numeratorMeaningless resultUse gross margin dollars
3Cost of goods sold missing on items sold without a recorded costInflatedBackfill unit costs, then rerun the window
4Valuing average inventory at retailDeflatedValue at landed cost
4Two-point average on a seasonal storeInflated or deflated by timingAverage 13 month-end snapshots

The mistake that costs the most money

Excluding dead stock from the denominator is the error with the largest dollar consequence. Dead stock means inventory with no verified sales history over the measured window. It belongs in average inventory at cost whether or not it sold a unit.

Owners drop it out because the reporting drops it out. A GMROI report filtered to items with sales silently removes the inventory damaging the ratio.

The pet store's apparel figure reads 0.80 because $19,000 of two-season-old jackets stayed in the denominator. Filtered out, the same category reads 1.09 and survives the next buying meeting. How to Find Dead Stock in Shopify in 7 Steps covers the filter settings.

How to Check Your Work on a GMROI Calculation

GMROI is self-checking, because it has a fixed algebraic relationship to inventory turnover. GMROI equals inventory turns multiplied by gross margin divided by one minus gross margin.

Run that identity against the pet store: 2.10 turns times 0.419 divided by 0.581 gives 1.51. Landing within a rounding step of the store's 1.52 means the four inputs are internally consistent.

A mismatch tells you which side broke. Turns and GMROI share a denominator, so a mismatch points at the numerator. Net sales or cost of goods sold came from a different window.

Three more checks before you act on the number

  1. Reconcile categories to the store. Gross margin dollars and average inventory dollars across every category should equal the store totals. The pet store's four categories sum to $311,000 and $205,000 exactly.
  2. Cross-check the denominator against your books. Average inventory at cost should sit within a few percent of what your accountant carries.
  3. Compare against the national inventory position. The U.S. Census Bureau reported a retail inventories-to-sales ratio of 1.25 for May 2026, with total retail inventories of $832.4 billion.

The fourth check has no formula behind it. If the number didn't change a buy, a markdown, or a reorder quantity, you haven't finished.

How to Set a GMROI Target Without Borrowing Someone Else's Benchmark

Published GMROI benchmarks are close to useless for a single store. They average across vertical, format, and buying terms you don't share. Build the target from your own margin instead.

Rearranged, the turns identity says: turns needed equals your GMROI target divided by margin over one minus margin. That converts an abstract target into an instruction about how fast goods move.

Your gross marginTurns needed for GMROI of 2.00What that means on the floor
30%4.7Roughly 11 weeks of supply on hand
40%3.0Roughly 17 weeks of supply on hand
50%2.0Roughly 26 weeks of supply on hand
55%1.6Roughly 32 weeks of supply on hand
60%1.3Roughly 39 weeks of supply on hand

The pet store's apparel category needs 1.6 turns to hit a GMROI of 2.00 at its 54.5% margin. It runs 0.67, so the gap is a buying problem with a size attached.

Set the target where your rent and payroll require, then work backward. How to Calculate Inventory Turnover in 6 Steps covers the turns side.

Key Data Point: Where retailers go when the shelf stops paying

The Federal Reserve's 2026 Report on Employer Firms found that 60% of small firms applied for financing in the prior 12 months. Among applicants, 56% sought it to cover operating expenses. The survey drew 6,525 responses collected September 3 to November 14, 2025.

What Happens to GMROI After the Spreadsheet

A GMROI spreadsheet decays because it depends on you rebuilding it. Four inputs across four categories is 16 cells a month, and the month you skip is the month a category slides.

Cash Margin Partners can keep source evidence current through read-only connections where production launch status and workspace eligibility permit. Shopify supplies unit cost when available; Square and Lightspeed analyses add costs through CMP's prefilled template. Compatible item-level exports support other systems after column review.

Cash Margin Partners is free and includes inventory cash visibility, slow-moving item identification, and action prioritization. No credit card, no time limit.

The predictive layer can add 30-, 60-, and 90-day cash-at-risk forecasts after a recent successful supported live connection supplies sufficient usable history and cost evidence. Cash-at-risk means the dollar value of inventory CMP forecasts won't sell inside the window.

"I can compute this ratio in a spreadsheet." You can. The harder part is keeping the SKU-level sales, cost, and inventory evidence current enough to trust the result.

Start Here: Your First GMROI Calculation This Week

  1. Today, pull one report. Open your profit or cost of goods sold report for the trailing 12 months. Write down net sales and cost of goods sold.
  2. Today, find your two inventory snapshots. Pull inventory value at cost for the first and last day of that window, then average them.
  3. This week, run the store number, then split it four ways. Rank your categories by inventory dollars and take the top four.
  4. This week, check the identity. Multiply turns by margin over one minus margin and confirm it matches your GMROI.
  5. Before your next buy, act on the worst category. Options run from markdown to bundling to liquidation, and How to Liquidate Excess Inventory in 8 Steps covers the sequence.

Anything with a GMROI under 1.00 for two consecutive windows has stopped being inventory and started being storage. What Is Dead Stock in Retail? A Retailer's Definition covers what that looks like at the SKU level. 8 Ways to Free Up Working Capital Without a Loan covers what to do with the cash.

Frequently Asked Questions

What is the GMROI formula?

The GMROI formula is gross margin dollars divided by average inventory at cost, measured over the same window. Gross margin dollars equal net sales minus cost of goods sold. Average inventory at cost is beginning inventory plus ending inventory divided by two.

What is a good GMROI target for an independent retailer?

A GMROI target should come from your own gross margin and the turn rate your rent and payroll require. GMROI equals inventory turns multiplied by margin divided by one minus margin. At a 50% gross margin, two turns a year produces a GMROI of 2.00.

Should I calculate GMROI on net sales or gross sales?

Calculate GMROI on net sales, meaning gross sales minus discounts and returns, and exclude shipping income and sales tax. Using gross sales inflates gross margin dollars and overstates GMROI. Discount-heavy categories distort worst, because the markdowns that moved the units never reach the numerator.

Can I calculate GMROI by category instead of for the whole store?

Yes, and category-level GMROI is more useful than the store-level number for buying decisions. Run the same five steps per category, using that category's net sales, cost of goods sold, and average inventory at cost. Category figures should reconcile to the store total.

Why is my GMROI below 1.00?

A GMROI below 1.00 means the inventory produced less gross margin than the cash it consumed. Three causes explain nearly all of it: margin too thin, units moving too slowly, or too much stock on hand. Checking inventory turns separates the third cause from the first two.

Do Shopify, Square, or Lightspeed calculate GMROI for me?

None of the three report GMROI as a named metric out of the box. Shopify's profit reports and Square's cost of goods sold report both carry the inputs. Lightspeed Retail X-Series reports gross profit and inventory cost in its inventory performance report.

Run the Five Steps on Your Slowest Category First

The store-level GMROI takes 20 minutes and tells you almost nothing. The category split takes another 20 and tells you which shelf to clear before your next buy lands.

Pull the four inputs for the category holding the most inventory dollars, then run the division. The free CMP calculator gives a directional trapped-cash benchmark from a short questionnaire; create a workspace or use a compatible item-level upload for SKU-level sales, cost, and inventory evidence.

Put the thinking to work

See what your inventory is doing to your cash.

Customer supportGuides with human follow-up

CMP privacy controls

Cookie preferences

Optional technology stays off unless you choose it. You can change your mind here at any time.