You bought 42 seats. You billed 38.
Nobody noticed for nine months.

Drop in the licence file Microsoft gives you and a list of what you invoiced. It tells you every licence you are paying for and forgot to charge a client for.

Your files never leave this page. No upload, no account. The matching runs in your browser. Close the tab and it's gone. Check the network tab if you like.
4 88.00 / 1,056.00
TWO FILES IN, ONE NUMBER OUT Microsoft bill reconciliation CSV + Your invoices export from your books This page nothing uploaded The gap what you never billed
No account, no install, no sales call. The files are read in your browser and never sent anywhere, which you can confirm in the network tab.

The two files

CSV only. If it is an Excel file, use Save As → CSV first. Either file can go in either box, it works out which is which.

Haven't got the files to hand? Run it on sample data. Six invented clients, one real mess.

Common questions

Does SeatGap upload my client billing data?

No. There is nothing is uploaded and there is no account. Both CSV files are read with the browser File API and matched in JavaScript on your own machine. Nothing is transmitted, which you can confirm in the browser network tab.

Do I need a PSA to use it?

No. It reads an invoice export from QuickBooks, Xero, Zoho or a PSA. It was built specifically for MSPs that have no PSA and invoice out of a plain accounting package, which is the case the paid tools do not cover.

Which two files do I need?

A Microsoft Partner Center licence-based reconciliation export for the month, and an invoice export from your accounting system covering the same month, with one row per line item. Both must be CSV.

What does it cost?

Nothing. It is free with no paid tier, no trial and no signup. The cheapest paid alternative is BillingReconcile at $129 per month, which is PSA-centric.