How to Calculate Profit Per Discount Code (Step-by-Step)
Profit per discount code, discount code ROI, and a practical formula — plus the mistakes that make spreadsheets lie.
If you want profit per discount code — real discount code ROI, not dashboard theater — you need one coherent definition and the same math applied to every code. Here is how I do it when I walk founders through their first export. If the “why” is still fuzzy, start with are your promo codes losing you money? — same story, different table.
Step 1: Pick your “profit” lane
Full absorption costing belongs to finance. For operators, I use contribution after discount: money left after the customer paid, minus discounts, minus the variable cost of goods (and optionally payment fees). Consistency beats pretending the spreadsheet is GAAP.
Net sales (after discounts) = Gross − Total discounts attributed to that code
Estimated contribution = Net sales − COGS − (optional: refunds, shipping subsidy, fees)
Discount ROI (rough) = Estimated contribution ÷ Discount dollars given
Step 2: Aggregate at order level, then roll up by code
Do not average percentages across orders — sum dollars. For each order line with a code, capture discount amount, net paid, and your COGS assumption. Then group by code. That is how you calculate promo code profitability without double-counting.
Worked micro-example
| Orders (code SPRING15) | Net after discount | Discount given | COGS @ 38% | Contribution |
|---|---|---|---|---|
| Order batch A (10 orders) | $4,200 | $740 | $1,596 | $1,864 |
| Order batch B (10 orders) | $3,800 | $1,100 | $1,444 | $1,256 |
| Total SPRING15 | $8,000 | $1,840 | $3,040 | $3,120 |
Contribution $3,120 ÷ Discount $1,840 ≈ 1.7× — every dollar of discount returned about $1.70 in contribution before fixed costs. Track that ratio by code; when it collapses, your sale is buying revenue, not profit.
Common mistakes
- Using gross sales as the numerator — inflates every code that runs on high list prices.
- Ignoring returns — a “profitable” code can flip when refunds cluster.
- One blended COGS for everything — better than nothing; wrong for mixed-margin catalogs, but still exposes extreme outliers.
Shortcut
You can build the sheet — or you can upload the CSV and let tooling roll the same logic across every code so you are not hand-pivoting at midnight. If your gut says the top revenue code is the hero, sanity-check it against contribution per dollar of discount before you scale it.
Or just upload your CSV. We built Promo Doctor to run this roll-up for Shopify merchants without spreadsheet surgery.