Why discounts leak
Discounts are rarely a single decision. A founder gives a friendly early customer 30 percent off forever. A sales rep closes a deal with a custom price. A launch coupon goes on social media and keeps working long after the launch. A price rise applies to new customers and the old price sits on every renewal for years.
Each discount made sense on the day. Added together, they can mean the average customer pays well below the price on your pricing page, and nobody knows the exact figure because no single report shows it.
Discount leakage is the name for that gap when it is unintended. Measuring it is straightforward once you have the data in one place. Monetisation does this from your Stripe account, and on Growth and Scale it keeps watching with a discount leakage monitor.
The usual sources
| Source | What it looks like in billing | Why it leaks |
|---|---|---|
| Forever coupons | Coupon with duration "forever" on active subscriptions | Never expires, often given for a reason that no longer applies |
| Expired campaigns still working | Promotion code active long after the campaign | Shared publicly, used by customers who would have paid full price |
| Stacked discounts | Coupon on top of an annual discount or custom price | Combined discount far larger than any single policy |
| Custom prices | One-off prices created for single deals | Below list, renewed automatically, rarely reviewed |
| Legacy prices | Old price kept after a price rise | Gap grows with every later price change |
| Discounted renewals | Renewal at the first-year discounted rate | A first-year offer turns into a permanent price |
How Monetisation measures it
With Stripe connected through a restricted read-only key, Monetisation reads every active subscription, its price, its interval, any coupons and promotion codes, and the current list price for the same plan.
For each subscription it calculates:
- List price for the same plan and interval today
- Effective price after every discount, normalised to a monthly amount
- Gap between the two, per month
- Cause of the gap: coupon, stacked coupon, custom price, legacy price or intentional annual discount
- Age of the discount and whether it was meant to expire
Intentional annual discounts are shown separately, because they are policy, not leakage. Our page on annual plan pricing covers how to set that discount on purpose.
A worked example
Take a hypothetical SaaS with 300 active subscriptions on a plan listed at 99 USD per month. Billing data shows:
| Group | Subscriptions | Effective price | Gap per subscription | Monthly gap |
|---|---|---|---|---|
| Full price | 130 | 99.00 USD | 0 | 0 |
| 20 percent forever coupon | 120 | 79.20 USD | 19.80 USD | 2,376 USD |
| 50 percent launch code, still active | 30 | 49.50 USD | 49.50 USD | 1,485 USD |
| Legacy price from two years ago | 20 | 69.00 USD | 30.00 USD | 600 USD |
| Total | 300 | 4,461 USD |
The plan is listed at 99 USD, yet the average subscription pays about 84 USD. That is 4,461 USD a month, or roughly 53,500 USD a year, between the pricing page and the bank account.
Not all of that is recoverable, and the opportunity card does not pretend it is. The estimate looks at what you can reasonably change:
| Action | Assumption | Expected monthly gain |
|---|---|---|
| Deactivate the launch code for new sign-ups | 4 new users a month used it, 3 of them sign up at full price instead | 3 x 99 minus 4 x 49.50, about 100 USD, growing each month |
| End the 50 percent discount at renewal with notice | 9 of these 30 customers leave, 21 pay list price | 21 x 49.50 gained minus 9 x 49.50 lost, about 595 USD |
| Stop issuing new forever coupons | Future sign-ups at list price | about 150 to 400 USD, growing |
| Keep legacy prices for now | Goodwill with long-standing customers | 0 |
The low, expected and high range on the card reflects those assumptions. A team might choose only the first and third actions, which carry almost no risk to existing customers. Every number here is an estimate, not a guarantee of results. The method is described in detail on how estimates work.
What counts as healthy discounting
Discounts are a normal pricing tool. A healthy setup usually has:
- A deliberate annual discount, shown clearly on the pricing page
- Time-limited offers that actually end
- A cap on how far discounts can stack
- An owner for custom prices and a review date for each
- Price rises that reach legacy customers over a planned period, or a deliberate decision to keep them
When those rules exist and are enforced in billing, discount leakage stays small. When they live only in someone's head, it grows quietly.
The discount leakage monitor
On Growth and Scale, the monitor runs after every data refresh. It alerts by email or Slack when:
- A new coupon with a forever duration is created
- A promotion code is redeemed after its intended campaign
- A subscription's combined discount goes above a threshold you set
- The average effective price of a plan drops against the previous month
The alert links to the subscriptions involved so the cause is visible straight away.
Measuring the fix
Monetisation never changes coupons or subscriptions. You make the change in your own billing, for example deactivating a promotion code, and Monetisation records it as a dated intervention. It then compares average effective price, new sign-up conversion and churn against the baseline trend. The verdict is win, flat, loss or not enough data, so you see whether tightening discounts cost you customers.
Discount leakage is often the first finding in a pricing review, whether done by a consultant or by software. If you are weighing those two options, read pricing strategy consulting compared with software. For the wider pricing picture, see pricing optimization software.
Where to start
Run a sample audit from the homepage to see the first three opportunities for your business. To measure leakage from your own billing, get started on any plan and connect Stripe with a restricted read-only key. The continuous monitor is included on Growth and Scale. See pricing for details.
Questions
What is discount leakage?
It is the difference between the list price of your plans and what customers actually pay, caused by discounts that are larger, longer or more common than intended. Typical sources are forever coupons, stacked discounts, manual custom prices and old prices left on renewals.
How do you calculate discount leakage?
For each active subscription, subtract the price paid from the current list price of the same plan and interval. Add up the gaps per month, then split them by cause: coupons, custom prices, legacy prices and annual discounts.
Is every discount leakage?
No. An annual discount you chose deliberately, or a time-limited launch offer that ends on schedule, is pricing policy. Leakage is the part that is unintended, forgotten or larger than the policy allows.
Can I fix discount leakage without upsetting customers?
Usually yes. The safest fixes are ending discounts that were meant to expire, stopping new forever coupons, and capping stacked discounts. Changing what existing customers pay is a separate decision and works best with notice.
Does Monetisation remove coupons from Stripe?
No. Monetisation reads Stripe with a restricted read-only key and never changes coupons, prices or subscriptions. It shows where the leakage is and measures the effect of the changes you make.
See what your own site is leaving on the table
A sample audit reads your public pages and returns the first three opportunities with estimates and methods. About a minute, no card.