Microsoft 365 licence reconciliation tools for MSPs, compared

Five products that check what you bought from Microsoft against what you actually invoiced. 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, and that is the gap SeatGap fills for free.

The comparison

ToolPrice fromNeeds a PSA?Reads QuickBooks / Xero?Free tier
BillingReconcile$129/moPSA-centricNot listedNone
Sync 365QuoteYes, requiredNoNone
Syncro Universal Billing~$139/tech/moYes, Syncro itselfNoNone
Gradient MSPQuoteYesNo accounting systemsNone
SeatGap$0NoYesEntirely free

What each one 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

If you already have a PSA, stop reading here. ConnectWise, Autotask, HaloPSA and Syncro all reconcile against agreement quantities natively or through Sync 365. You have already paid for this. Use it.

The comparison only gets interesting for shops that never bought a PSA. Typically one to ten people, somewhere between 100 and 800 seats under management, invoicing straight out of an accounting package. For them:

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.

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, if you already have the two CSVs. The Partner Center reconciliation file is a download from your partner portal, and every accounting package exports invoices to CSV. The cheapest paid option is BillingReconcile at $129 per month.

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.

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, which is why this page tells you not to use it in the three cases where something else fits better.

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