Revenue leakage is recurring revenue a company earned and never collected, or lost without a decision: failed payments that were never retried, cards that expired before renewal, discounts that never ended, seats used but never billed, and renewals that lapsed unnoticed. The seven causes, the formula, a worked example, and how each one shows up in Stripe or any billing system.
Short answer
What is revenue leakage in SaaS?
Revenue leakage is recurring revenue a company earned and then lost without anyone deciding to lose it: failed payments never recovered, cards that expired before renewal, discounts that never ended, seats used but not billed, renewals that lapsed unnoticed, plan changes never invoiced, and ad-hoc credits. It differs from churn (a decision) and from bad debt (usually unrecoverable). Leakage rate = (revenue that should have been collected − revenue collected, excluding customer decisions) ÷ contracted recurring revenue. Billing identifies payment gaps; contracts and usage records are needed to confirm pricing, entitlement and unbilled usage.
Most of what gets called churn in a SaaS company includes a share that was never a decision. A card failed. A discount outlived its term. A contract ended and nobody on either side noticed. None of those customers chose to pay less, and most of the money is recoverable, which is what makes leakage the cheapest revenue a company can find. This post defines it, lists the seven causes with how each shows up in billing data, gives the formula, and sets out how to stop each one.
Revenue loss is any decline in revenue. Churn is loss where the customer decided: they cancelled, downgraded, or negotiated. Leakage is loss where nobody decided. All leakage is loss; most loss is not leakage. The distinction is operational: churn is fixed in the product and in customer success, leakage is fixed in billing operations, and a company that lumps them together sends its CSMs to save customers whose only problem is an expired card.
| Cause | What it looks like | How to detect it | Measurement notes |
|---|---|---|---|
| Failed payments never recovered | An invoice fails, one automated email goes out, nobody follows up, the subscription lapses weeks later | Open invoices with a failed attempt and no later successful payment; subscriptions ended with reason payment_failed | Sum unpaid invoices; exclude later settlements and intentional cancellations. |
| Cards expiring before renewal | The card on file expires in the month before the next charge; the charge fails on schedule | Default payment method expiry date earlier than the next billing date | Expiry is observable; a future failed payment is not certain. |
| Discounts that never ended | A 3-month launch discount is still applied 18 months later | Coupons or discounts on active subscriptions with no end date, or an end date in the past | Small per account, silent, and adds up over years. |
| Unbilled seats or usage | A team of 14 is using an account billed for 10 seats | Active users per account above the billed quantity; metered usage above the invoiced amount | Medium; it is also the expansion nobody asked for. |
| Renewals that lapsed unnoticed | An annual contract reaches its end date; nobody on either side acted; access continues or stops without an invoice | Contracts with an end date in the past and no renewal invoice | Rare but large per incident. |
| Plan changes not invoiced | A customer was upgraded in the product; billing was never updated | Plan or tier in the product differs from the price on the subscription | Medium; common after manual upgrades. |
| Ad-hoc credits and refunds | Support issues a credit to close a ticket; no policy, no record of why | Credit notes and refunds without a linked reason or approver | Small individually; a policy problem, not a billing one. |
Revenue leakage (period) = revenue that should have been collected under existing contracts and price lists − revenue actually collected, excluding amounts lost to explicit customer decisions.
Leakage rate = revenue leakage ÷ contracted recurring revenue for the period.
In practice the numerator is built cause by cause rather than from the top down, because “should have been collected” is only knowable per cause: the failed invoices that never settled, the expected renewal invoices that never issued, the discount amounts past their end date, the unbilled seats at list price.
Illustrative monthly figures, not customer results: a business has $400,000 in contracted monthly recurring revenue. At month-end, distinct unpaid failed-payment invoices total $19,400, including $5,200 with an expired-card reason. Confirmed discounts applied beyond their agreed terms account for $3,100 of missed billing; unbilled seats account for $2,700; and contractually due renewals without an invoice account for $4,000. Each amount covers the same month and excludes the others.
This is a diagnostic gap, not recoverable cash or a forecast. Confirm the contractual entitlement and invoice status first. Report money actually collected separately from an estimate of what could be recovered.
Payment recovery is one part of customer success. The customer success account-review workflow connects this work with adoption, customer context and renewal ownership.
Stripe already offers retry scheduling and recovery features. CheckStripe Smart Retries before adding another process. Exeechain's failed-payment recovery workflow connects the account review and follow-through; its renewal management guide covers contracts needing a customer conversation.
Start with the invoice, its payment attempts and its latest status. Separate invoices still awaiting collection from those already paid, voided or intentionally credited. For card expiry, compare the current payment method with the next billing date; expiry alone is not a loss. For discounts, compare what was applied with the agreed promotion terms. For seats and usage, reconcile billing quantities with product records and the contract. For renewals, confirm the contractual obligation before labeling a missing invoice as leakage. The Stripe measurement notes explain why a cancellation, unpaid invoice and collected payment must remain separate measures.
Each cause becomes a monitored condition with an owner and a response:
The common thread is that every check reads billing data rather than relying on someone remembering. Leakage is what happens in the gaps between people's attention, and the fix is to stop depending on attention.
Failed and expired-card revenue is recoverable for weeks after the failure; most customers pay when asked properly, because they never intended not to. Lapsed renewals are recoverable if the customer is still using the product. Discounts and unbilled seats are recoverable from the next invoice forward, and rarely retroactively; raise them as a conversation, not a back-bill. The one thing not to do is project a recovery rate before running the sequence on your own book. The share you recover depends on your customers and your timing, and a figure quoted in advance is someone else's.
Revenue leakage in SaaS is recurring revenue the company earned the right to collect and then lost without anyone deciding to lose it: subscription payments that failed and were never retried or fixed, cards that expired before a renewal charge, discounts that were meant to end and never did, seats or usage delivered but never billed, and renewals that lapsed because nobody noticed the date. It differs from churn in that the customer did not choose to leave, and from bad debt in that it is usually recoverable.
Revenue loss is any decline in revenue, including the customer deciding to cancel, downgrade or negotiate a lower price. Revenue leakage is the subset of loss that happened without a decision on either side: a failed payment, an unbilled seat, a discount nobody removed. All leakage is loss; most loss is not leakage. The distinction matters because leakage is fixed in billing operations and loss is fixed in product and customer success.
The main causes of revenue leakage in a subscription business are failed payments never recovered, cards expiring before the next charge, promotional discounts that outlive their term, usage or seats consumed above the billed amount, contracts that auto-renewed at an old price or lapsed unnoticed, invoices issued late or not at all after a plan change, and refunds or credits applied without a policy. Measure each cause on your own book; their relative size varies.
Revenue leakage for a period = revenue that should have been collected under existing contracts and price lists − revenue actually collected, excluding amounts lost to explicit customer decisions (cancellations, negotiated discounts). The revenue leakage rate is that figure divided by contracted recurring revenue for the period. In practice it is computed cause by cause: failed invoices that never settled, expected renewals that did not bill, discounts past their end date, and unbilled usage, each valued from billing records.
In Stripe, revenue leakage shows up as invoices with status open or uncollectible that carry a failed payment attempt and were never settled; subscriptions with a default payment method whose card expiry precedes the next billing date; subscriptions with a coupon that has no end date; subscription items whose quantity is below the seats actually in use; and subscriptions that ended with cancellation reason payment_failed. Each is a query against the subscription, invoice and payment-method objects.
Revenue leakage is prevented by turning each cause into a monitored condition with an owner: a recovery sequence that starts the day an invoice fails and stops when it settles, a card-expiry check that emails the customer a month before the charge, an end date on every discount, a monthly reconciliation of seats used against seats billed, and a renewal calendar read from the billing system rather than a spreadsheet. The common thread is that each check reads billing data, not memory.
The example above is invented and demonstrates reconciliation, not Exeechain performance. Billing records can establish payment and renewal status. Unbilled seats require product usage and contract evidence; billing alone cannot establish them. Use the leak benchmark for an assumption-based estimate, and review actual records before treating an amount as a loss.
Founding customers
If this is the problem you are solving right now, the first Exeechain customers get 15% off your first 12 months. We sign your NDA before you connect any data. The free plan runs the whole product on our sample book, with no card.
Keep reading
Customer success
9 min read · Sep 20, 2026
Retention metrics
8 min read · Sep 20, 2026
Customer success
8 min read · Sep 20, 2026
First scores in 15 minutes. Every connected signal read within 24 hours. From $299/mo. Failed payments, expiring cards and slipping renewals named per customer, then recovered under your approval.
Not ready to switch? Size your leak from your MRR and churn rate, with no billing access at all.