MSP Billing Sentinel

Monthly license seat reconciliation checklist for MSPs

Updated 2026-10-18. Written by the maker of MSP Billing Sentinel.

Recurring licenses leak differently from hourly work. A client adds users, you provision the seats, and the invoice keeps billing the old quantity. The fix is a monthly comparison of two numbers per client and service: seats provisioned and seats invoiced.

The monthly checklist

  1. List provisioned seats per client and service (for example Microsoft 365, endpoint security, backup) from the vendor portal or your distributor's billing report.
  2. List invoiced seats for the same client and service from the recurring invoice lines.
  3. Compare them for each pair. Where provisioned is higher than invoiced, you are paying for seats you are not billing.
  4. Price the gap. Missing seats times the price per seat is the monthly leak; multiply by 12 for the yearly figure.
  5. Decide per exception: bill the client, adjust the agreement, or remove the unused seat.
  6. Check the other direction. Seats invoiced but no longer provisioned are overbilling, which causes disputes.

Make names match

Most reconciliation errors are naming errors: "M365 Business Premium" on one side and "Microsoft 365 BP" on the other. Keep a short list of standard service names and use it in both places.

A worked example (sample data)

In Sentinel's synthetic benchmark, four agreements had 22 seats provisioned but not invoiced, a gap of $424 a month, or $5,088 a year. The figures are sample data to illustrate the method, not a customer result.

Automate it

Sentinel's seat audit takes two CSV files, one with provisioned seats and one with invoiced seats (client, service, seats and an optional price per seat), and lists the gaps with the monthly and yearly cost. Seat audits on your own files are on the Pro plan and above; the benchmark demo is free. It only reads the files you upload.

Run the free demo   See pricing

More guides