Microsoft 365 licence reconciliation tools for MSPs, compared
Five products that find the Microsoft 365 licences you pay for every month and never charge a client for. What each costs, which need a PSA, and which one fits your size of shop.
Drop in the Partner Center reconciliation CSV and an invoice export. Nothing uploads, there is no account, and the answer is either zero or it is money you have been paying every month.
Run the free check or try it on sample dataThe comparison
| Tool | Price from | Needs a PSA? | Reads QuickBooks / Xero? | Free tier | Time to a first answer |
|---|---|---|---|---|---|
| SeatGap | Free, then €39/mo | No | Yes | Full report, free | About two minutes |
| BillingReconcile | $129/mo | PSA-centric | Not listed | None | Demo, then onboarding |
| Sync 365 | Quote | Yes, required | No | None | Sales call |
| Syncro Universal Billing | ~$139/tech/mo | Yes, Syncro itself | No | None | Migrate to Syncro first |
| Gradient MSP | Quote | Yes | No accounting systems | None | Sales call |
The last column is the one that decides it in practice. Every other tool on this list needs a sales call, a migration or a PSA you have not bought before it can tell you a single number. SeatGap tells you the number before the sales call would have been scheduled, and if the number is zero you have lost two minutes and paid nothing.
What each of the five tools actually is
- BillingReconcile: $129/month, the cheapest paid option
- Compares invoice quantities against licences, devices and Microsoft 365 seat counts before
month-end invoicing. Core is $129/month covering roughly 50 clients and 125 coverage
items; Team is $249, Business $399, Enterprise $649. Thirteen integrations, named as
ConnectWise, Bitdefender, Webroot, Comet Backup, Addigy, NinjaOne and Huntress, all of them PSA, RMM
or security vendors. No accounting system appears on the list. There is no free tier and no
trial advertised. History is 30 days, extendable to 24 months from $19/month.
The thing to know: the price is the same whether you have 8 clients or 50. A four-person shop pays what a fifty-client shop pays. - Sync 365: reconciles into your PSA's agreements
- Handles Microsoft 365 licence counts, proration, new-commerce changes and reactivated
users, then updates the matching PSA agreement or contract records after review. Supports
ConnectWise Manage, Autotask and HaloPSA. Pricing is by quote.
A PSA is required, because updating PSA agreement records is the product. - Syncro Universal Billing: bundled, and new
- As of the March 2026 release, Syncro syncs Microsoft licence counts directly onto
recurring invoices, detects seats added and removed daily, and lets you bill on licences owned
or licences actually consumed. Syncro's own description: it "eliminates the need for manual
reconciliation." Available on the Team plan with Entra tenants mapped to Syncro.
If you already pay for Syncro, this is included and you should use it. Syncro is around $139 per technician per month and is one of the two platforms most often recommended to shops with 1–10 technicians. - Gradient MSP: broad vendor coverage, PSA-anchored
- Integrates six PSAs and over a hundred vendors, reconciling vendor counts into PSA billing. Extremely broad on the vendor side. Zero accounting-system integrations, so the billing side has to be a PSA.
- SeatGap: free, browser-only, no PSA
- You drop in the Partner Center reconciliation CSV and an invoice export from QuickBooks,
Xero or Zoho. It reports which licences you are paying Microsoft for and not charging a client
for, per client and per SKU. All matching runs in the browser: no upload, no account, no
server. Free with no tier above it today.
What it is not: it does not write back to anything, does not run itself on a schedule, and does not connect to any API. It is a check you run, not a system you install.
Which one fits you
That is most of them. One to ten people, somewhere between 100 and 800 seats under management, invoicing straight out of an accounting package. If that is you:
- You have never actually checked. Run it. It is free, there is no account, and it takes about two minutes. The number it gives you is either zero, in which case you can stop worrying about this, or it is not zero, in which case you have been paying it every month for as long as it has been wrong. Run the check, or try it on sample data first.
- It found something, and you would rather not find it again next year. That is the whole of the paid version, and it is deliberately the only thing you pay for: it runs every month and emails you only when a count moves. €39/month. It costs less than one seat of Business Premium billed to nobody.
- Over 50 clients, and you want this inside a PSA workflow with agreements and contracts. Then BillingReconcile at $129/month is genuinely the better tool and you should buy it. It does more than this does. Check with the free run first so you know what the gap is worth before you commit $1,548 a year to closing it.
Why this problem exists at all
The Microsoft reconciliation file is not a list of licences. It is a list of charges,
and one subscription produces several rows a month: cycleCharge for the baseline,
addQuantity when seats are added mid-term, removeQuantity which arrives
negative, and customerCredit rows that are money rather than seats.
Sum the Quantity column and you get a number that was never true. That is why this is done once a year instead of once a month, and why seats added in March get noticed in November.
The second half is worse: matching a Microsoft SKU to whatever your invoice line got renamed
to. Email & Office Bundle shares not one word with
Microsoft 365 Business Premium, so no string matching will ever connect them.
The full explanation is here.
Common questions
Can I reconcile Microsoft 365 licences without a PSA?
Yes, but none of the paid tools are built for it. BillingReconcile, Sync 365, Gradient MSP and Syncro all assume the billing side is a PSA. Without one you either compare the Partner Center CSV to your invoice export by hand, or use a free tool that reads both files directly. SeatGap is that free tool. It is the only option here that needs neither a PSA nor a sales call.
How much money is actually sitting in this gap?
Reported figures cluster in the hundreds to low thousands per month per MSP. One vendor case study cites $2,500 a month recovered; an MSP posting publicly found roughly €5,000 across a single quarter. Treat vendor numbers as an upper bound, since they have an interest in the figure being large.
Why doesn't summing the Quantity column work?
Because one subscription produces several rows a month and some are negative. A
customerCredit row is a refund, not a seat change, so counting it reduces your seat
total for a reason that has nothing to do with licences. Group by client and SKU, then add only
the charge types that change quantity.
What is the cheapest way to check this?
Free. You need the Partner Center reconciliation file, which is a download from your partner portal, and an invoice export from your accounting package, which every one of them can produce. SeatGap reads both and costs nothing, with no account and nothing uploaded. If you want the same check to run itself every month instead of you remembering, that is €39/month. The cheapest competing option is BillingReconcile at $129 per month, and it needs a PSA.
How do I find licences I forgot to charge a client for?
Export the Partner Center reconciliation CSV for last month and your invoice export from QuickBooks or Xero, then group both by client and by product and compare the quantities. Anything you bought and did not invoice is a licence you pay Microsoft for every month and charge nobody for.
By hand it takes an hour or two the first time. SeatGap does the same comparison in the browser in about two minutes, free and with no account. If you already run a PSA with a working distributor sync, it is doing this for you already and you do not need any of these tools.
Is it safe to upload client billing data to a reconciliation tool?
That is a contractual question for your client agreements, not a technical one. Every paid tool in this comparison processes the data on their infrastructure. If that is a problem, the alternative is a tool that runs locally in your browser and transmits nothing, which is how SeatGap works: the files are read by the page and never leave it, and you can confirm that in the network tab rather than taking anyone's word for it.
Last updated 11 August 2026. Prices are taken from each vendor's own published pricing page or documentation on that date and change without notice, so check before relying on any figure here. SeatGap is our own tool. That is exactly why this page still tells you to use your PSA if you own one, and to buy BillingReconcile if you have over fifty clients and want this inside a PSA workflow. A comparison that never recommends anything else is an advert, and you would have spotted that.
Two files, two minutes, no account, nothing uploaded. If the number comes back zero you have lost two minutes. If it does not, it has been costing you that every month.
Run the free check Want it to happen every month without you? That is €39 a month, and it is the only thing on this site you ever pay for.