ClearStock is live on the Shopify App Store.Install free →

← All blogs

Guides8 min read

Margin vs markup: your 2× markup is not a 50% margin

A 50% markup is only a 33% margin. Get the full margin-vs-markup conversion table, where each number belongs, and a worked product pricing example.

InventoryX is in development and not available today. ClearStock is the live Shopify app.

Cost $10, add 50% markup, charge $15. The margin on that sale is not 50% — it's 33.3%, because margin measures profit against the $15 selling price, not the $10 cost. An owner who targets "a 50% margin," prices with markup math, and checks nothing will quietly earn 33% on every unit and wonder why the P&L disagrees with the plan by a third. This is one of the most common pricing arithmetic errors in small retail, and it's entirely a vocabulary problem: margin and markup measure the same profit against different bases. Here are the definitions, the conversion table worth keeping on the wall, and where each number belongs.

Margin and markup: same profit, different denominators

Margin Markup
Measures Gross profit as a % of the selling price The amount added to cost, as a % of cost
Formula (Price − Cost) ÷ Price (Price − Cost) ÷ Cost
Lives in P&L, Shopify profit reports, margin targets Pricing decisions, quotes, PO negotiations

The same $5 profit on a $15 sale is a 33.3% margin and a 50% markup. Neither number is wrong; they answer different questions. Margin answers "what share of my revenue is profit?" Markup answers "what did I add on top of what I paid?" The trouble starts when one is used to express the other without converting.

The trap, with arithmetic

Say the target is a 50% margin — keeping 50 cents of every revenue dollar after product cost. You buy at $10. If you price with markup math — cost plus 50% — you land at $15:

  • Markup achieved: (15 − 10) ÷ 10 = 50% — you hit the markup you aimed for.
  • Margin achieved: (15 − 10) ÷ 15 = 33.3% — you missed the margin you wanted.

To actually earn a 50% margin on a $10 cost, the price must be $20. Because the margin's denominator is the price, the price has to double the cost:

Price = cost ÷ (1 − target margin) = 10 ÷ 0.50 = $20

The merchant using markup math on a margin target is short on every unit — by 16.7 points of margin here — and usually discovers it months later in the P&L, in a category that "felt like" it was running at 50%. Nothing was miscounted. The target was never actually priced in.

The conversion table

One formula does the whole conversion: margin = markup ÷ (1 + markup).

Markup Margin
20% 16.7%
30% 23.1%
40% 28.6%
50% 33.3%
60% 37.5%
75% 42.9%
100% 50%

The reverse direction: markup = margin ÷ (1 − margin). A 40% margin target requires a 66.7% markup; 55% requires 122%; 60% requires 150%. Note the asymmetry — the markup percentage is always larger than the margin it produces, and the gap explodes as you climb: a 75% margin needs a 300% markup. If you only remember one row, make it 50% ↔ 33.3%, because "50" is the number most likely to be ambiguous in a pricing conversation.

A worked example: pricing an enamel pin

Figures illustrative. Landed cost $2.10 — landed, not invoice; how landed cost is built explains the difference, and it matters more for imported goods than most merchants assume. You decide a 60% markup feels right for an impulse accessory:

  • Price = $2.10 × 1.60 = $3.36
  • Margin check: (3.36 − 2.10) ÷ 3.36 = 1.26 ÷ 3.36 = 37.5% — exactly the table's 60% → 37.5% row.

Now the reverse test: the brief actually said "40% margin." The markup that delivers it is 0.40 ÷ 0.60 = 66.7%, so the price is 2.10 × 1.667 = $3.50, which checks out: (3.50 − 2.10) ÷ 3.50 = 40%. Different route, same destination — which is the point. Either number works as your thinking language, as long as you convert rather than assume they're the same scale.

Where each number belongs

Margin is the reporting number. Your P&L expresses gross profit as a margin. Shopify's profit reports do too — and as of October 2026 they compute margin only from the cost-per-item field on each variant (Shopify Help Center). Two consequences. Markup never appears in the reports, so don't expect the platform to speak your markup dialect. And if cost-per-item is empty or stale, the margin column doesn't go blank — it lies. The Shopify COGS setup guide covers filling those fields properly; profitability by SKU covers reading the result.

Markup is the decision number. On the buying side — negotiating a unit cost, weighing a volume break, setting a first price on a new SKU — markup is the natural instinct, because cost is the number sitting in front of you. Fine. Make the decision in markup, then convert to margin before you file the price, so the number you carry into reports and margin targets is the number you meant.

How the error hides in a multi-SKU store

On a single SKU the gap is obvious once you look. Across a catalog it compounds quietly, because the two errors cancel in the noise:

  • Targets set in margin, prices set in markup. Every SKU opens slightly short of plan. No individual price looks broken, so nothing gets flagged — the category just "underperforms" by a few points that nobody can trace.
  • Volume breaks priced in stale markup. You negotiate a unit cost from $10 to $9 and keep the $15 price. In markup terms that's 66.7% now; in margin terms it's 40% — better, but not the windfall "we marked it up 67%" suggests, and worth knowing before you spend the imagined gain.
  • Cost creep without repricing. Cost rises from $10 to $10.80, price holds at $15. Markup fell from 50% to 38.9% (feels fine), but margin fell from 33.3% to 28% — and 5 points of margin across a category is payroll.

The audit that catches all three takes five minutes per category: pull price, unit cost, and the margin Shopify reports (from cost-per-item), then run price ÷ cost and profit ÷ price side by side. Where the two disagree with what's in your head, the table above says which one you were actually speaking.

Keystone, and other habit numbers

Keystone pricing — doubling the cost — is a 100% markup, which the table shows is exactly a 50% margin. That's why keystone has survived decades of retail: it's the one round markup whose margin matches what people assume it is. Habits built on other round numbers don't fare as well: the "50% markup" habit delivers 33%, and "30% over cost" delivers 23%. None of these are automatically wrong prices — some commodity categories live on 20% markups — the error is only in describing the habit as a margin it isn't. Whether a keystone-style price survives in your category is a separate question, and the full pricing procedure walks that decision by decision.

Common questions

What is the difference between margin and markup? Margin is gross profit as a percentage of the selling price; markup is the amount added to cost, as a percentage of cost. A $5 profit on a $15 sale is a 33.3% margin and a 50% markup. Same sale, different denominators — conflating the two is one of the most common pricing arithmetic errors in small retail.

What is a 50% markup in margin terms? 33.3%. Margin = markup ÷ (1 + markup) = 0.50 ÷ 1.50 = 0.333. On a $10 cost, a 50% markup prices at $15 and earns $5 — a third of revenue, not half. A true 50% margin on a $10 cost requires a $20 price.

What markup do I need for a 40% margin? Divide the margin by its complement: 40 ÷ (100 − 40) = 66.7% markup. The reverse rule is markup = margin ÷ (1 − margin), and it always produces a number larger than the margin itself — a 40% margin target never means a 40% markup, and assuming it does is the trap this whole page exists to close.

What is keystone pricing? Doubling the cost — a 100% markup, which equals a 50% margin. It's the traditional retail baseline and the only round markup whose margin matches what people assume. Whether it fits your category is a separate question: commodity goods often carry far less, differentiated goods often more.

Does Shopify report margin or markup? Margin only. Shopify's profit reports compute margin from the cost-per-item field on each variant (Shopify Help Center, as of October 2026). If that field is empty or outdated, the reported margin is wrong rather than missing — set costs on every variant before trusting the reports.

Next step

Take five SKUs you believe run at "50%" and check which kind of 50% they actually are: (price − cost) ÷ cost for markup, (price − cost) ÷ price for margin. Convert each to the other with the table above. If the real margin lands materially below your target, the fix isn't a spreadsheet panic — it's running those SKUs through the pricing procedure, step by step. For the decision version of this math — how many units a commitment must sell — see break-even per product.