Retail Planby RetailNorthstar

How to calculate GMROI

GMROI (gross margin return on inventory) is gross margin dollars divided by average inventory at cost: the gross margin earned over a period for every dollar held in inventory on average. Net sales less cost of goods sold is the numerator; the opening balance and every month-end stock position, valued at cost and averaged, is the denominator.

The division is the easy part. Where markdowns, shrink and freight sit, how many points go into the average, and how a season becomes a year move the answer more. Run your own numbers in the GMROI calculator; the example season comes from how to set a sales plan and how to plan receipt flow; the margin side in full is how to build a margin bridge.

All worked figures are illustrative — not benchmarks, and not drawn from any brand.

The short version
Divide gross margin dollars — net sales after markdowns, less cost of goods sold including shrink — by average inventory at cost for the same period, averaged from the opening balance and every month-end rather than two endpoints. Annualize from twelve months, never by multiplying. Split the result into margin and turn before acting, and use it forward: as a ceiling on planned stock, and as the test for where the next dollar of open-to-buy goes.
Definition — GMROI (gross margin return on inventory)
GMROI is the gross margin dollars earned per dollar of average inventory held at cost over a period. It moves when margin or inventory moves, and a reading means little without its period, its inventory basis and the number of points in its average.
GMROI = gross margin $ ÷ average inventory at cost = (gross margin ÷ cost of goods sold) × inventory turn
Used by: Planners, buyers, category owners and finance — as a plan output pre-season, against plan in-season, and on a trailing twelve months
Related: Gross margin, inventory turnover, initial markup, open-to-buy, GMROF

One ratio, and the two identities that explain it

Both inputs cover the same period, categories and channels. Because gross margin is net sales less cost of goods, the ratio has two more useful forms:

The second form splits GMROI into margin rate and sales-to-stock; the third into the margin earned on each dollar of cost sold and inventory turn, cost of goods sold over average inventory at cost. Every movement in GMROI is a movement in margin, in turn, or in both, and the decomposition says which before anyone argues about the headline. Above 1.0, gross margin exceeds the average inventory investment — arithmetic, not a target. The GMROI calculator runs the headline form; the inventory turnover calculator runs the turn half.

Six steps, in order

Steps two to four are arithmetic. Steps one, five and six decide whether the arithmetic means anything — the wrong period, a multiplied year or no plan beside it gives a correct division of the wrong numbers.

  1. 1

    Pick the period, and hold both inputs to it

    Decide whether the ratio covers a season, a quarter or a trailing twelve months. Margin and inventory must describe the same weeks, categories and channels; a season’s margin over a year-end stock figure is two measurements that never meet.

  2. 2

    Compute gross margin dollars

    Take net sales, after markdowns and promotions, less cost of goods sold for the same units. Markdowns are already in net sales; shrink and non-resaleable returns belong in cost of goods; capitalised inbound freight and duty sit in landed cost.

  3. 3

    Compute average inventory at cost

    Value stock at cost, not at retail, and average the opening balance with every month-end: seven points for a six-month season, thirteen for a year. Opening plus closing over two misses the build between them.

  4. 4

    Divide gross margin by average inventory

    The result is gross margin dollars per dollar of inventory held on average. Check it by decomposition: gross margin divided by cost of goods, times inventory turn, returns the same figure.

  5. 5

    Annualize from twelve months, never by multiplying

    Use twelve months of gross margin over a thirteen-point average inventory at cost, on a trailing basis. Multiplying a season or a quarter assumes the rest of the year earns the same margin on the same inventory.

  6. 6

    Read it against plan, then decompose

    Compare GMROI with the plan for the same category and period, not with another business’s figure. Then split it into margin and turn: the same GMROI can come from high margin on slow stock or thin margin on fast stock, and each needs a different depth decision.

GMROI on the shared six-month season

The illustrative six-month season from the sales-plan, receipt-flow and reforecast guides, one class, in thousands of dollars: sales of 1,500, markdowns of 145, opening stock of 520 and a carry-out of 150 at retail. Receipts solve to 220, 280, 290, 250, 165 and 70 without the shrink provision, and the chain closes: 520 + 1,275 − 1,500 − 145 = 150. One assumption is added to reach cost: every retail dollar of opening stock and receipts cost 40 cents — a 60% initial markup — with markdowns taken as units sell, so stock at cost is 0.40 of stock at retail and cost of goods sold is 0.40 of sales plus markdowns.

Hypothetical six-month season for one class, in thousands of dollars: net sales, markdowns, cost of goods sold, gross margin and gross margin rate by month, and stock at retail and at cost at the opening and at each month-end.
LineOpenM1M2M3M4M5M6Season
Net sales1802403003402601801,500
Markdowns0010204570145
Cost of goods sold7296124144122100658
Gross margin $10814417619613880842
Gross margin %60.0%60.0%58.7%57.6%53.1%44.4%56.1%
Stock at retail520560600580470330150
Stock at cost20822424023218813260

Gross margin is 842 on 1,500 of net sales, 56.1%. The seven stock positions at cost sum to 1,284, an average of 183.43. GMROI is 842 ÷ 183.43 = 4.59. The decomposition agrees: 842 ÷ 658 = 1.280, inventory turn for the season is 658 ÷ 183.43 = 3.587, and 1.280 × 3.587 = 4.59. The monthly margin rate falls from 60.0% to 44.4% because the markdown budget lands at the exit — the reason GMROI is read over the season, not month by month.

Read the table across and the two inputs move out of step. Stock at cost builds from 208 at the open to a 240 peak at the M2 close, ahead of the 340 sales month in M4, so the three heaviest month-ends come while margin still accrues at or near the full 60% rate (60.0%, 60.0% and 58.7%). From M4 the class sells down to 188, 132 and 60 at cost, and 135 of the 145 in markdowns land in those last three months. Margin splits almost evenly, 428 in M1 to M3 against 414 in M4 to M6, but the four positions from the open to the M3 close average 226 while the last three closes average 126.67. No single month-end, and no pair of them, stands in for the season: the denominator is heaviest before the margin is in and lightest when the markdowns arrive.

Where markdowns, shrink and freight sit

Markdowns are already inside net sales: a markdown lowers the retail value of the stock and the unit rings at the lower price, so it reduces the numerator through sales, never through cost of goods. Here, the 1,645 of original retail value that sold would have earned 0.60 × 1,645 = 987 at full price; 145 of markdowns take it to 842. Deduct markdowns again and every cut counts twice. Net sales are units times average unit retail, which is where a markdown shows first.

Shrink and non-resaleable returns leave the ledger without a sale, so their cost belongs in cost of goods. Add the receipt-flow guide’s half-percent shrink provision — 7.5 at retail and 3.0 at cost, with receipts topped up so the closing targets hold — and gross margin falls to 839 with inventory unchanged: GMROI 4.57.

Freight is a policy before it is a number. Capitalised inbound freight and duty reach GMROI twice — in cost of goods and in inventory at cost. Add two cents per retail dollar, a 0.42 cost complement, and gross margin falls to 809.1 while average inventory rises to 192.6: GMROI 4.20 against 4.59. Expense the same freight below the gross margin line and the ratio reads 4.59, with the same freight paid. The margin bridge writes the policy on its face, and a GMROI report should too. Check landed cost on the landed cost calculator and the markup behind the cost complement on the IMU calculator.

Why a two-point average misreads a seasonal build

The two-point average — opening plus closing, over two — uses only the beginning and end of period; the month-end average uses the opening balance and every month-end. On flat stock they agree. On a seasonal line they cannot, because two endpoints miss the build between them: this season opens at 208 at cost, holds between 188 and 240 through month four, and exits at 60. The two-point average, 134, sits below every month-end from month one to month four.

The same season's gross margin of 842 divided by five different inventory figures, showing how the choice of denominator changes GMROI.
DenominatorPointsAverageGMROI
Two-point: (open + close) ÷ 22134.006.28
Month-end: open + six closes ÷ 77183.434.59
Closing stock only160.0014.03
Peak month-end only1240.003.51
Month-end average at retail7458.571.84

One season reads anywhere from 3.51 to 14.03 depending on the denominator. The two-point 6.28 overstates the month-end 4.59 by more than a third, because the carry-out of 60 drags the average down. Stock at retail shrinks the ratio by the 0.40 cost complement, to 1.84.

The two-point error has no fixed sign: across the full year below, the endpoints land on the pre-season build and it understates instead. Month-end positions are not exact — weekly positions are closer still where the stock ledger holds them — but they see the build that two endpoints skip.

Twelve months of margin over thirteen points of inventory

An annual figure — the one compared across years and against a hurdle — needs twelve months of margin. Doubling the season, 4.59 × 2 = 9.18, assumes the other six months earn the same margin on the same inventory. The illustration continues for the same class: a smaller second half that inherits the carry-out of 150 at retail and closes at 520, the first season’s opening stock, completing the stock cycle.

Hypothetical second half of the year for the same class, in thousands of dollars: net sales, markdowns, gross margin, and month-end stock at retail and at cost.
LineM7M8M9M10M11M12Half
Net sales12015017016012080800
Markdowns0010203040100
Gross margin $729098886032440
Stock at retail300330290230260520
Stock at cost12013211692104208

The second half earns 440 on 800 of sales; its seven points at cost — 60, 120, 132, 116, 92, 104 and 208 — average 118.86, a half-year GMROI of 3.70. The year earns 842 + 440 = 1,282, and its thirteen positions at cost sum to 2,056, an average of 158.15.

Four ways to state an annual GMROI for the same twelve months, and the one that covers a full stock cycle.
MethodGross marginAverage at costGMROI
First season doubled842 × 2183.439.18
Half-year GMROIs added: 4.59 + 3.708.29
Two-point year: (208 + 208) ÷ 21,282208.006.16
Thirteen-point year1,282158.158.11

The annual GMROI is 1,282 ÷ 158.15 = 8.11 — not the doubled 9.18, not the added halves at 8.29, and not the two-point 6.16, which understates because the year opens and closes on the build at 208. Annualize on a trailing twelve months over thirteen points, recomputed monthly, and add period GMROIs only when their average inventories match — these halves averaged 183.43 and 118.86.

GMROI vs gross margin %, inventory turn, GMROII and GMROF

Gross margin % ignores the inventory it took; inventory turn ignores the margin. GMROI is their product, so a high-margin slow category and a thin-margin fast one can return exactly the same GMROI. Two illustrative categories, in thousands of dollars:

Two hypothetical categories with the same gross margin dollars and average inventory at cost but opposite margin rates and turns, showing equal GMROI and different GMROF.
LineA: high margin, slowB: thin margin, fast
Net sales5001,000
Cost of goods sold200700
Gross margin $300300
Gross margin %60.0%30.0%
Average inventory at cost100100
Inventory turn2.07.0
GMROI3.003.00
Selling space (sq ft)2,0005,000
GMROF ($ per sq ft)$150$60

A earns 60% and turns twice: (60 ÷ 40) × 2.0 = 3.00. B earns 30% and turns seven times: (30 ÷ 70) × 7.0 = 3.00. The exposures differ. A’s margin rides on stock that sits for months, so a trend that turns becomes a markdown on inventory already held — the sell-through calculator reads that early. B’s margin rides on staying in stock, so a missed reorder cuts the numerator while the denominator barely moves.

GMROII — gross margin return on inventory investment — is the same ratio, since the inventory investment is inventory at cost; where a GMROI and a GMROII differ for one category, the difference is a denominator choice, not a second metric. GMROF — gross margin return on footage — divides gross margin by selling square feet and breaks the tie: A earns $150 per square foot, B $60. A store short of space and a business short of working capital rank the same categories differently, and GMROF means nothing for a channel without a floor.

Using GMROI to set category depth and OTB

Planned gross margin comes from the sales plan and the markup; planned average inventory comes from the stock targets that solve receipts in the open-to-buy. So every merchandise plan implies a GMROI before a unit is bought — 4.59 for the shared season — and the ratio becomes a planning control.

A hurdle becomes a ceiling on inventory. If the category owner sets a season hurdle of 5.0 — the owner’s choice, not an external standard — 842 of margin allows 842 ÷ 5.0 = 168.4 of average inventory at cost, a seven-point sum of 1,178.8 against 1,284. With the opening and exit fixed, the 105.2 comes out of the build: 131.5 at retail off the month-two and month-three closing targets, to 468.5 and 448.5. Receipts still total 1,275, but 131.5 moves from month two into month four, which now opens at 1.3 times its sales against a planned 1.7. The hurdle holds only if those receipts land inside the peak month without costing sales — a lead-time question.

The same arithmetic prices extra depth. Hold 60 more at retail at the same two closes and the average rises to 190.29 on unchanged margin: GMROI 4.42. Standing still at 4.59 needs about 31.5 more gross margin — roughly 52.5 of extra full-price sales, with receipts topped up. Depth that only protects sizes that would have sold anyway is 24 of inventory at cost, held through two month-ends (6.86 on the seven-point average), that the season pays to carry and does not use.

Average GMROI ranks categories; incremental GMROI allocates. The next dollar of open-to-buy goes to the highest incremental return, not necessarily the higher average. A and B again, with the planner’s own estimate of what 20 more of average inventory at cost would earn — tail-size depth in A, core-size cover in B:

Hypothetical incremental return on 20 of added average inventory at cost in two categories with equal average GMROI, using planner estimates of the added gross margin.
LineCategory ACategory B
Average GMROI today3.003.00
Added average inventory at cost2020
Estimated added gross margin2450
Incremental GMROI1.202.50
Average GMROI after the add2.702.92

B gets the 20. Both averages fall — 324 ÷ 120 = 2.70 and 350 ÷ 120 = 2.92 — because any return below the average pulls it down; the test is the incremental figure against the cost of carrying the stock. Written down, the estimate can be checked against the season, and the reforecast is where the open-to-buy is re-solved when it misses.

The hurdle above is an open-to-buy re-solve, and the free OTB template runs it month by month. Enter the opening stock and, for each of six months, planned sales, markdowns and closing stock at retail, with on-order at zero, and the open-to-buy column returns the receipts: 220, 280, 290, 250, 165 and 70 on the shared season. Lower the month-two and month-three closing stock to 468.5 and 448.5 and the template re-solves the same 1,275 — month two falls to 148.5, month three holds at 290 and month four rises to 381.5.

The template works at retail, so GMROI is one step away: multiply the opening stock and each closing stock by your cost complement — 0.40 here — and average the seven positions. Enter what is already on order and a negative open-to-buy flags any month bought past its plan.

Get the OTB Template

Free. Enter your details and the download starts immediately.

By submitting, you agree to .

Seven ways a GMROI figure misleads

Each divides correctly and describes the wrong thing. None shows up as a spreadsheet error; each shows up as a decision taken on a ratio that moved for a reason nobody traded.

Dividing by a two-point average on a seasonal build

Opening plus closing over two skips the months between: 6.28 against 4.59 for the season, 6.16 against 8.11 for the year. The error changes sign with where the endpoints fall, so only the month-end series corrects it.

Inventory at retail in the denominator

Gross margin is built on cost; dividing it by stock at retail shrinks the ratio by the cost complement — 1.84 instead of 4.59. A richer markup means a smaller complement and a bigger penalty, so the ranking distorts as well as the level.

Multiplying a period to annualize it

Doubling the first season gives 9.18; the year earns 8.11, because the second half earns less margin per dollar held. A quarter multiplied by four inherits whichever quarter it came from.

Margin with no inventory behind it

Consignment, memo, drop-ship and special orders earn margin with no owned inventory at cost. Blended into a category, they lift its GMROI with no change in how the owned stock performed. Report them separately, or state that they are in.

Averaging category GMROIs

A category earning 300 on 100 of inventory returns 3.00; one earning 20 on 40 returns 0.50. Their mean is 1.75; pooled — 320 of margin over 140 of inventory — the figure is 2.29. Add the margin, add the inventory, then divide.

Reading a policy change as performance

Capitalise freight that used to be expensed and GMROI falls — 4.59 to 4.20 on a 0.42 cost complement — with nothing traded differently. Reclassifying testers, royalties or shrink moves the numerator the same way. Write the policy on the report.

Improving the ratio into a stock-out

Cutting depth lifts GMROI until the missing stock costs sales, and sales never made appear in neither input. A rising GMROI beside falling in-stock on core sizes is underbuying reported as efficiency; read it next to in-stock and sell-through.

What drives the numerator and the denominator in each vertical

The formula is identical everywhere. What changes is what inflates the denominator, what erodes the numerator, and which policy choices sit between them — so GMROI is compared within a vertical, on one definition. Apparel is the reference case.

Apparel

The numerator is decided twice — at intake margin and at the exit markdown — and the denominator follows the seasonal build, so the month-end average matters. A broken size curve inflates the denominator before it hits margin: once the core sizes sell, the tail sizes sit at full cost. Carry-over styles hold stock across seasons, non-resaleable DTC returns move into cost of goods, and wholesale and DTC earn different margins on one buy.

Footwear

Depth is the size run: every half size and width is pairs bought so a style can present, so the denominator carries the whole run while the numerator depends on the core sizes. A broken run leaves pairs in average inventory as markdown candidates. Prebooked pairs ship on soon after receipt and barely touch the average; at-once and core replenishment stock is where the denominator lives.

Accessories

With no size dimension, the style-color is the unit of depth. Hero colors on the evergreen core hold a steady inventory and turn it; fashion colorways spike the denominator for a window and then clear — split the two first. Leather-goods minimums can force a colorway buy above demand, and attach rate ties the numerator to traffic in the apparel or footwear it sells beside.

Home and furniture

Container quantities make receipts lumpy, so month-end stock steps rather than flows and a two-point average can land either side of a container. Ocean lead times put inventory on the balance sheet long before it reaches a floor, and freight charged on cube lets the capitalisation policy move both inputs. Special orders earn margin with no stocked inventory; keep them apart from stocked options and finishes.

Outdoor

Counter-seasonal categories — snow and summer — peak their inventory in different months, so a category ratio needs a thirteen-point year. Gear on model years either closes out at changeover, cutting the numerator, or carries into the next model year and sits in the denominator; MAP pricing narrows the markdown route and tilts the choice toward carrying. Warranty and repair stock produces no sales and belongs outside the merchandise ratio.

Sporting goods

Team and roster orders ship against the order, adding margin dollars with little inventory behind them; blended with the retail buy, they flatter it. Ski, golf, cycling and racquet each run their own calendar, so average inventory per category across a full year. Dealer prebooks commit buy quantities before sell-through exists, and prior model years left at changeover are the closeout decision.

Beauty and wellness

Testers, gift-with-purchase and gratis consume units that never produce a sale, and whether they sit in cost of goods or in marketing is a policy that moves the numerator. Shelf life and expiry dating age the stock, so aged units are written off into cost of goods rather than cleared; PAO governs testers and opened units. A long shade range keeps low-velocity depth in the denominator, and launches build stock ahead of the first retailer POS read.

Toys and games

Q4 concentration means a January-to-January two-point average misses the build before the holiday weeks and overstates GMROI. Retailer commitments fix buy quantities before any sell-through exists. Safety-standard testing adds to landed cost and can hold goods until certification clears, and licensed product sells only within its licence window and sell-off period, so leftovers land in the numerator as markdown or write-off.

Baby and juvenile

Registry demand spreads a purchase over the weeks between an item being added and being bought, which suits a trailing-twelve-month ratio on replenished hard goods. High cost per unit and large cube mean a few extra units of depth move the denominator more than the same count of apparel units would. Recalls and safety-standard changes can make stock non-sellable at once, and model-year changeovers force a closeout on the outgoing model.

Jewelry and watches

High cost per piece and low velocity make the denominator large against the sales it supports, with depth counted in individual pieces. Metal cost moves change the value of stock on hand, and revaluing it or holding original cost moves GMROI with no merchandising decision behind it. Memo and consignment goods sit on the floor but not on the balance sheet, earning margin with nothing in the denominator — report them apart from owned lines.

See the connected workflow in RetailNorthstar

Frequently asked questions

What is GMROI?
GMROI (gross margin return on inventory) is the gross margin earned over a period for each dollar of inventory held at cost on average: gross margin dollars divided by average inventory at cost. A GMROI of 4.59 means 4.59 dollars of margin per dollar of stock held. It joins a margin measure to an inventory measure, so a reading is compared with plan and split into margin and turn before anyone acts on it.
How do you calculate GMROI step by step?
Pick the period and hold both inputs to it. Compute gross margin as net sales after markdowns, less cost of goods sold including shrink. Average inventory at cost across the opening balance and every month-end — seven points for a six-month season, thirteen for a year. Then divide. In this guide’s illustrative season, 842 of gross margin over 183.43 of average inventory at cost gives a GMROI of 4.59.
Should GMROI use inventory at cost or at retail, average or ending?
At cost, and averaged. Gross margin is built on cost, so dividing it by inventory at retail shrinks the ratio by the cost complement — the illustrative season reads 1.84 instead of 4.59. Ending inventory describes one day: it overstates GMROI on a season that exits lean and understates it on a year that ends on a pre-season build. A month-end average sees the build that one or two points miss.
How do you annualize GMROI?
Divide twelve months of gross margin by a thirteen-point average of inventory at cost — the opening balance and twelve month-ends — recomputed on a trailing basis. Never multiply a season or a quarter by the number of periods in a year: that assumes the rest of the year earns the same margin on the same inventory. In this guide’s example, doubling the first season gives 9.18, while the full year returns 8.11.
How is GMROI different from gross margin percentage and inventory turnover?
Gross margin percentage ignores the inventory held; inventory turnover ignores the margin. GMROI combines them: gross margin divided by cost of goods, times turn. A category earning 60% and turning twice returns a GMROI of 3.00, the same as one earning 30% and turning seven times. The ratio is equal and the risks are not — one depends on slow stock holding its price, the other on staying in stock.
What is a good GMROI?
There is no universal figure, and this guide offers none: GMROI depends on markup, lead times, seasonality and how inventory is valued, so another business’s number carries all of those differences. Above 1.0, gross margin exceeds the average inventory investment — arithmetic, not a target. Compare against the category’s own plan, its own history on the same definition, and a hurdle set from what it costs to carry inventory.

See how RetailNorthstar keeps the sales plan, open-to-buy and stock targets on one shared data model — so a category’s planned margin and the inventory needed to earn it come from the plan that sets the buy.