Metrics
The MSP financial metrics that actually matter
The financial metrics that predict whether a managed service provider is profitable are service gross margin, effective hourly rate, revenue per seat, billable utilisation and tickets per endpoint per month. Above those sit monthly recurring revenue, net revenue retention and EBITDA, which report the outcome rather than explain it. Most MSPs track revenue and headcount, which are the two numbers least able to tell you when an account has gone bad.
Kyslan finds the unbilled work in your own PSA, then writes the change order that bills it. First report free, read-only. Claim it back →
Why revenue is the wrong headline
Revenue tells you how much work you took on. It says nothing about whether that work paid. Two MSPs at the same revenue can differ by twenty points of margin, and the difference is never visible in the number they both put on the front page of their board pack.
Worse, revenue is the metric most easily improved by taking bad business. Any MSP can add 15% revenue tomorrow by winning a client at a price that loses money. The metrics below are the ones that catch that before the year end does.
The four that explain everything
If you track nothing else, track these, per client and in aggregate, monthly:
| Metric | Question it answers | Reacts in |
|---|---|---|
| Service gross margin | Does delivery pay for itself? | 1 to 2 months |
| Effective hourly rate | What is an hour of our time actually worth? | 1 month |
| Revenue per seat | Are we priced where we think we are? | Immediately |
| Tickets per endpoint | Is this client getting more expensive to serve? | 2 to 3 months |
Service gross margin
Formula: (managed services revenue minus the fully loaded cost of the people and tools delivering it) divided by managed services revenue.
The word doing the work is fully loaded. Include salary, employer taxes, benefits, the RMM and PSA seat cost, security tooling, and any subcontracted labour. Exclude sales, marketing and admin: those belong below gross margin, and mixing them in is how MSPs end up believing a bad contract is fine.
Calculate it three ways and the answers tell you different things:
- Per client. The only view that finds the account quietly funding itself from the others.
- Managed services separately from projects. Recurring work and project work have different cost shapes, and blending them hides both.
- Trended over twelve months. A single month is noise. A four point decline over three quarters is a decision waiting to be made.
What good looks like: recurring managed services is generally expected to run a materially higher gross margin than project or hardware work, because the tooling cost is fixed and the labour is leveraged across clients. Project and product resale run thinner. If your recurring margin is not clearly ahead of your project margin, either the recurring contracts are underpriced or the delivery cost is being absorbed somewhere you have not looked, and unbilled work is the usual place.
Effective hourly rate
Formula: total revenue attributable to a client or a period, divided by the total hours worked on it, billable and non-billable alike.
This is the most honest number in an MSP, and the one most often missing. Your published rate might be $175. Your effective hourly rate on a fixed-fee client who called eleven times last month might be $61. The gap between those two numbers is the entire argument about whether the contract works.
Sort every client by effective hourly rate, lowest first. The bottom five are your next five commercial conversations, in order. It is a better prioritised list than any profitability report, because it is a single number and nobody can argue about how the overhead was allocated.
Effective hourly rate falls for exactly three reasons: the price is too low, the client consumes more than modelled, or work is being delivered and not billed. The third is the one to rule out first, because it is the only one you can fix without a conversation. See where MSP revenue leaks.
Revenue per seat and per endpoint
Formula: total recurring revenue from a client divided by their active seats, or by their managed endpoints.
This is your realised price, as opposed to your list price, and the two are rarely equal. It catches four things at once: discounts nobody remembers granting, seats being served but not billed, contracts that never got their annual uplift, and clients who have grown past the deal they signed.
Compare each client's revenue per seat against your current list price. Any client more than about 15% below it needs a reason on file. If nobody can produce the reason, you have found either a forgotten discount or a leak.
Billable utilisation
Formula: billable hours divided by available hours, per engineer.
Available hours means paid hours minus holiday and training, not a theoretical 40. Utilisation targets vary with role: a dedicated project engineer should run high, a service desk lead carrying escalations and mentoring should not, and a virtual CIO is not measured this way at all.
Two cautions. First, on fixed-fee contracts "billable" needs defining as work against a paying agreement, not work that generates a separate invoice, otherwise your best recurring clients make your team look idle. Second, utilisation pushed hard becomes a number people manage rather than a number people report. A sudden improvement with no change in revenue is a reporting change, not a productivity one.
Tickets per endpoint per month
Formula: tickets closed for a client in a month, divided by their managed endpoints.
This is the early warning system. It moves before margin does, because rising support volume shows up in the ticket queue months before it shows up in an accounts report. A client trending upward on this number is on its way to becoming your worst account, and the trend is visible while it is still cheap to fix.
Do not chase an industry benchmark here. The number varies enormously with client type, endpoint mix and how you count a ticket. Your own trailing twelve months is the only baseline worth comparing against, and per client is the only cut that helps.
What a rising number usually means
- Ageing hardware the client has refused to replace.
- An unfixed root cause generating repeat tickets that all get closed individually.
- A change in the client's business, new site, new application, new shift pattern, that never reached your contract.
- Users who have learned the service desk is faster than their own internal process.
MRR, churn and net revenue retention
Monthly recurring revenue is contracted revenue that repeats without a new sale. Count only genuinely recurring lines. Rolling projects and a client who happens to buy hardware every month are not MRR, and including them makes the number useless for valuation.
Gross churn is recurring revenue lost in a period as a percentage of the recurring revenue you started with. Net revenue retention is the same figure after adding growth from existing clients: seats added, tiers upgraded, services expanded.
Net revenue retention above 100% means your existing book grows on its own, which is the single most valuable property an MSP can have. It also means seat growth is being captured, which is not automatic: the most common reason an MSP shows flat retention while its clients hire is that new seats are being served and never added to the agreement.
EBITDA, revenue per employee, DSO
These three report the outcome. They matter, particularly if you will ever sell, but none of them tells you what to do on a Tuesday.
- EBITDA: earnings before interest, tax, depreciation and amortisation. The number a buyer values you on. Add back the owner's above-market salary and genuine one-offs to get adjusted EBITDA, and be honest about what counts as one-off.
- Revenue per employee: total revenue divided by full-time equivalents. A crude but stubborn measure of leverage. Rising revenue with flat headcount is the whole game.
- Days sales outstanding: average days to collect. Recurring billing by direct debit should keep this low. A creeping figure usually points at invoice disputes, and invoice disputes usually point at billing accuracy.
The metrics that lie
- Headline revenue growth. Improvable overnight by taking unprofitable work.
- Ticket close rate. Rewards closing tickets, not fixing causes. Watch reopen rate beside it or not at all.
- Average response time. A real service measure, but it says nothing about profit, and MSPs frequently optimise it while margin falls.
- Client count. Twenty clients at $500 is a harder business than four at $2,500 and the count flatters the wrong one.
- Blended gross margin. Managed services, projects and hardware averaged together. The average is always fine, which is exactly why it hides everything.
A one-page monthly dashboard
Twelve numbers, one page, same day every month:
| # | Metric | Cut |
|---|---|---|
| 1 | Managed services gross margin | Total and per client |
| 2 | Project gross margin | Total |
| 3 | Effective hourly rate | Bottom five clients |
| 4 | Revenue per seat | Per client against list price |
| 5 | Billable utilisation | Per engineer |
| 6 | Tickets per endpoint | Per client, 12 month trend |
| 7 | MRR | Opening, added, lost, closing |
| 8 | Net revenue retention | Trailing 12 months |
| 9 | Unbilled work identified | Total and recovered |
| 10 | Contracts with uplift overdue | Count |
| 11 | Days sales outstanding | Total |
| 12 | Adjusted EBITDA | Month and year to date |
Line 9 is the one most MSPs do not have, and it is the one that pays for the other eleven. You cannot report unbilled work identified unless something is looking for it every month, which is the job Kyslan does read-only against your PSA.
Common questions
What gross margin should an MSP target on managed services?
Recurring managed services should run a materially higher gross margin than project or hardware resale, because tooling costs are fixed and engineering labour is leveraged across many clients. The important test is internal rather than a published benchmark: if your recurring margin is not clearly ahead of your project margin, either the contracts are underpriced or delivery cost is being absorbed through unbilled work.
What is effective hourly rate for an MSP?
Effective hourly rate is revenue from a client divided by every hour worked on them, billable and non-billable. It is the truest measure of what your time is worth, because it includes the work you did not charge for. A published rate of $175 and an effective rate of $61 on the same client is common and is the whole argument about whether that contract works.
How do you calculate MSP monthly recurring revenue?
Add the contracted monthly value of every agreement that repeats without a new sale: managed services fees, seat and device charges, and recurring licence subscriptions where you carry the contract. Exclude projects, one-off hardware and ad hoc time and materials, even where a client buys them regularly, because including them overstates the number a buyer would value.
What is a good tickets per endpoint number for an MSP?
There is no reliable cross-industry benchmark, because the figure moves with client type, endpoint mix and how a ticket is counted. It is most useful as a trend against your own trailing twelve months, per client. A client rising on this measure is becoming more expensive to serve, and the trend appears months before it shows up in margin.
Which MSP metrics are misleading?
Headline revenue growth, ticket close rate, average response time, client count and blended gross margin. Each can improve while profitability falls. Blended gross margin is the most dangerous of the five, because averaging managed services, projects and hardware together produces a number that always looks acceptable and hides which of the three is losing money.
Keep reading
See your own number, then send the invoice for it
Kyslan reads 90 days of your tickets, time entries and contracts, finds the work you delivered and never billed, then writes the change order that puts it back on the invoice. Read only, nothing installed, first report free.
Claim it backFree · read-only key · no card · HaloPSA, ConnectWise Manage, Autotask PSA or a CSV export