SaaS revenue leakage is the gap between what a company should collect and what it actually deposits. Failed payments, proration errors, underpriced plans, and grace-period overruns drain 1–5% of ARR at the median subscription business — revenue that never appears on a churn dashboard because no customer deliberately cancelled. For portfolio operators managing five, ten, or twenty SaaS companies, each leak source is independent and additive: a 2% leak at one company is a containable nuisance, but 2% across a ten-company portfolio is ten separate root causes bleeding aggregate value.
The five sources of SaaS revenue leakage
Revenue leakage is not a single problem. It is five distinct failure modes, each with different root causes and different recovery mechanics. Most operators know about failed payments. The other four hide in billing logic, pricing strategy, and plan enforcement — areas where nobody is looking until an audit surfaces the gap.
2.3%
Median ARR leakage from billing gaps
5
Common leak sources
30–70%
Recovery rate with automated dunning
Failed payments — the 20–40% of churn that is fixable
Involuntary churn — customers lost to expired cards, insufficient funds, or bank-initiated declines — accounts for 20–40% of total churn at the median SaaS company. Unlike voluntary churn, the customer never decided to leave. The subscription ended because a mechanical failure went unrecovered.
At $10M ARR with 8% annual gross churn, 30% involuntary means $240K per year walked out without a cancellation click. The number is systematically underreported because most dashboards show a single churn rate and never split voluntary from involuntary. The split requires tagging each churn event by cause at the billing-system level — work that few teams do until the problem is already large enough to notice in top-line retention.
Monthly Recurring Revenue
The normalized monthly value of all active subscriptions, excluding one-time charges and usage overages.
Proration and billing gap errors
When a customer upgrades mid-cycle, the billing system prorates the remaining days on the old plan and charges the difference for the new plan. In theory. In practice, proration logic is one of the most error-prone areas in subscription billing because it interacts with coupons, trial extensions, billing anchor dates, and plan changes that happen more than once per cycle.
The result is billing gaps: a customer moves from $100/mo to $200/mo on day 15, but the proration credit is calculated against the wrong anchor date, and the company collects $180 instead of $200 for the remainder. Each gap is small. Over hundreds of subscription changes per month, they compound into a persistent MRR drag that never appears in any report because the subscription object says $200.
Pricing power left on the table
Most SaaS companies reprice once every 12–18 months. Customers acquired at the old price stay at the old price, sometimes indefinitely. A company that raised its entry tier from $49 to $79 last year but grandfathered all existing customers is carrying a $30/mo gap on every pre-increase subscriber — not leakage in the strict sense, but functionally identical: revenue the product earns but the company does not collect.
The median SaaS company has 15–25% of its subscriber base on legacy pricing that is more than one revision behind current rates. Closing even half of that gap through staged migrations or value-anchored increases adds 3–8% to MRR without acquiring a single new customer.
Feature giveaways — enterprise features on starter plans
Plan boundaries erode over time. A customer on the $49 tier gets API access as a one-off concession from sales. Another gets SSO enabled because support said yes during an escalation. Over 18 months, the feature matrix in the product no longer matches the feature matrix in the pricing page. Customers are consuming enterprise-tier value at starter-tier prices.
Feature giveaways are harder to quantify than failed payments because there is no billing event to flag. The only detection method is a periodic audit: compare what each customer's plan entitles them to against what they actually use, and identify accounts where usage exceeds entitlement. The gap is revenue the company already delivered — they just forgot to charge for it.
Grace period overruns
After a payment fails, most billing systems enter a grace period before cancelling the subscription — typically 7–14 days. During that window, the customer retains full access to the product. If the payment is never recovered and the subscription eventually cancels, those grace period days represent free service: product delivered with zero revenue collected.
At a 5% monthly failure rate with a 14-day grace period and a 50% recovery rate, the unrecovered half represents 7 days of free access per failed account per month. Across a base of 2,000 subscribers, that is roughly 2.5% of delivered value that was never billed. Shortening the grace period to 7 days or restricting access during it (read-only mode, feature limits) cuts the leak without meaningfully harming recovery rates.
How revenue leakage compounds across a portfolio
A single company leaking 2% of ARR is a problem the finance team can size, prioritize, and fix within a quarter. The root cause is singular: maybe it is a dunning configuration issue, or a proration bug in the billing system, or a pricing migration that was never completed. One company, one root cause, one fix.
A five-company portfolio with 2% per-company leakage is not one problem five times. It is five independent root causes, each embedded in a different billing system, a different codebase, and a different team's operational priorities. Company A leaks through failed payments because its dunning is default Stripe retry logic. Company B leaks through proration errors because it handles mid-cycle upgrades with a custom webhook that rounds incorrectly. Company C leaks through grandfathered pricing that nobody on the current team remembers agreeing to. Company D has a 21-day grace period that was set during beta and never revisited. Company E gives away SSO because the sales team said yes three years ago.
The aggregate leak across those five companies is not 2% — it is 2% of five different ARR bases, with five different fixes, each requiring investigation by a different team. The portfolio operator who sees "2% leakage" in a quarterly deck sees one number. The reality is five projects, five timelines, and five implementation risks. Prioritization requires knowing which company has the largest absolute dollar leak, which has the easiest fix, and which fix would move the portfolio-level number most efficiently.
The compounding effect is not just additive — it is multiplicative through valuation. Each dollar of leaked revenue reduces ARR, and that reduced ARR is multiplied by 8–15x at exit. A portfolio leaking $500K in aggregate ARR is not losing $500K in value; it is losing $4M–$7.5M in enterprise value at exit multiples. That number is large enough to change how portfolio operators prioritize operational improvements versus growth investments, but it only becomes visible when leakage is measured per-company and aggregated at the portfolio level.
Detecting revenue leakage from Stripe billing data
Every leak source described above leaves traces in billing data. Failed payments produce invoice events with specific decline codes. Proration errors show up as invoice line items that do not match the expected subscription amount. Grace period overruns appear as gaps between the last successful charge and the subscription cancellation timestamp. The data is there — the problem is that nobody is reading it systematically.
Failed payment patterns — velocity, retry success rates, time-to-cancel
The first-order metric is failure rate: what percentage of charge attempts fail in a given month. The median SaaS company on Stripe sees 4–8% of monthly charges fail. But failure rate alone does not tell you how much revenue is at risk. For that, you need three companion metrics.
Retry success rate tells you what percentage of failed charges are eventually recovered through automated retries or card updater services. If your failure rate is 6% and your retry success rate is 50%, your net involuntary churn rate from payment failures is 3%. Time-to-cancel measures how long it takes for an unrecovered failure to result in subscription cancellation — the longer the gap, the more free service you are delivering during the grace period. Failure velocity tracks whether your failure rate is stable, rising, or spiking. A sudden jump from 5% to 12% signals a systemic issue: a card network outage, a payment processor migration, or a pricing change that triggered a wave of declines.
Customer Churn Rate
Percentage of customers who cancel their subscription within a given period, including both voluntary and involuntary cancellations.
Subscription event gaps
Stripe emits events for every subscription lifecycle change: created, updated, invoice paid, invoice payment failed, cancelled. A healthy subscription produces a regular cadence of invoice.paid events. When that cadence breaks — a customer who was billed monthly has a 45-day gap between charges — something went wrong in the billing logic. The charge was skipped, a proration credit zeroed out the invoice, or a coupon expired and the system failed to generate the next invoice at the correct amount.
Detecting these gaps requires comparing the expected invoice cadence (derived from the subscription's billing interval and anchor date) against the actual invoice timeline. The delta between expected and actual is the billing gap. Across a subscriber base of 1,000+ accounts, even a 1% gap rate represents 10 subscriptions per month that are not generating the revenue they should.
The operational implication is that leakage detection is not a one-time audit. Billing logic is complex and changes over time — new plans, new coupons, new proration rules, new payment methods. Each change introduces the possibility of a new gap. Continuous monitoring, comparing expected versus actual revenue at the subscription level, is the only way to catch leakage before it compounds into a material ARR drag.
Building a revenue leakage recovery playbook
Detection tells you where the leaks are. Recovery tells you what to do about them. The two highest-yield interventions — automated dunning and proration audits — address the two largest leak sources and are implementable without changing the product, the pricing, or the sales process.
Automated dunning — the 30–70% recovery opportunity
Failed payment recovery is the single highest-ROI intervention in SaaS revenue operations. Properly configured dunning — smart retry timing, card updater integration, and a multi-touch email sequence — recovers 30–70% of failed charges. The variance in that range is almost entirely explained by implementation quality, not customer base or price point.
Smart retry replaces Stripe's fixed retry schedule with timing optimized for the failure reason. Insufficient funds failures recover best when retried on payroll dates. Expired card failures should wait for the card network's monthly update cycle — typically 2–5 business days after the expiration date. Bank declines benefit more from customer outreach than automated retries.
The email sequence matters as much as the retry logic. Effective dunning starts within 24 hours of the failure, includes a direct link to update payment details (not a link to the login page), and escalates urgency across 3–5 emails over 14–21 days. The first email is informational, not threatening — "your payment didn't go through, here's a one-click link to fix it." Urgency belongs in the later emails.
For portfolio operators, the opportunity scales linearly. Ten companies each recovering an additional 20 percentage points of failed payments translates to $100K–$300K in aggregate annual revenue depending on portfolio ARR. The recovery infrastructure is the same across companies — a standardized dunning playbook deployed to each company's Stripe account, with monitoring at the portfolio level to flag companies whose recovery rates are underperforming the cohort median.
Proration audit — billing logic review cadence
Proration errors are quieter than failed payments but can be equally costly over time. The fix is not a one-time code change; it is a recurring audit process. Every quarter, pull a sample of mid-cycle plan changes from Stripe and compare the invoiced amount against the expected amount calculated from the plan prices, the change date, and the billing anchor. Any discrepancy larger than a rounding error indicates a billing logic bug.
The most common sources of proration errors: coupons that interact unexpectedly with prorated amounts, billing anchor dates that shift when a subscription is paused and resumed, and custom webhook handlers that calculate prorations in application code instead of letting Stripe handle it natively. The fix is usually configuration, not code — setting proration_behaviorcorrectly in the Stripe subscription update call and removing application-level proration logic that was written before Stripe's native support matured.
At the portfolio level, the audit cadence should be standardized: quarterly proration reviews across all companies, with results aggregated into a single leakage report. The companies with the most custom billing logic will have the most proration errors. Those are the ones to audit first and most frequently.
Revenue leakage is recoverable by definition. Unlike voluntary churn, where the customer made a deliberate decision to leave, leakage represents revenue that the product earned and the customer intended to pay — it just never arrived due to a mechanical, billing, or pricing failure. The companies and portfolios that treat leakage as a distinct operational category, separate from growth and separate from retention, consistently recover 1–3 percentage points of ARR that was previously invisible in standard SaaS reporting.