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.
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.
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.
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.
Three numbers in, one verdict out
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
When to run it, and what triggers action
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.