MSP Margin Get the Monday Close
An aisle between rows of metal equipment racks

Match tool seats to billed seats

Every RMM agent, EDR license and backup seat costs money, and a monthly match against what you bill keeps unbilled seats from eating your margin.

Cost of service
Guide
4 min read
By MSP Margin Editorial

Most MSPs did not design their tool stack. It accumulated. An RMM came first, then antivirus became EDR, then backup, email security, a documentation platform, security awareness training and a few more. Each one made sense when it was added.

The result is a cost structure that grows with every endpoint and every user, often in several places at once. That is fine when billing grows at the same rate. It becomes a problem when the count you pay vendors for drifts away from the count you invoice clients for.

Know your cost per endpoint and per user

Start by building a simple cost model. List every tool you pay for, how it is licensed, and what it costs you each month. Most fall into a few groups:

  • Per endpoint: RMM agents, EDR, workstation and server backup.
  • Per user: Microsoft 365 backup, email security, security awareness training.
  • Per technician or flat: PSA, documentation, remote access, and other internal tools.

Divide the per-endpoint total by managed endpoints and the per-user total by managed users. Spread the per-technician tools across the base too, even though they do not scale with client seats in the same way. The result is your fully loaded tool cost per endpoint and per user.

That number belongs in every pricing conversation. If a new tool adds a few dollars per endpoint and your per-endpoint price does not change, the margin on every agreement just went down.

Where unbilled seats come from

Seat drift is rarely one big mistake. It is many small ones:

  • A client offboards and their agents keep checking in, or the vendor portal keeps the seats active.
  • Devices are reimaged and show up twice.
  • Decommissioned machines stay licensed because nobody removed them.
  • A client adds staff and devices, and the agreement quantity in the PSA is never updated.
  • Internal and test devices sit in client-facing counts.
  • A trial or proof of concept never gets converted or removed.

None of these shows up on a P&L line called "unbilled seats." They show up as tool costs creeping up faster than revenue.

An example reconciliation

Here is an illustrative example with round numbers. An MSP bills 1,050 managed endpoints and 600 managed users across its clients. At month end, it pulls counts from each vendor portal and compares.

Tool Vendor count Billed count Unbilled Illustrative unit cost Monthly cost of gap
RMM agents 1,120 1,050 70 $3 $210
EDR 1,150 1,050 100 $5 $500
M365 backup users 620 600 20 $2 $40
Total $750

That is $750 a month, or $9,000 a year, in vendor cost with no matching revenue. The gap also means lost revenue if some of those seats belong to active client devices that should be billed. If 60 of the 100 EDR seats turn out to be real client devices, and the MSP bills $40 per endpoint for its managed security bundle, that is $2,400 a month of revenue it is not collecting.

Note that EDR shows 30 more seats than RMM. That kind of mismatch between tools is worth chasing on its own, since it often points to devices deployed outside your normal onboarding process.

Build the monthly routine

The reconciliation works best as a fixed step in the close, done before the recurring invoice run so corrections land on the same month's invoices.

  1. Export seat counts from each vendor portal or distributor invoice, broken down by client where the tool allows it.
  2. Pull billed quantities by client from your PSA agreements, whether you use ConnectWise, Kaseya, NinjaOne or another platform.
  3. Match by client and tool, and list every difference.
  4. Sort each difference into one of three buckets: remove the seat, bill the seat, or document it as an approved internal or non-billable seat.
  5. Assign each item to an owner and confirm it was resolved before the next month's count.

Some PSAs can sync quantities from integrated tools. That helps, but confirm what the sync actually updates and how often, and still review the exceptions yourself.

Track the total unbilled count over time. The goal is not zero in every tool every month, since timing differences are normal. The goal is a small, explained gap that does not keep growing.

Keep the accounting clean

For margin reporting to reflect this work, client-facing tool costs should be recorded consistently, typically in cost of revenue, with internal tools kept separate. Where a cost falls is partly a policy choice, so pick one and apply it the same way each month. If tool costs bounce between cost of revenue and operating expenses, your gross margin trend will mislead you.

This article is general information, not advice for your specific situation. Classification of tool costs and related revenue depends on your facts and accounting policies, so confirm treatment with your CPA.