MSP margin per endpoint: the one number every owner should know
Ask an MSP owner which client is most profitable and you will get a confident answer. Ask which client is least profitable and you will usually get a pause, then a guess. That pause is expensive. Revenue per client is easy to see because it arrives on an invoice; cost per client is scattered across a tooling bill, a licence portal and the memories of your technicians. MSP margin per endpoint pulls those scattered costs back onto the client that caused them, so you can see who is paying for whom. This guide walks through the allocation, the arithmetic and a spreadsheet you can rebuild this week.
Why margin per endpoint beats margin per client
A client-level margin tells you whether an account makes money. A per-endpoint margin tells you why, and lets you compare a 12-seat solicitor with a 90-seat distributor on equal terms. It also maps directly onto how most MSPs price: if you charge per device or per user, your cost model should use the same unit, because otherwise you cannot tell whether your price is wrong or your delivery is.
This is a different question from the one in our piece on tooling costs as a percentage of MRR. That piece asks whether your stack is affordable across the business. This one asks which clients are quietly eating the profit the rest of the book generates.
The three cost buckets, and how to allocate each
Every cost you incur delivering a managed service falls into one of three buckets. Allocate each one differently, because they behave differently.
Tooling: spread it by the unit your vendors bill you on
RMM, PSA, backup, EDR, email security, documentation, remote access. Split them into two groups:
- Per-endpoint tools: if your EDR costs a fixed amount per device, that exact amount goes on each device. No judgement needed.
- Flat or per-technician tools: divide the monthly cost by your total managed endpoints and apply the result evenly. A £300 a month PSA across 600 endpoints is 50p per endpoint. Crude, and good enough.
Skip this and… you will undercost clients who use expensive add-ons, such as those on premium backup, and they will look better than they are.
Licences: resale is not margin until you net it off
Microsoft 365, antivirus resale, domain and certificate renewals. Record resale revenue and resale cost separately for each client, then keep only the difference. Resale inflates revenue and flatters a client that buys a lot of licences at thin margin. A client paying £2,000 a month where £1,400 is Microsoft pass-through is a £600 client, and you should think of them that way.
Labour: the bucket that decides everything
Labour is usually the largest cost and the least measured. You need two figures:
- A loaded hourly cost per technician: salary, employer National Insurance, pension, and a share of overheads, divided by realistic productive hours. Productive hours are not contracted hours. Leave, training, admin and the time spent waiting for a vendor all come out first.
- Hours per client per month: from your PSA time entries, ideally averaged over three months so one bad week does not condemn a client.
Multiply the two and you have the labour cost per client. Divide by that client's endpoints and you have labour per endpoint.
Rule of thumb: if your time tracking is patchy, your margin figures are fiction. Fix time capture for four weeks before trusting any ranking, because labour will swing the answer more than every tool on your bill combined.
The spreadsheet: one row per client, eleven columns
Build this in whatever you use. The structure matters more than the software.
| Column | What goes in it |
|---|---|
| A: Client | Name |
| B: Endpoints | Managed devices, from your RMM |
| C: Managed service revenue | Monthly recurring fee, excluding resale |
| D: Resale margin | Licence revenue minus licence cost |
| E: Per-endpoint tools | Sum of per-device tool costs for this client |
| F: Shared tools | B multiplied by your shared tool cost per endpoint |
| G: Hours | Three-month average monthly hours |
| H: Labour cost | G multiplied by loaded hourly cost |
| I: Gross profit | C + D − E − F − H |
| J: Gross margin % | I divided by (C + D) |
| K: Profit per endpoint | I divided by B |
Sort by column K, lowest first. That is your list.
A worked example you can check by hand
Take a 25-endpoint client paying £1,000 a month for managed services, with £120 of resale margin. Per-endpoint tools come to £6 a device, so £150. Shared tools at £1.50 per endpoint add £37.50. They average 14 hours a month, and your loaded technician cost is £40 an hour, so labour is £560.
Gross profit: £1,000 + £120 − £150 − £37.50 − £560 = £372.50. Margin: roughly 33 per cent. Profit per endpoint: £14.90.
Now imagine a second client of the same size and fee who needs 22 hours a month. Labour rises to £880 and gross profit drops to £52.50, just over £2 per endpoint. Same invoice, same device count, one client is carrying the other.
Reading the ranking: what low margin usually means
A number at the bottom of the list is a symptom. Before you reprice anyone, work out which of these it is.
- Underpricing: the client was signed years ago on a rate you would never offer today. The honest fix is a price review with notice.
- Scope creep: projects and favours logged as support. Look for recurring tickets that are really unbilled work, such as new-starter setups or line-of-business app upgrades.
- A broken estate: the same devices generating the same tickets. Ageing hardware or poor patch coverage costs you every month until it is fixed; our guide to third-party patch management covers one common culprit.
- A needy contact: one person raising half the tickets. That is a conversation, not a price rise.
The replacement test: if this client left tomorrow and you signed an identical one at today's rate card, would the new one look the same on the sheet? If not, the problem is the contract, not the client.
Failure modes: how this exercise goes wrong
Three mistakes recur. Averaging labour across all clients, which erases the very difference you are hunting for. Counting resale as revenue, which rewards clients who buy licences rather than clients who are profitable. And acting on one month of data, which punishes a client for a single migration project. The spreadsheet is a torch, not a verdict. Use it to decide which conversations to have first.
If you run internal IT rather than an MSP, the same structure still works: replace revenue with a chargeback or budget figure per department and you will find the same hidden subsidies, whether the machines belong to clients or to your own company.
Where this fits with Helios
Most of this exercise is discipline, not tooling: nobody can make your technicians log time for you. What a unified platform removes is the stitching. Helios holds endpoint counts, ticket history, time entries and client billing in one product, so columns B, G and H come from the same place rather than three exports that never quite agree. Its flat monthly plans also make the shared-tools column a single division rather than a per-device puzzle; the figures are on our pricing page.
Helios: AI-native RMM and PSA in one platform. 14-day trial and no feature gating. Start free.