How do you check that contracts are billed correctly?
Turn every contract into billable attributes such as rate, discount, indexation and minimum commitment, then compare them with the invoice lines.
You check that contracts are billed correctly by first turning each contract into a set of billable attributes: rates, units, discounts with their end dates, indexation, minimum commitments, volume tiers, invoicing frequency and what is and is not included. You then put those attributes next to the actual invoice lines per customer. Every difference without a recorded reason is an error, usually at your own expense. Start with your twenty largest contracts and a random sample, then make the check recurring.
Why contracts and invoices drift apart
A contract is drafted and signed once. It is then translated into a setting in the billing system: an item, a price, a frequency. That translation is usually done by hand, by someone who did not negotiate the contract. Anything missed or copied incorrectly along the way repeats on every invoice.
Then the contract changes. An addendum arrives, a price agreement by email, a temporary discount. The contract on paper and the setting in the system drift further apart. This pattern, and why it is so common, is described in revenue leakage between contract and invoice. This article is about how you check it.
Step 1: turn the contract into attributes
You cannot put a twenty-page contract next to an invoice. A list of ten attributes you can. The first step is therefore to record, for each contract, the attributes that determine what should be invoiced.
| Attribute | Example | Where it goes wrong |
|---|---|---|
| Rate per unit | EUR 95 per hour, EUR 12 per user per month | Old rate in the system, wrong price list |
| Unit and quantity | 40 licences, 3 sites, 20 hours per month | Quantity not updated after expansion |
| Discounts | 10 percent in year 1 | Discount continues after year 1 |
| Indexation | Consumer price index on 1 January, capped at 5 percent | Not applied |
| Volume tiers | Above 500 units EUR 8 instead of EUR 10 | Tier miscalculated or applied too early |
| Minimum commitment | At least EUR 2,000 per month | Customer buys less, minimum not invoiced |
| Out-of-scope rate | Outside scope EUR 110 per hour | Additional work at standard rate or not invoiced |
| Included and excluded | Two maintenance visits a year included | Third visit not invoiced |
| Invoicing frequency and timing | Annually in advance | Monthly in arrears |
| Term | 1 March 2024 to 28 February 2027 | Invoicing stops too early or continues after the end |
Not every contract has every attribute. But if you fill in this table for each contract, you have a reference to check against. For contracts stored as PDFs, this is the bulk of the work. AI can help by extracting the relevant clauses from the text and proposing them as fields. How that works and where the limits are is covered in can AI check whether contracts are billed correctly.
Step 2: pull the invoice lines
Export all invoice lines per customer over a closed period from your billing or accounting system, for example the last twelve months. For each line you need: customer, date, item or description, quantity, unit price, discount, total.
Bear in mind that a contract is often invoiced in several ways: a fixed monthly invoice for the subscription, separate invoices for additional work, an annual invoice for a licence. You need all of them to see the full picture per contract.
Step 3: compare attribute by attribute
Now you put the two side by side. For each attribute you ask one question.
- Rate. Is the unit price on the invoice equal to the contract rate, including all indexation applied? See also revenue leakage from missed price indexation.
- Quantity. Is the invoiced quantity equal to the contracted quantity, or to actual usage if that is higher and the contract allows for overage?
- Discount. Is the discount applied as agreed, and does it stop on the end date?
- Volume tiers. Is the tier applied only from the agreed threshold, and calculated over the right period?
- Minimum. If the customer buys less than the minimum, is the minimum invoiced?
- Additional work. Is work outside the scope invoiced, and at the agreed out-of-scope rate?
- Included. Is anything above the included quantity invoiced separately?
- Frequency and term. Is the invoicing rhythm right, and does it start and end on the right date?
The result is a list of deviations per contract, each with an amount in euros per year.
Step 4: start smart, not complete
Checking hundreds of contracts in one go grinds to a halt. Start with two groups.
The twenty largest contracts. This is where most of the value sits, and an error of a few percent here is immediately a large amount.
A random sample of twenty other contracts. This tells you whether errors are just as common in small contracts. Often they are more common, because they get less attention.
If you find many deviations in both groups, it is worth checking all contracts. If you find few, you can limit yourself to the large contracts and an annual sample.
Worked example
Worked example: suppose a facilities services company checks 40 contracts: the 20 largest with a combined annual value of EUR 1.6 million and a sample of 20 smaller ones worth EUR 280,000 together. The outcome:
- 11 contracts with no indexation applied, on average EUR 2,100 a year short: EUR 23,100.
- 4 contracts with a discount running past its end date, on average EUR 3,400 a year: EUR 13,600.
- 3 contracts with a minimum commitment that is not invoiced when the customer falls below it, on average EUR 1,900 a year: EUR 5,700.
- 6 contracts where additional work is invoiced at the standard rate instead of the higher out-of-scope rate, on average EUR 800 a year: EUR 4,800.
Together EUR 47,200 a year on EUR 1.88 million of contract value checked, roughly 2.5 percent. If the sample is representative of the remaining contracts, the total leak is larger. That is exactly the question the next round has to answer.
Step 5: from check to process
A one-off check finds what is wrong now. To stop new errors arising, you need three things.
- A contract register with attributes as fields. Not the PDF, but the table from step 1, maintained for every new contract and every change. This can live in your CRM, your ERP or a separate contract management system.
- A handover with a check. Whoever sets up a new contract in the billing system has it checked by someone else against the attribute list.
- A recurring comparison. Monthly or quarterly, automated where possible. That way new deviations are found before they run for a year.
If you want to know not only whether invoices are right line by line, but also whether a contract has delivered what it promised over its full term, the next step is checking contract value against realised revenue. For the broader approach to finding leaks across your whole revenue chain, see how to find revenue leakage in a business.
Checklist for every new contract
- Have all billable attributes from the contract been captured in a register?
- Is the rate in the billing system equal to the contract rate?
- Does every discount have an end date in the system?
- Is the indexation date in a calendar with an owner?
- Is it recorded what is included and what counts as additional work, with the out-of-scope rate?
- Has any minimum commitment been set up or recorded as a check?
- Has a second person checked the setup against the contract?
Frequently asked questions
How many contracts should I check?
Start with the twenty largest and a random sample of twenty others. The outcome tells you whether a full check is worth it.
What do I do about past errors?
Always correct from now on. Whether you back-bill for the past depends on the contract terms, the amounts and the relationship with the customer. Record the decision per customer. If you are unsure what the contract allows, have it reviewed legally and check the rules in your jurisdiction.
Who should carry out this check?
Someone who can read the contract and understands the billing system. Often that is a controller or a finance employee with commercial knowledge. It works best if it is not the same person who set the contracts up in the system.
How often do new deviations arise?
With every new contract, every change and every indexation date. For companies with many contract changes, a monthly comparison is sensible. Otherwise quarterly is enough.
More in this cluster
- How do you find revenue leakage in a business?Start here
- How do you detect revenue leakage automatically?
- 10 signs your business is leaving revenue on the table
- How do you check that all revenue is invoiced?
- How do you check CRM against billing?
- How do you check sales orders against invoices?
- How do you check contract value against realised revenue?
- How do you find forgotten invoices?