Microsoft invoice check
Reconcile your Microsoft 365 invoice against every tenant.
Import your Pax8, TD SYNNEX, Giacom or Microsoft invoice as CSV or Excel and see, tenant by tenant, where billing and reality disagree.


Why this is hard today
Distributor invoices and tenants drift apart: a reduction that never reached the distributor, seats bought and never assigned, licences a client holds that you are not billing on. Matching an invoice to every tenant by hand is slow, so it rarely gets done.
How ConfigCheckup solves it
Billed, not held
More seats on the invoice than the tenant has: a reduction or cancellation that never reached your distributor.Billed, not assigned
Seats bought and paid for that nobody has been given.Not on the invoice
Paid seats a tenant holds that your invoice does not include: bought elsewhere, or not billed on.Trials
Trials that will end or convert, with the date.
Export the invoice
Any CSV or Excel file with customer, product and quantity. Columns are recognised by name.
Import it
Customers are matched to tenants by name or domain, and products to licences. Match anything else once; it is remembered.
Work the list
The biggest gaps first, each with what it costs a month.
/homeDemo data
Where the invoice and the tenants disagree


The Microsoft invoice check on the demo workspace: seats paid for and not used, and each tenant’s licences against the invoice. Demo workspace.
Check it yourself.
- It works from a CSV or Excel export, so it works with any distributor and nothing is shared with them.
- Each invoice line is matched to a tenant and a licence; anything it cannot match is shown for you to match once, and remembered.
- Tenant figures come from each tenant’s latest assessment, read from Microsoft 365.
- Non-Microsoft products on the invoice are left unmatched, not forced into a match.
- What you charge clients, exported from ConnectWise, Autotask or Halo, is set beside it: seats you charge for that a tenant no longer holds, and seats it holds that you do not charge for.
What it can’t see
Said plainly, so you know what you are buying.
- It compares one invoice at a time, the latest you import.
- Monthly amounts use the invoice’s unit price when it has one, otherwise your own prices.
- Non-Microsoft products on the invoice, such as backup or security tools, are left unmatched.
It reads settings and activity records, never content, with permissions your tenant’s admin grants. Every permission and role, and why
Questions.
Does it connect to my distributor?
No. You import a CSV or Excel export, so it works with any distributor, and nothing is shared with them.
Where do the tenant figures come from?
Each tenant’s latest assessment: seats bought and assigned, read from Microsoft 365.
Does it check what I charge my clients?
Yes. Import what you charge from your PSA (ConnectWise agreement additions, Autotask contract services or Halo recurring invoices) and each tenant shows seats you charge for that it no longer holds, and seats it holds that you do not charge for, with the sum a month. Less-included seats and cancelled lines are left out. This check reads nothing from the PSA itself: you choose the file.
Plans: The invoice check on every plan; changing CSP seat counts in Partner Center with Automate.
What each plan includesConfigCheckup
See it on your own tenants.
The findings and figures come from your tenant, not from averages.
14 days of daily monitoring and alerts, every finding with its fix guide, and reports on up to 3 tenants, from your first connected tenant. No card. Then choose the plan that fits.

