Microsoft 365 license reconciliation

Find the money you earn but don’t bill.

The revenue check runs plain rules over data your workspace already has and lists each gap with the client, the evidence and what it is worth.

What it checks

Microsoft 365 licenses

More licenses in the client’s tenant than a seat line last recorded.

Managed devices

More devices in your RMM than a per-device line bills.

Stale counts

A metered line whose count is more than 35 days old.

Unbilled time

Approved billable time over 30 days old that is not on an invoice.

Unapproved time

Entries waiting more than 14 days for approval.

Ended or missing agreements

Work continuing after a client’s only agreement ended, or for a client with none.

Fix it in one click

Bill the new quantity

Update the line to the count found; the change is recorded with its reason.

Record the latest count

Store Microsoft’s count on a metered line with the date it was seen.

Read-only, always

Opcrunch reads from Microsoft and your RMM and never writes back.

Questions

What Microsoft permission does it need?
One read-only application permission, LicenseAssignment.Read.All, granted by admin consent in each client tenant.
Does it change anything in Microsoft 365?
No. It only reads license counts.

$49 per technician. No contract. Free migration.

Every module in one tier, with unlimited clients and free portal users.

Related: Guide: M365 reconciliation · Guide: unbilled time · MSP billing