Skip to main content
Margin guide · discounts

Are your Shopify discounts making money, or losing it?

A discount looks cheap in the report: 20% off, a few hundred dollars given away, lots of orders. What the report does not show is that the 20% comes out of your margin, not your price, and that the product cost and the fixed part of the payment fee do not get any smaller. This guide shows how to check each code, and how deep a discount can go.

+52%more units a 20% discount needs to make the same profit on a $50 product costing $20Worked example below
50%the deepest discount on that product that still keeps a 15% marginWorked example below
32%what a 20% and a 15% discount take off together on Shopify, not 35%Shopify Help Center2
2.9% + 30¢the US Shopify Payments rate on Basic, charged on the discounted amountShopify pricing5

In brief

  • Judge a discount on what the order keeps after product cost and payment fees, not on revenue. That is its contribution margin.
  • Units needed to break even = profit per unit at full price ÷ profit per unit after the discount. On a product with a 40% cost ratio, 20% off needs about half as many sales again.
  • Shopify applies stacked discounts one after another: product discounts first, then order discounts on the reduced subtotal, then shipping.2
  • The Sales by discount codes report gives you each code's sales; you add the cost and the fees to see its margin.1

Why discounts cost more than they look

Take an invented product that sells for $50.00 and costs you $20.00, sold with Shopify Payments at 2.9% + 30¢ (the US Basic rate).5 At full price each sale keeps $50.00 − $20.00 − $1.45 − $0.30 = $28.25. Every dollar of discount comes off that $28.25, while the cost stays at $20.00.

DiscountPrice paidKept per unitMarginMore units needed
None$50.00$28.2556.5%none
10%$45.00$23.4052.0%+21%
20%$40.00$18.5446.4%+52%
30%$35.00$13.6939.1%+106%
40%$30.00$8.8329.4%+220%
50%$25.00$3.9815.9%+611%

Kept per unit = price paid − $20.00 cost − 2.9% of the price paid − 30¢. Margin = kept ÷ price paid. More units needed = $28.25 ÷ kept − 1. Invented figures; shipping, returns and overheads not included.

A 20% code has to sell half as many units again just to stand still, and 40% has to more than triple them. Few codes do. That does not make every discount wrong: a discount that brings a first order from a customer who comes back can pay for itself later. But you should know what it costs today before deciding it will.

The break-even uplift

The question to ask of any discount is how many more units it has to sell to leave you where you were:

MeasureFormula
Kept per unitprice paid − cost − (fee rate × price paid) − fixed fee − shipping you absorb
Units needed, as a multiplekept per unit at full price ÷ kept per unit after the discount
Uplift neededthat multiple − 1
Contribution marginkept per unit ÷ price paid

If the kept amount is zero or negative, no volume recovers the discount: every extra sale loses more.

Free shipping belongs in the same sum. If a 20% code also ships free and delivery costs you $6.00, the order keeps $18.54 − $6.00 = $12.54, and the uplift needed rises from 52% to 125%.

The deepest safe discount

Set a margin floor, the share of each sale you are not willing to give away. 15% is a common choice. The deepest discount that keeps it is:

maximum discount = 1 − (cost + fixed fee) ÷ (price × (1 − fee rate − floor))

For the $50.00 product: 1 − 20.30 ÷ (50.00 × (1 − 0.029 − 0.15)) = 1 − 20.30 ÷ 41.05 = 50.5%, so 50%. At 50% the sale keeps $3.98, a 15.9% margin; at 51% it would keep 14.2%. If you also absorb shipping, add it to the cost in that formula.

Work it out for your lowest-margin products, not your average. A code that applies to the whole catalogue is only as safe as the thinnest margin it can land on.

Stacked discounts

Shopify lets discounts combine when you allow it in each discount's Combinations settings. Product discounts apply first, order discounts apply to the subtotal after product discounts, and shipping discounts apply last.2

So a 20% product discount and a 15% order discount take 1 − 0.80 × 0.85 = 32% off. On the $50.00 product that is $34.00 paid and $12.71 kept, a 55% drop in profit per unit from a pair of codes that each looked modest. Stacking is where most accidental losses come from: an automatic sale plus a welcome code plus an influencer code, none of which was meant to meet the others.

Check a discount code in Shopify admin

  1. Open Analytics › Reports › Sales by discount codes for the last 90 days. It groups sales by the name of the discount, automatic discounts included.1
  2. Note each code's orders and net sales. Net sales are gross sales minus discounts minus returns and other sales reversals.1 The report counts only the line items the discount affected.
  3. Add the product cost of those items from cost per item.4 If costs vary widely, use the cost ratio of the products the code was used on, not your store average.
  4. Add payment fees: fee rate × net sales + fixed fee × orders. Use your own rate; the fees calculator lists Shopify's by plan and country.
  5. Work out the margin: (net sales − cost − fees) ÷ net sales, and compare it with your floor.

An invented example, a welcome code used on 38 orders:

WELCOME25, 90 daysAmount
Net sales after the discount$2,090.00
Product cost−$1,913.49
Payment fees: 2.9% × $2,090.00 + 38 × 30¢−$72.01
Kept$104.50, 5.0%
Kept at a 15% floor: 15% × $2,090.00$313.50
Short of the floor$209.00

Invented figures. $209.00 is what this code gave away beyond what a 15% floor allows in 90 days.

Do not add up the rows

With combinable discounts, an order appears once in each row for every discount applied to it.1 Summing the rows counts those orders more than once.

Fixing a code that loses money

  • Add a minimum purchase amount so the code cannot land on a basket too small to carry it. Shopify counts it before shipping and taxes, and only the eligible items count when the discount is limited to certain products.3
  • Limit it to collections whose margin can absorb it, instead of the whole catalogue.
  • Reduce the depth to the safe discount for the products it applies to, or set an end date if it was meant to be temporary.
  • Turn off combinations it does not need, in the discount's Combinations settings.2
  • Check again after a week: the margin on orders using the code should be above your floor.

Pitfalls

  • Missing cost per item. Without it, a code's margin is a guess. Fill in costs for anything that is often discounted first.4
  • Judging on revenue. "The code brought in $2,090" says nothing about whether it made money.
  • Averages hide the losers. A code can be fine across the store and lose money on every order of one low-margin product. Check products sold below cost after the discount separately.
  • Returns. A discounted order that comes back loses the fee and the handling on top of the discount.
  • Fees differ. Card rates vary by plan and country, and another payment provider adds Shopify's own fee on top. Use your rate.

Doing it automatically

Store Diagnosis is our free, read-only Shopify app. It reads every order with its discount codes, line items, costs and refunds, and each night checks every code the way this guide does: net sales, product cost, payment fees at 2.9% + 30¢ an order, and the margin left. Codes that keep less than 15% are listed with the amount it would take to bring them back to that floor; codes whose orders lose money outright are marked critical. Automatic discounts are grouped together.

It also flags products sold below cost once a discount was applied, orders where two or more codes together took off more than 40%, and it links each code to its page in Discounts, with the steps to fix it. Where cost per item is missing it assumes a 50% margin and marks the figure as estimated.

Store Diagnosis, free and read-only.

  • Discount codes below a 15% margin
  • Products sold below cost
  • Stacking past 40% off
  • Refunds and small-order fees
See how it worksComing to the Shopify App Store; it is waiting for review.

Frequently asked questions

How do I know if a Shopify discount code is profitable?

Take the net sales of the orders that used the code from the Sales by discount codes report, subtract the product cost of what they bought and the payment fees, and divide what is left by the net sales. If that margin is below the floor you set, often 15%, the code is costing you money you would not have agreed to give away.

How many more sales does a discount need to break even?

Divide the profit per unit at full price by the profit per unit at the discounted price, and subtract 1. A $50 product costing $20 keeps $28.25 at full price after fees of 2.9% + 30¢, and $18.54 at 20% off, so it needs 28.25 / 18.54 − 1 = 52% more units just to make the same profit.

What is the deepest discount I can give?

The deepest discount that keeps a margin floor is 1 − (cost + fixed fee) / (price × (1 − fee rate − floor)). For a $50 product costing $20, fees of 2.9% + 30¢ and a 15% floor, that is 1 − 20.30 / 41.05 = 50%.

How do stacked discounts add up on Shopify?

One after another, not added together. Shopify applies product discounts first, then order discounts to the reduced subtotal, then shipping discounts. A 20% product discount with a 15% order discount takes 1 − 0.80 × 0.85 = 32% off, not 35%, but it is still far deeper than either code on its own.

Why does the Sales by discount codes report count an order twice?

When discounts can combine, the same order appears once in each row for every discount applied to it, and each row's sales include only the line items that discount affected. Do not add the rows together to get total discounted sales.

Does free shipping count as a discount cost?

Yes. When you pay for shipping the customer does not, that amount comes straight out of the order's profit. Add what the shipping cost you to the discount's cost when you work out its margin and its break-even.

Sources

  1. Shopify Help Center. Sales reports: Sales by discount codes, orders counted once per applied discount, and the definitions of gross sales, discounts and net sales, checked 25 Sep 2026. vendor-published
  2. Shopify Help Center. Combining discounts: which discount classes combine and the order in which product, order and shipping discounts apply, checked 25 Sep 2026. vendor-published
  3. Shopify Help Center. Amount off discounts: minimum purchase amount, counted before shipping and taxes, checked 25 Sep 2026. vendor-published
  4. Shopify Help Center. Product prices: cost per item and the margin shown on the product page, checked 25 Sep 2026. vendor-published
  5. Shopify. Pricing, United States view: 2.9% + 30¢ for standard online cards on Basic with Shopify Payments; see our fees calculator for other plans and countries, checked Sep 2026. vendor-published

Every worked figure on this page is invented for illustration. Shopify changes its reports and rates from time to time; names and rates are quoted from the linked pages as of September 2026.