SaaS billing leakage at MSPs
How MSPs lose margin on resold software licences, and how to reconcile licences per customer each month across vendor, customer environment and invoice.
SaaS billing leakage at MSPs is the gap between the software licences a managed service provider buys from vendors and distributors and what it bills its customers for them. It arises because licences are added, upgraded or renewed in the vendor portal without the customer's billing being updated, because cost prices rise while selling prices stay the same, and because terms with the vendor and with the customer do not line up. The fix is a monthly reconciliation per customer and per licence type: purchased, assigned, billed.
For many MSPs, licence resale is a large share of revenue at a thin margin. That is precisely what makes it sensitive: a few percent of unbilled licences can eat a large part of the margin on that revenue stream. This article covers only that part. The wider overview of leaks at MSPs is in revenue leakage at MSPs.
Which three numbers have to match?
For every licence at every customer there are three numbers.
- Purchased. The number of licences you take and pay for with the vendor or distributor, for this customer.
- Assigned. The number of licences actually assigned to a user or device in the customer's environment.
- Billed. The number of licences you charge the customer for.
When everything reconciles, they are equal, or the difference is explained: a few spare licences the customer deliberately takes, a licence for your own admin account that is covered by your service fee. When revenue is leaking, they diverge.
| Situation | What it means | Consequence |
|---|---|---|
| Purchased higher than billed | You pay for licences you do not recharge | Direct leakage |
| Purchased higher than assigned | The customer has unused licences | Waste, and an optimisation conversation with the customer |
| Assigned higher than billed | The customer uses more than they pay for | Direct leakage |
| Billed higher than purchased | You bill more than you take | Risk to the relationship, and possibly an error |
The first and third rows are leakage. The second is not leakage for you, but it is something your customer will be glad to hear from you, and therefore a reason to do the reconciliation. The fourth you should correct yourself before the customer finds it.
Where does it go wrong?
Additions without billing
A customer asks via a ticket for a licence for a new employee. The engineer adds it in the portal and assigns it. The ticket is closed. Whether billing is updated depends on a manual step that gets forgotten in busy weeks.
Upgrades that are not carried through
The customer needs an extra feature and gets a more expensive plan or an add-on. The cost price rises. The invoice line stays on the old plan.
Trials that convert to paid
A customer tries a product. The trial ends and converts automatically into a paid licence. Nobody set up billing, because it was a trial.
Vendor price increases
Software vendors adjust their prices periodically. Your cost price changes, often with advance notice. If the selling price in your billing is a fixed amount, it stays the same. Your margin shrinks, sometimes to zero or below.
Terms that do not line up
With some licence types you commit to the vendor for a year, while giving the customer a subscription they can cancel monthly. The customer cancels, you keep paying. The reverse also happens: you have monthly cancellable licences with the vendor, but forget to cancel them when the customer leaves.
Departed customers with licences still running
A customer leaves. The managed services end, billing stops. The licences with the vendor keep running, because nobody cancelled or transferred them. This is not missed revenue but a cost with no matching income, and in practice one of the largest amounts a first reconciliation turns up.
Mid-period changes and pro rata
Licences added mid-month are billed pro rata by the vendor. If your billing only works in whole months, or only starts the following month, you miss that interim period. A small amount per licence, but with a lot of movement a structural gap.
Step by step: the monthly reconciliation
Step 1: pull purchases per customer
Download the licences per customer from each vendor or distributor portal, with type, quantity, price and term. Use the invoice or usage statement for the month, not today's position, so you are comparing the same period.
Step 2: pull assignments per customer
From the admin console of each customer environment: which licences are assigned, and to whom. Flag assignments to accounts of former employees.
Step 3: pull billing per customer
From your PSA or accounting system: which licence lines were billed this month, per customer, with quantity and price.
Step 4: map the product codes
Vendors, the customer environment and your own billing often use different names and codes for the same product. Build one table that maps them to each other. You do this once, and keep it up to date as products are added.
Step 5: compare and explain
Per customer per product: purchased, assigned, billed. Every difference gets an explanation or an action: bill it, cancel it, inform the customer, or consciously accept it with a reason.
Step 6: check the margin per product
For each product, put the current cost price next to the selling price. Where the margin is below your standard, a price increase has not been passed on or the selling price was set too low at some point.
Worked example
Worked example: take an MSP that buys EUR 100,000 of licences a month for 120 customers and resells them at an average mark-up of 15 percent, so EUR 115,000 a month. The gross margin on licences is EUR 15,000 a month, EUR 180,000 a year.
A first reconciliation turns up:
- Purchased but not billed: 2 percent of purchases, EUR 2,000 a month. At selling price that is EUR 2,300 a month in missed revenue, EUR 27,600 a year.
- Licences of departed customers still running: EUR 800 a month, EUR 9,600 a year in costs with no income.
- Price increase not passed on: on a product with EUR 20,000 of purchases a month, the cost price has risen by 6 percent while the selling price stayed the same. The mark-up drops from 15 to around 8.5 percent. The difference is EUR 1,200 a month, EUR 14,400 a year.
Together that is EUR 51,600 a year. Against a gross margin of EUR 180,000, that is almost 29 percent. That is the heart of SaaS billing leakage at MSPs: because the margin on licences is thin, small differences in quantities and prices weigh heavily.
These figures are an example. Which differences exist in your business depends on the number of vendors, the number of changes per month and how the route from ticket to invoice is set up.
Why doesn't a manual reconciliation last?
The reconciliation above is manageable for ten customers and three vendors. With a hundred customers, eight vendors and dozens of products, it is a day or more of work each month. In practice it then happens a few times, and then stops, until the next time the margin looks conspicuously low.
That is a shame, because licences are exactly where reconciliation lends itself to automation. The data is structured, the portals often have export functions or integrations, and the comparison is unambiguous. If you want to do it continuously, you put the vendor data, the customer environments and billing side by side automatically and only see the differences. How that fits into the wider picture of all an MSP's systems is covered in Revenue Intelligence for MSPs.
Related: billing leakage at software companies
Software companies that sell their own product on a subscription basis face similar problems, but from the other side: they are the vendor. Their challenge is that usage, contract and billing drift apart within their own system. That is described in SaaS billing leakage, and the method for reconciling it in SaaS revenue reconciliation. For subscriptions on the wrong tier, in any sector, see revenue leakage from wrong subscriptions.
Checklist
- Is there a monthly export of licences per customer for each vendor?
- Is there a table mapping vendor product codes to your own invoice lines?
- Is purchased versus billed compared per customer every month?
- Are licences of departed customers cancelled or transferred on the day they leave?
- Is the selling price reviewed at every announced vendor price increase?
- Do vendor terms line up with customer notice periods?
- Can a ticket for a licence change be closed without billing being updated?
- Are customers told about licences they pay for but do not use?
Frequently asked questions
What is the difference between SaaS billing leakage and ordinary leakage at an MSP?
SaaS billing leakage is specifically about resold software licences: the gap between purchases and billing. Other leaks at an MSP, such as out-of-scope work or devices above the contract, concern your own services.
How often should you reconcile licences?
Every month, alongside the billing run. Licences change constantly, and every difference left standing for a month costs that month's margin.
Should I tell customers they have unused licences?
Yes. It costs you revenue in the short term, but it builds trust and prevents the customer from discovering it themselves. And it makes the conversation about licences the customer does use but does not pay for a lot easier.
What do I do with licences committed to the vendor for a year?
Make sure the customer's notice period matches it, or charge a premium for monthly flexibility. Track per licence when the vendor commitment ends, so you can cancel or renew in time.
Which licences pay off most in a first reconciliation?
Usually the products with the most changes, such as per-user licences at customers with high staff turnover, and the licences of customers who left in the past year.
More in this cluster
- Revenue Intelligence for MSPs
- Revenue leakage at MSPs
- Revenue leakage in construction
- Invoice checks for construction companies
- Contract checks for construction companies
- Revenue leakage in project businesses
- Revenue Intelligence for installation companies
- Revenue leakage in installation companies