Where does SaaS revenue leak between billing and Stripe?
Last reviewed 2026-08-31
SaaS revenue leaks in the gaps between what you billed, what Stripe collected, and what landed in your bank: failed and uncollected charges, processor fees above the rate card, refunds and disputes handled wrong, unreleased reserves, and payouts that never fully arrive. Matching the records against each other, pair by pair, surfaces it.
- The leak lives between billing, the Stripe settlement, and the bank deposit.
- Failed and uncollected charges are the quietest and often the largest.
- Fee creep above the contracted rate adds up across volume.
- There is no reliable public benchmark; the only way to know your number is to reconcile.
What is revenue leakage?
Revenue leakage is money you earned that never reaches you, lost somewhere between the sale and the deposit rather than to a discount you agreed to. It is distinct from churn and from bad debt: nobody cancelled and nobody refused to pay. The invoice was right, the customer was willing, and the money still did not arrive in full. Because no single event marks it, leakage does not appear as an error in any one system, which is what makes it durable.
How do you detect revenue leakage?
Detection is a reconciliation problem, not a reporting one. You cannot see leakage in a revenue dashboard, because the dashboard reports what was collected and the leak is the difference between that and what was owed. You detect it by matching records that should agree, pair by pair: billing against the processor, the processor against the bank. Every line that does not reconcile is either explainable or it is leakage, and the ones that cannot be explained are the number.
Where do failed and uncollected charges hide?
Cards decline, retries lapse, and dunning misses. The invoice says the revenue is due; Stripe never collected it. Unless something reconciles billing against actual collections, that revenue is simply gone, and it does not show up as an error anywhere. This is usually the quietest category and often the largest, because a failed charge leaves an invoice that still looks correct in your billing system.
How does fee creep add up?
Effective processing fees drift above the contracted rate through cross-border charges, currency conversion, and mix changes. Be precise about what counts here: Stripe does not return the original processing fee when you refund a payment, so that fee staying put is documented behaviour rather than a leak. The leaks are the same fee taken twice, a rate above the one you contracted, and a dispute you won whose funds were never reinstated. Individually small, these compound across every transaction, and because the effective rate moves gradually there is no month where it looks obviously wrong.
What goes wrong with payouts and reserves?
Payout batches are delayed or arrive short, and platform reserves meant to be released on a schedule sometimes are not. Because a payout nets thousands of transactions into one deposit, a short or missing payout is easy to miss against a plausible-looking total. Reserves are the most commonly forgotten, since releasing them requires someone to notice that a scheduled release never happened.
How often should detection run?
As often as the money moves, which for most SaaS billing means every payout cycle. The reason is practical rather than tidy: disputes, carrier claims, and processor corrections all have windows, and a leak found six months later is often a leak you can document but no longer recover. Running it per cycle also keeps the exception volume small enough to actually work.
Sources and references
- Stripe — refundsStates that Stripe processing fees on the original transaction are not returned when a payment is refunded. Source for separating expected fee behaviour from an actual leak. Checked Aug 2026.
- Stripe — disputesDescribes a dispute immediately reversing the payment, with Stripe debiting both the payment amount and the dispute fee from your balance. Funds are reinstated when a dispute closes in your favour (the charge.dispute.funds_reinstated event). Checked Aug 2026.
Common questions
How big is the leak, typically?
There is no reliable public benchmark, and we will not put a fabricated number on it. The free review reconciles your real data and gives you the actual figure.
Isn't our finance team already catching this?
Most finance teams reconcile totals and cash, not every charge against the Stripe settlement and the bank. The per-transaction match is a different, more specialized job, which is exactly what slips.
Do you also handle marketplace payouts?
Yes. Marketplace and Connect payouts reconcile the same way: what was owed to each party against what Stripe actually transferred.
See your own number, free
A free three-month review reconciles your real data and shows you exactly what is recoverable. You keep the findings.