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.

The short version. If you already run ConnectWise, Autotask or HaloPSA, use what your PSA gives you or add Sync 365. If you run Syncro, its Universal Billing does this natively as of March 2026. If you have no PSA and invoice out of QuickBooks or Xero, none of the paid tools are built for you. That is the gap SeatGap fills, and the check itself is free: no account, no upload, an answer in about two minutes. The only thing you ever pay for is having it run every month without you, which is €39.
Find your number first. It is free and takes about two minutes.

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 data

The comparison

ToolPrice fromNeeds a PSA?Reads QuickBooks / Xero?Free tierTime to a first answer
SeatGapFree, then €39/moNoYesFull report, freeAbout two minutes
BillingReconcile$129/moPSA-centricNot listedNoneDemo, then onboarding
Sync 365QuoteYes, requiredNoNoneSales call
Syncro Universal Billing~$139/tech/moYes, Syncro itselfNoNoneMigrate to Syncro first
Gradient MSPQuoteYesNo accounting systemsNoneSales 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.

HOW LONG UNTIL YOU KNOW YOUR NUMBER SeatGap about 2 minutes BillingReconcile demo, then onboarding Sync 365 / Gradient sales call Syncro Universal Billing migrate to Syncro first
Every other tool needs a call, a migration or a PSA before it will tell you a single number. This one tells you before the call would have been scheduled, and if the answer is zero you have lost two minutes.
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

One honest exception: if you already run a PSA, use it. ConnectWise, Autotask, HaloPSA and Syncro reconcile against agreement quantities natively or through Sync 365. You have paid for that already and nothing on this page beats something you own. Everything below is for the shops that never bought one.

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:

The cheapest possible mistake is not checking. Every tool here, this one included, costs less than the gap it finds. The expensive option is the one where nobody looks, which is the option almost every shop this size is running right now. Two minutes, free, no account.
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.

Check the names first: every Microsoft 365 rename since 2020, and the two that moved a name onto a different product.

You can stop reading and just run it

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.