The Margin StackFrom $124.17/mo, plus the Eight-Week Analyst Launch $6,000 FREE
Free tools

What does a discount code really cost?

A discount comes straight out of contribution margin, not revenue. This calculator takes your average order value, your contribution margin at full price and your discount, and shows the margin left on each discounted order, the margin given away, and the extra order volume you need just to hold total margin flat.

Example numbers - replace with yours
$

Revenue per order at full price, before the discount.

%

Margin before marketing: revenue minus discounts, landed COGS (cost plus freight-in plus duty), shipping and fulfilment, and payment and platform fees. Compute it with the contribution margin calculator.

%

The code or sitewide markdown you are modelling, as a share of order value.

Your discount, live
Order revenue
$100.00
Margin at full price
$40.00
− Discount, paid from margin
-$20.00
= Margin left per order
$20.00
Margin per discounted order
$20.00
25% of the $80.00 you collect
Margin given per order
$20.00
50% of your full-price margin
Required volume lift
100.0%
more orders, just to hold total margin

A 20% code on a 40% margin gives away 50% of the margin. It takes 100.0% more orders, 2.00x the volume, just to hold total margin flat.

If you change the depth
Code 10%
33.3%
Code 15%
60.0%
Yours 20%
100.0%
Code 25%
166.7%
Code 30%
300.0%

Required volume lift to hold total margin at your depth, then five and ten points either side, at your full-price margin. Computed from your inputs, nothing assumed.

How to use it

Three numbers in, one verdict out

Step 1

Pull your AOV

From your store admin or an order export: a month of revenue divided by a month of orders. If the month was promo-heavy, use full-price orders, so the discount is not counted twice.

Step 2

Pull your full-price margin

From the contribution margin calculator or your ledger: revenue minus landed COGS (cost plus freight-in plus duty), shipping and fulfilment, and payment and platform fees. Set the discount line to zero: this tool applies the code itself.

Step 3

Enter the code depth

From your promo plan, the email calendar or the draft offer: the percentage the customer sees. A sitewide markdown and a code work the same way, as a share of order value.

Step 4

Read the hurdle

The margin left per order, the margin given away and the volume lift the code must produce. Before you ship it, compare that hurdle to the lift your last comparable code actually delivered.

How the math works

The discount spends your margin, not your revenue

Revenue drops by the whole discount while the costs that move with the order, landed COGS, shipping and fulfilment, do not move at all. So every discount dollar is a margin dollar, and the depth of the cut is measured against the margin pool, not the price tag.

The formulas
Full-price margin per order = AOV × contribution margin %
Margin given away per order = discount % × AOV
Margin per discounted order = full-price margin − margin given away
Required volume lift = full-price margin ÷ discounted margin − 1

Same definitions as The Math: the margin here is contribution margin before marketing. The model holds the variable costs flat while revenue drops by the discount, which is exactly why the whole cut lands on margin. If the discounted margin reaches zero, the lift is not computable: no volume can pay for the code.

Average order valueRevenue per order at full price, before the discount is applied.
Contribution margin at full priceRevenue minus discounts, landed COGS (cost plus freight-in plus duty), shipping and fulfilment, and payment and platform fees, as a share of AOV.
DiscountThe code or markdown depth, as a share of order value.
Worked example, on your live inputs

At an average order value of $100.00 and a 40% full-price contribution margin, each full-price order contributes $40.00 before marketing.

A 20% code hands $20.00 of that to the customer: 50% of the margin, gone before a single extra order arrives. Each discounted order now contributes $20.00, which is 25% of the $80.00 you actually collect.

To hold total contribution flat, the promotion must produce $40.00 ÷ $20.00 = 2.00x the order volume: a 100.0% lift, before the code has earned anything at all.

These are your live inputs from the calculator above, not a canned example. Change a number up there and this paragraph follows.

Why this number matters

The hurdle every promo has to clear

The required lift is the promotion's pass mark, and it exists before the promotion does. Set it in writing when the code is planned, and every discount decision becomes a comparison instead of a feeling.

Decision 1

Set the depth

Ten, fifteen or twenty percent off is a margin choice, not a branding choice. Run each depth through the calculator and pick the deepest one whose hurdle your list and traffic can actually clear.

Decision 2

Set the pass mark before launch

Write the required lift next to the code before it goes live. Afterwards, compare the actual order lift to that number: above it, the code added margin; below it, the code bought revenue with your margin.

Decision 3

Restructure before you ship

When the depth eats most of the margin, a smaller depth, a minimum-spend threshold or a bundle can keep the headline without the same giveaway. When the depth reaches the margin itself, there is nothing to optimize: rebuild the offer.

Why we use it - and when we don't

Honest about what a blended average hides

This calculator is the right first check on any code: it prices the giveaway in seconds and kills the worst offers before they ship. But it runs on one blended margin and one assumption, and it is worth being honest about both.

What it hides

It cannot see incrementality

The calculator treats every discounted order the same. In reality some buyers only ordered because of the code, and some would have paid full price, so the code simply subsidizes them. A blanket sitewide code is the worst case: it hands the discount to every buyer, including the ones already checking out.

What it hides

One blended margin

Codes never land evenly. A code redeemed against your thinnest-margin products costs more than the blended answer says; against your fattest, less. A store-wide margin can only ever give a store-wide answer.

What it hides

It prices one promo, not the habit

Run codes often enough and customers learn to wait for them. That cost arrives later, as full-price orders that quietly become discounted ones, and a single-promo calculator cannot see it.

When the blended answer breaks down

Know which codes earn their keep

This page prices one code against one blended margin. Blufire S3 Discounting runs the Promo Ledger over your actual orders: it shows which codes earn incremental margin and which give it away, it measures discount-dependency and full-price propensity across the customers redeeming them, and the Promo Restructure Simulator models what a restructured plan would return, before you ship it.

The protocol

When to run it, and what triggers action

Before every code ships
Run the planned depth against the margin of what the code will actually sell. Every code, every time: it takes under a minute and it is the cheapest promo review you will ever run.
Act when the required lift is above the lift your last comparable code actually produced. Restructure the depth, the threshold or the offer before launch, not after.
Before a seasonal sale
Run every planned tier of the sale separately, deepest tier first, each against the margin of the products it covers rather than the store-wide blend.
Act when any tier's depth sits at or beyond its contribution margin. No volume can pay for that tier: rebuild it as a smaller depth, a minimum-spend threshold or a bundle.
Monthly, with the promo calendar
Re-run the calculator with last month's blended discount share from your store's discount report, as the standing cost of the whole calendar rather than any single code.
Act when the blended share keeps creeping up month over month. The calendar, not any one code, is where the margin is going: cut the weakest code, not the deepest one.

Questions operators ask

Because the discount is paid out of margin, not revenue. Revenue drops by the whole discount while landed COGS, shipping and fulfilment and the other variable costs stay attached to the order, so every discount dollar is a margin dollar. On a 40% contribution margin, a 20% code removes 20 of the 40 points you keep: half the margin. The thinner the margin, the more brutal the same depth becomes.

Only if the lift clears the hurdle this calculator computes, and only if it is genuinely incremental. Orders pulled forward from next month, and orders from customers who would have paid full price, add volume without adding margin. If the required lift is bigger than any lift your past codes have actually produced, the code loses margin before it starts.

No volume can save it. Once the depth reaches your contribution margin ratio, each discounted order contributes zero or less, so every extra order digs the hole deeper. The fix is the offer, not the media: a smaller depth, a minimum-spend threshold, or a bundle that protects the margin while keeping the headline.

The full-price contribution margin of what the code actually sells: revenue minus landed COGS (cost plus freight-in plus duty), shipping and fulfilment, and payment and platform fees, with the discount line set to zero because this tool applies the code itself. If the code targets one category, use that category's margin rather than the store-wide blend.

Orders. The lift is the extra unit volume of discounted orders needed to rebuild the same total contribution margin. Revenue is the wrong yardstick here: each discounted order collects less, so a promotion can grow revenue while total margin still falls.

Economically, yes: it is margin given away in a different shape. Instead of cutting the price it adds a fulfilment cost to every qualifying order, so it draws from the same contribution margin pool. Size it with the free shipping threshold calculator, which prices that giveaway against the AOV it has to buy.

Ready to see what you are actually keeping?

Money-back to week 8. Cancel in two clicks.