A founder I work with was proud of his growth number. Up 38% year over year, clean board deck, everyone happy. Then his new head of finance ran a reconciliation between the CRM, the billing system, and the bank. The CRM said they had closed $6.1M in new and expansion revenue. The billing system had actually invoiced $5.6M. The gap was half a million dollars of revenue that got sold, got agreed, got signed, and never turned into an invoice.
Nobody stole it. There was no fraud, no bad actor. It leaked. A few renewals that never got flagged, a handful of expansion add-ons that never got billed, three deals where a launch discount was supposed to expire after twelve months and quietly never did. Small holes, spread across a year, adding up to real money.
That is revenue leakage, and if you run a B2B company past about 30 people, you have some version of it right now. You just might not have gone looking yet.
What revenue leakage actually is
Revenue leakage is money you earned that never made it into the books. Not lost deals, not churn you can see, not market softness. Earned revenue, agreed and often signed, that fell through a crack between two systems or two teams before it became cash.
The reason it is dangerous is that it hides. A lost deal shows up in your win rate. Churn shows up in your retention number. Leakage shows up nowhere, because by definition it is the revenue nobody is tracking. It sits in the gap between what your CRM thinks happened and what your billing system actually did, and unless someone reconciles the two, it stays invisible.
The numbers are worse than people expect. SaaS companies lose an average of 4 to 10% of revenue to leakage every year, per multiple 2025 industry studies. MGI Research puts the EBITDA hit at 1 to 5% annually, which for a company doing $10M is somewhere between $100K and $500K evaporating with no obvious cause. Enterprise companies fare worse, losing up to 20%. And roughly 42% of companies are actively leaking without a clear picture of where.
Of annual revenue lost to leakage at a typical B2B SaaS company. It never appears on a dashboard, because it is the revenue nobody is measuring.
The five places money actually leaks
I have done enough of these audits to know the money is almost never in one big hole. It is in five small ones. Here is where I look first, roughly in order of how often I find something.
Let me take the two biggest ones apart, because they are where I find the most money.
The CRM-to-billing gap
This is the number one leak and it is almost always structural. A rep closes a deal in HubSpot or Salesforce. It has a custom discount, a specific billing start date, maybe a multi-year ramp where the price steps up in year two. That deal gets handed to finance or RevOps to set up in Stripe, Zuora, or Chargebee. Somewhere in the handoff, a detail drops. The billing gets configured at a slightly different price. The discount goes in but the expiry does not. The ramp gets flattened into a single flat rate.
Every one of those is a small leak that compounds. The multi-year ramp that got flattened is losing you the year-two step-up on every renewal, forever. And because the deal looks closed and the customer is paying something, nobody notices until an audit catches the mismatch. This is exactly the kind of failure I wrote about in the quote-to-cash breakdown, where the whole path from quote to cash is a relay and every handoff is a place a dollar can fall out.
Missed renewals and stale discounts
These two are cousins. Both come from the same root cause: nobody owns the contract terms after signature.
A missed renewal is the cleanest example. A subscription ends, no reminder fires, the customer does not actively decide to leave, they just lapse. In a healthy renewal process that revenue is 90%+ likely to continue. In a broken one it walks out the door and you find out three months later when someone asks why that logo stopped paying. If your renewals are not systematized, this is probably your single largest recoverable leak, and I go deep on the fix in the renewal motion playbook.
Stale discounts are the inverse and somehow more annoying, because you are actively giving money away. A launch discount with no expiry date. A "friends and family" rate that outlived the friendship. A price that was supposed to step up on renewal and never did because the renewal automation did not check the condition. I have found customers three years into a relationship still paying a first-year promotional rate that everyone forgot about.
Leakage is almost never a decision. It is the absence of one.
Nobody decided to skip that renewal or keep that discount running. The system just had no owner and no check, so the default outcome quietly became the outcome.
How to find your leaks: reconcile three systems
You cannot fix what you cannot see, and the good news is that finding leakage is mostly mechanical. It is a reconciliation, not a mystery. You compare three sources of truth and hunt for the places they disagree.
Line those three up for the same period and the gaps tell the story. Where the CRM says $6.1M and billing says $5.6M, you have a sales-to-billing leak. Where billing says $5.6M and the bank says $5.1M, you have a collection leak. Each gap points at a different fix.
The first time you do this it is a painful manual export-and-match exercise in a spreadsheet. That is fine. Do it manually once so you understand the shape of your leaks before you automate anything. The mistake is trying to buy a tool before you know what you are looking for.
The fix is a monitor, not a one-time audit
Here is the part most people get wrong. They run one big reconciliation, find $400K, feel great, recover half of it, and move on. Then twelve months later the leaks are back, because the underlying process never changed. Leakage is not a one-time cleanup. It is an ongoing condition of running multiple systems that were never designed to agree with each other.
The real fix is a monitor that runs continuously and flags mismatches while they are still small. This is squarely RevOps and automation work, and it is not as heavy as it sounds. The logic is simple: every time a deal closes, check that a matching billing record gets created with the same price, discount, and dates. Every time a renewal date approaches, fire an alert. Every time a discount has an expiry, enforce it. Every time a payment fails, start a dunning sequence.
We build a lot of these monitors with n8n sitting between the CRM and the billing tool, precisely because the reconciliation data includes every price and discount you have ever given, and that belongs on infrastructure you control rather than a third-party SaaS. The build is not glamorous. It is a set of scheduled checks and alerts. But a monitor that catches a flattened ramp the week it happens instead of the year it happens pays for itself on the first real find. If you want the version where we design and wire it end to end, that is what our AI and automation work and our CRM and RevOps builds cover.
Not sure where your revenue is leaking?
Book a free 30-minute audit and we will show you the three reconciliation gaps we would check first and roughly what they are worth.
Book an audit →Give one person the mandate
The tooling matters, but the thing that actually stops leakage is ownership. Every study on this lands in the same place: give a senior person clear responsibility for securing revenue, and make it a real part of their job, not a side quest nobody has time for.
In practice this is a RevOps lead or a revenue-minded finance person who owns the reconciliation, reviews the flagged mismatches every month, and has the authority to chase down the gaps. Without that owner, the monitor becomes another dashboard nobody reads, and you are back to finding the leak a year too late. The technology detects the leak. A person decides to plug it.
This connects to a bigger point I keep making about net revenue retention. Companies obsess over new logos while the revenue they already earned quietly drips away. Plugging leakage is often the highest-return work available to you, because unlike net-new sales, there is no acquisition cost. You already did the hard part. You already won the customer. You are just making sure the money you earned actually shows up.
How leakage connects to the rest of your revenue engine
Revenue leakage is not an isolated problem, it is a symptom. It shows up wherever your systems and your handoffs are loose. Tighten your quote-to-cash process and the CRM-to-billing leak shrinks. Systematize your renewal motion and the missed-renewal leak nearly disappears. Fix your pricing and discount governance and stale discounts stop happening in the first place. Clean up your CRM data and half the reconciliation mismatches never occur, because the source data actually agrees with itself.
Do all four and leakage stops being a scary annual surprise and becomes a small, monitored, mostly-solved line item. That is the goal. Not zero leakage, which is impossible, but leakage that gets caught small and fixed fast instead of compounding in the dark for a year.
Frequently asked questions
What is the difference between revenue leakage and churn?
Churn is revenue you can see leaving: a customer actively cancels or fails to renew and it shows up in your retention number. Leakage is revenue you cannot see leaving, because it was earned and agreed but never got invoiced or collected in the first place. Churn is a customer decision. Leakage is usually a process gap. Both cost you money, but leakage is more dangerous because nothing on your dashboard tells you it is happening.
How much revenue does a typical B2B SaaS company lose to leakage?
Industry studies from 2025 put the average at 4 to 10% of annual revenue, with an EBITDA hit of 1 to 5%. Larger enterprises can lose up to 20%. Roughly 42% of companies are actively leaking without a clear view of where. For a $10M company, that is commonly $100K to $500K a year disappearing with no obvious cause, which is why a reconciliation is almost always worth the effort.
How do I find revenue leakage in my business?
Reconcile three systems for the same period: your CRM (what was sold), your billing system (what was invoiced), and your accounting or bank data (what was collected). Where the CRM total exceeds the billing total, you have a sales-to-billing leak. Where billing exceeds cash collected, you have a collection leak. Do this manually in a spreadsheet the first time so you understand the shape of your leaks before you automate the monitoring.
What is the most common cause of revenue leakage?
The CRM-to-billing gap. A deal closes with a custom price, discount, or ramp schedule, then a detail gets lost when the deal is handed off to be set up in the billing system. The customer ends up paying a slightly wrong amount, and because they are paying something, nobody notices until an audit catches the mismatch. Missed renewals and stale discounts are close behind.
Can I fully eliminate revenue leakage?
No, and chasing zero is a waste of time. As long as you run multiple systems and have humans in the loop, some leakage is inevitable. The realistic goal is to catch it small and fast. A continuous monitor that flags mismatches the week they happen, plus one owner who reviews and chases them, turns leakage from a scary annual surprise into a small managed line item. That is a winnable fight. Perfection is not.
Stop growing the top line while the bottom leaks
The founder from the start of this piece recovered about $300K of that half-million once he knew where to look, and he built a monitor so it stops happening. His growth number did not change. His actual revenue did.
That is the thing about leakage. It is the cheapest revenue you will ever recover, because you already earned it. If you have never reconciled your CRM against your billing system, you almost certainly have money sitting in the gap. Talk to us and we will help you find it and build the monitor that keeps it plugged.