Guide · Discount leakage
Discount leakage: how expired promos keep charging your customers less
Why forever coupons and promo codes that were never turned off accumulate into a multi-thousand-dollar drag on revenue, and the safest way to expire them without creating a customer-service incident.
A sales rep runs a 15 percent launch promo. The coupon gets set to last forever, because nobody is thinking about the billing back end while closing a deal. Two years later, a cohort of customers is still paying 15 percent less than everyone else, and the cumulative shortfall has quietly grown larger than the promo ever brought in.
Discount leakage is recurring revenue you lose because a discount that was supposed to be temporary became permanent. On Stripe it usually takes the shape of a coupon with a forever duration or no expiration date, still attached to an active subscription long after the promotional reason for it ended. The customer is happy, your dashboard looks fine, and the gap between what they pay and what they should pay compounds every month. This guide explains how discount leakage forms on Stripe, why it is hard to see, and how to find and safely expire leaky discounts without creating a customer-service incident.
What discount leakage is
Stripe coupons have a duration: once, repeating for a set number of months, or forever.1 A once or repeating coupon expires on its own. A forever coupon does not. It keeps applying its discount to every invoice for as long as the subscription lives. That is sometimes exactly what you want, for a genuine lifetime deal or a grandfathered rate. The leak happens when a forever coupon, or any coupon with no redeem_by cutoff, is used for a discount that was only ever meant to be temporary, and then nobody goes back to remove it.
The mechanics are murkier because discounts reach a subscription through more than one path. A coupon can be attached directly, or applied through a promotion code that customers enter at checkout, and a discount can be stacked, with more than one coupon on a single subscription.2 Each of these is a place a leak can hide.
| Coupon duration | Behavior | Leak risk |
|---|---|---|
once |
Applies to one invoice, then stops | Low |
repeating |
Applies for a set number of months, then stops | Low to moderate |
forever |
Applies to every invoice indefinitely | High when used for a temporary promo |
How discounts become permanent leaks
The pattern is consistent across every revenue-leakage account: a temporary discount becomes permanent because no system enforces the expiry.3 A six-month onboarding discount with no end date. A launch promo code that was never deactivated and keeps getting shared. A negotiated rate for an early customer that everyone forgot was supposed to step up at renewal. The discount silently outlives its purpose, and the longer the subscription lives, the more it costs.4
Finance best practice is that promotional and flat-rate discounts should be time-bound and configured with explicit expiration at the catalog level, precisely so that one-time deals do not renew indefinitely.5 When they are not, a leak that compounds is the predictable result.
Promotion codes make this worse, not better. A code is easy to share, so a deal meant for one cohort spreads to customers it was never scoped for, and because the code wraps a coupon with its own duration, a single forever coupon behind a popular code can quietly discount a long tail of subscriptions. Stacking compounds it further: when more than one coupon lands on the same subscription, the effective discount is larger than anyone intended and harder to reason about from the dashboard alone.
Why discount leakage is hard to see
Stripe will show you a coupon and the customers it is attached to, but it will not tell you which of those customers should have rolled off the discount by now. That judgment lives in a promo's original intent, which is usually in a Slack thread or someone's memory, not in structured billing data. Detecting it means cross-referencing every active subscription against its attached coupons, checking each coupon's duration and expiration, and deciding which discounts have outlived their reason, which is close to impossible to do reliably by hand across hundreds of subscriptions.6
How to find discount leakage
In Stripe Sigma, you can query for active subscriptions that have a coupon attached where the duration is forever or there is no redeem_by date, then estimate the annual value of each discount. It is a writable query, but it requires handling the several discount shapes correctly, and it only tells you the discounts exist, not which ones are legitimate. The other route is a revenue audit that includes a discount leakage check, surfaces every leaky discount with its annualized cost, and leaves the keep-or-remove decision to you.
How a Stripe revenue audit surfaces it
Bleedpoint's discount leakage check looks for the canonical pattern: a coupon with no redeem_by, on a forever or open-ended duration, still attached to an active subscription, including discounts applied through a promotion code and cases where multiple coupons are stacked on one subscription. For each leaky discount it estimates the annualized impact, which is the discount amount applied over a year. A 15 percent discount on a $49-a-month plan, for example, is about $88 a year per customer, and across a cohort that number adds up fast.1
The audit is a diagnostic. It surfaces the leaks and values them. It does not remove a coupon or change anyone's pricing, because those are actions with customer-facing consequences that you should take deliberately.
That is the role Bleedpoint plays: read-only access, the discount leakage check alongside four other revenue-leak checks, and a PDF report listing each leaky discount and what it costs per year. The sample report shows how discount leakage findings are presented.
How much discount leakage actually costs
The per-customer numbers look small, which is exactly why the total goes unnoticed. A 15 percent discount on a $49-a-month plan is about $88 a year. On its own that is a rounding error. But these discounts cluster, because they come from campaigns: a launch cohort, a conference promo, a partner deal. Forty customers carrying that same forever discount is roughly $3,500 a year, every year, and a larger early cohort on a higher-priced plan can run well into five figures annually.3
The reason it stays hidden is that the money never leaves as a visible event. There is no failed charge, no refund, no chargeback. Every invoice is paid in full and on time, just for less than it should be. Against the headline billing-leakage range of a few percent of revenue that most subscription businesses carry, an aging book of forever discounts is one of the quieter contributors, but it is also one of the easiest to fix once you can see it.
How to expire a leaky discount safely
Removing a discount touches a paying customer, so it is worth doing carefully. The safe sequence is to decide your policy first, choosing which discounts you will honor as genuine lifetime or grandfathered rates and which you will sunset. Then notify affected customers before their next renewal, with clear notice that the promotional rate is ending. Then remove the coupon so the next invoice bills at the standard rate. Doing it without notice is the fastest way to turn a quiet revenue win into a churn event, which is why the audit deliberately stops at surfacing the leak and leaves the rollout to you.
Frequently asked questions
What is discount leakage?
Discount leakage is recurring revenue you lose because a discount that was meant to be temporary became permanent. On Stripe it usually takes the shape of a coupon with a forever duration or no expiration date, still attached to an active subscription long after the promotional reason for it ended. The customer keeps paying a reduced rate, and the gap between what they pay and what they should pay compounds every month.
What is a forever coupon in Stripe?
A forever coupon is a Stripe coupon with its duration set to forever, meaning it applies its discount to every invoice for the entire life of the subscription with no automatic end. This is the right choice for a genuine lifetime or grandfathered rate, but it becomes discount leakage when it is used for a discount that was only ever meant to be temporary and is then never removed.
How do I find leaky discounts in Stripe?
In Stripe Sigma you can query for active subscriptions that have a coupon attached where the duration is forever or there is no redeem_by date, then estimate the annual value of each discount. Alternatively, a revenue audit tool that includes a discount leakage check surfaces every leaky discount with its annualized cost, including discounts applied through promotion codes, without any SQL.
How do I expire a discount without upsetting customers?
Decide your policy first, choosing which discounts you will honor as genuine lifetime rates and which you will sunset. Then notify affected customers before their next renewal with clear notice that the promotional rate is ending. Then remove the coupon so the next invoice bills at the standard rate. Removing a discount silently, with no notice, is the fastest way to turn a quiet revenue win into a churn event.
Does an audit remove coupons or change pricing?
No. A read-only audit reads your billing data and produces a report listing each leaky discount and what it costs per year. It cannot remove a coupon, change a customer's pricing, or send any customer communication. The keep-or-remove decision and the rollout are deliberate actions you take in the Stripe Dashboard.
Can discounts applied via promotion codes leak too?
Yes. A promotion code is just the customer-facing wrapper around an underlying coupon, so a leaky coupon delivered through a promotion code leaks exactly the same way as one attached directly. A thorough discount leakage check follows the promotion code to the underlying coupon, and also handles cases where more than one coupon is stacked on a single subscription.
See which discounts are quietly outliving their purpose.
Free scan. See exactly what you're leaking, then unlock the full report for $99. Read-only access, no subscription required.
References
- Stripe. Discounts and coupons. Stripe Documentation. docs.stripe.com
- Stripe. Promotion codes. Stripe API Reference. docs.stripe.com
- Turnstile. What Is Revenue Leakage? Causes and Prevention for SaaS. Example of a six-month discount paid for two years. turnstile.ai
- timetoreply. Revenue leakage: Causes, examples, and prevention strategies. On promo codes that never expire. timetoreply.com
- Ordway Labs. Coupons and Discounts in SaaS Billing: Explained. On time-bound, catalog-level discount configuration. ordwaylabs.com
- RevReclaim. What is Revenue Leakage in SaaS? The Complete Guide. On the difficulty of manual coupon auditing at scale. revreclaim.com