How do you calculate revenue leakage?
Calculate revenue leakage per finding: the gap between agreement and invoice, one-off or recurring, times the duration. The method step by step.
You calculate revenue leakage per finding, not as one big number. For each discrepancy you establish what should have been invoiced under the agreement, what was invoiced, whether the difference is one-off or recurring, and how long it has been running. The formula per finding is: difference per period multiplied by the number of periods. The sum of all findings, split into what has already been lost and what keeps leaking every year, is your revenue leakage.
That sounds simple, and the arithmetic is. The hard part lies in establishing what should have been invoiced, in distinguishing between types of leak and in extrapolating honestly from a sample. The full method is below. For the basics, see the complete guide to revenue leakage.
The three numbers per finding
Every finding needs three numbers.
1. The expectation. What should have been invoiced? You take that from the source of the agreement: the deal in the CRM, the contract, the price list, the recorded hours or the quantities delivered.
2. The reality. What was invoiced? You take that from invoicing or the accounts, at invoice line level.
3. The time. Over what period has the difference been running, and is it one-off or recurring?
With those you calculate two amounts:
- Historical leakage: the difference over the period it has already been running. This is money you have already missed.
- Annual leakage: the difference per year if nobody intervenes. This is money you will keep missing from now on.
The distinction matters, because the approach differs. Historical leakage can sometimes be recovered. Annual leakage can always be stopped.
How do you measure revenue leakage? The method in five steps
Step 1: decide which checks to run
You cannot measure everything at once. Choose the checks that fit your business model. Common checks:
| Check | Expectation from | Reality from |
|---|---|---|
| Won deal without an invoice | CRM | Invoicing |
| Invoiced amount lower than the deal | CRM | Invoicing |
| Indexation not applied | Contract | Invoicing |
| Volume tier or minimum not applied | Contract | Invoicing |
| Discount continued past its end date | Contract or CRM | Invoicing |
| Additional work not invoiced | Time sheets or project administration | Invoicing |
| Quantities higher than invoiced | Service desk, product data, ERP | Invoicing |
| Short payments written off | Invoicing | Payments |
More examples of checks are in 25 examples of revenue leakage.
Step 2: choose a period
Take at least twelve months. Any shorter and you miss annual events such as indexation. Longer gives a fuller picture of historical leakage but takes more work.
Step 3: collect and connect the data
For each check, export the expectation and the reality. Connect them at customer level and, where possible, at deal, contract or order level. This is most of the work. A shared customer number between the CRM and the accounting system saves a great deal of effort.
Step 4: calculate per finding
For every discrepancy:
- Difference per period = expected amount per period minus invoiced amount per period.
- Historical leakage = difference per period x number of periods it has been running.
- Annual leakage = difference per period x number of periods per year. For a one-off finding this is zero.
Worked example: suppose a customer has a contract of EUR 2,500 a month with annual indexation of 3 percent on 1 January. Indexation has not been applied for the past two years. It is now the end of December of the second year.
- Year 1 expected: EUR 2,575 a month. Invoiced: EUR 2,500. Difference: EUR 75 a month, EUR 900 over the year.
- Year 2 expected: EUR 2,575 x 1.03 = EUR 2,652.25 a month. Invoiced: EUR 2,500. Difference: EUR 152.25 a month, EUR 1,827 over the year.
- Historical leakage: EUR 900 + EUR 1,827 = EUR 2,727.
- Annual leakage from January, including year 3's indexation: EUR 2,500 x 1.03 x 1.03 x 1.03 = EUR 2,731.82 expected, so EUR 231.82 a month, almost EUR 2,782 a year.
One customer, a small percentage, and after three years an annual leak of more than 9 percent of the original contract value. That is how compounding works.
Step 5: add up and rank
Add up all findings, separately for historical and annual leakage. Then rank them by annual leakage. That is where to start, because that is the money you keep missing every year.
Extrapolating from a sample
Often you do not check every customer but a sample. Then you have to extrapolate. Three rules:
Choose at random. If you only check the customers you already have doubts about, you overestimate the leak. If you only check the largest customers, who are often watched more closely, you may underestimate it.
Split by segment. Customers with and without an indexation clause, large and small contracts, long-standing and new customers. Extrapolate per segment, not across everything.
Report a range. With a small sample the uncertainty is large. If you find a leak with 3 out of 30 customers, the real share across your whole customer base could be considerably higher or lower than 10 percent. Give a lower and an upper bound, and enlarge the sample if the gap between them is too wide to base a decision on.
Worked example: suppose you have 400 customers on contract. In a random sample of 40, you find a leak with 6 customers, averaging EUR 900 a year.
- Share in the sample: 15 percent.
- Extrapolated: around 60 customers x EUR 900 = EUR 54,000 a year.
- Cautious range: report, for example, EUR 30,000 to EUR 80,000 and call it an indication. If you want more precision, double the sample.
Confidence per finding
Not every finding is equally firm. A deal without an invoice where the customer signed the contract is certain. A customer who has 58 users according to the service desk system while 45 are invoiced is probable, but there may be test accounts or former employees that have not been cleaned up.
Give every finding a confidence level, for example high, medium or low, and report the totals per level. That stops the board from seeing a number that later turns out to be wrong, and it helps with prioritising: start with the findings that are certain and large.
Recoverable versus stoppable only
For every finding, also distinguish what you can do with it:
- Recoverable. You can still invoice, because the contract allows it and the relationship can bear it. An invoice for last month's additional work, a deal that was never invoiced.
- Stoppable only. Recovery is contractually impossible or commercially unwise. An indexation skipped three years ago. You correct from now on.
The recoverable part is the one-off return on your analysis. The annual leakage you stop is the structural return. Both count in a business case, but in different ways.
Common mistakes when calculating
- Reporting only historical leakage. It then looks like a one-off problem, while the annual leakage matters more.
- Counting deliberate deviations. A deal delivered free of charge on purpose as compensation is not a leak. Ask before you count.
- Forgetting compounding. With indexation the difference grows every year. Calculating only the first year underestimates it.
- Matching too coarsely. Matching an invoice at customer level to a deal at customer level can hide a leak when a customer has several deals. Match as finely as your data allows.
- One figure without a range. With a sample, a point estimate is false precision.
Checklist for your calculation
- Do I have a clear source for the expectation and for the reality for each check?
- Have I looked at at least twelve months?
- Have I calculated historical and annual leakage separately?
- Have I included compounding for indexation and other recurring differences?
- Have I excluded deliberate deviations?
- Have I set a confidence level for each finding?
- Have I given a range when extrapolating?
- Have I separated recoverable from stoppable only?
Where the checks come from in your own revenue chain is set out in where revenue leakage comes from. What to expect from the result compared with the commonly cited range is in how much revenue a B2B company leaks on average.
Frequently asked questions
What is the formula for revenue leakage?
Per finding: difference per period multiplied by the number of periods. The total is the sum of all findings, split into historical leakage (already missed) and annual leakage (continues without intervention).
Do I have to check every customer?
Not for a first estimate. A random sample per segment is enough to establish the order of magnitude. To actually close the leaks you will eventually need to look at every customer, because you want to find each leak, not just know the average.
How do I calculate a leak if I cannot find the agreement?
Then you cannot count it as a certain leak. Record it as a low-confidence finding and track down the agreement. The absence of a recorded agreement is, incidentally, a risk you will want to resolve in its own right.
Do written-off amounts count as leakage?
Write-offs without a good reason do. Write-offs after a justified complaint or a customer's insolvency do not; that is a different kind of loss. Check the reason for each write-off.
More in this cluster
- What is revenue leakage? The complete guideStart here
- Where does revenue leakage come from?
- How much revenue does a B2B company leak on average?
- 25 examples of revenue leakage
- Revenue leakage between CRM and billing
- Revenue leakage between contract and invoice
- Revenue leakage from wrong prices
- Revenue leakage from missed price indexation