How to Find Which Discount Code Loses Money
You can find the discount codes that lose money with one order export and about four columns. Rank each code by what it costs, how deep it cuts and who uses it, then compare the result with a break-even rule.
What you need
Export your orders with these columns:
- The order date and order ID.
- The customer ID, so you can tell new buyers from returning ones.
- The gross amount, before any discount.
- The discount amount and the discount code.
- Product cost, if you have it, so you can compute margin.
Most store platforms can produce this as a CSV. If the discount code is blank on an order, no code was used, which is useful on its own: it tells you what share of orders you discount at all.
Step 1: Total each code
For every code, add up three things: the number of orders, the total discount given, and the average depth, which is the discount divided by the gross amount. Sort by total discount, highest first. The code at the top costs you the most, whatever its depth.
Step 2: Split new buyers from returning ones
Mark an order as a repeat if the same customer has an earlier order in the file. Then, for each code, work out the share of its orders that are repeats. This is the column that finds the leak. A welcome code should have a repeat share near zero. A code with a high repeat share is giving discounts to customers who had already paid full price.
Step 3: Apply the break-even rule
A discount only pays if it brings enough extra orders to make up for the margin it gives away. Take your contribution margin before discounts, call it m, and the discount depth, call it d, both as shares of the sale. The extra volume you need just to earn the same profit is:
If d is equal to or larger than m, no amount of extra volume helps, because each order earns nothing or loses money.
A sample store, worked through
The sample store, Cascade Supply Co., gave $436,203 in discounts across 9,713 orders out of 24,623 over 180 days. Its contribution margin before discounts is 49.8%. One code stands out when you run the three steps:
| Column | COMEBACK |
|---|---|
| Orders | 702 |
| Total discount | $52.0K |
| Average depth | 26.4% |
| Repeat share | 82.6% |
Apply the break-even rule with m at 49.8% and d at 26.4%. The required lift is 0.264 divided by 0.234, which is about 113%. COMEBACK would have to more than double its orders just to earn what the same orders earn at full price. With 82.6% of its uses coming from returning customers, the code is unlikely to get there. Most of its orders were probably coming anyway.
For comparison, a 20% code on the same store needs a lift of 0.20 divided by 0.298, about 67%. The deeper the code, the faster the required lift rises.
Step 4: Decide what each code needs
Sort codes into three groups:
- Keep. Low repeat share, depth well under the margin, and a clear job such as a first-order welcome offer.
- Fence. Useful but leaking, usually to repeat buyers. Limit it to first orders, add a minimum basket or shorten its life.
- Retire. High repeat share, deep discounts, or a code that has leaked to coupon sites.
Be careful with the fence. In the sample store, fencing COMEBACK to first orders recovers about $7.3K a month, which is only its repeat slice. It does not recover the whole code, and a plan that counts the full amount will overstate the saving. The whole store gives away about $74.2K a month in discounts, and an estimated $45.9K of that goes to repeat or organic customers.
How often to run it
Run the ranking every month for the codes that are live, and again after any large promotion. Keep the previous table so you can see whether a fence changed the repeat share. Write down the date you changed each code. Without the date, you cannot say whether a drop in discount cost came from the change or from a quieter month.
Keep one more number next to the table: the share of all orders that carry a code. In the sample store it is about 39%, which is 9,713 of 24,623. If that share climbs month after month, customers are learning to wait for a code, and the fix is in how often you run promotions as well as in any single code.
Common mistakes
- Judging a code by its redemptions. A busy code can be the most expensive one. Judge by dollars given and by who got them.
- Ignoring stacking. Two codes on one order can take it below zero contribution even if each looks fine alone.
- Retiring a code without a replacement plan. If a code drives a lot of first orders, retire it only after you have tested a shallower version.
Run it on your own store
A spreadsheet pivot can do the first two steps for a few dozen codes. ProfitFalcon ranks every code from your order export, with the repeat share and the cost shown side by side, and you can open the sample store to see COMEBACK on the Cascade data. For the thinking behind these steps, read why discount codes leak margin. The discount break-even calculator does this arithmetic for you, and the profit margin calculator helps you work out the margin, m, to use in the rule. To see how profit apps differ on price, see the TrueProfit comparison.
Upload your store export and see this for your own products, then decide.
Start 14-day trial14 days free. No card. Cancel anytime. Or open the sample store first.
BizFalcon AI