
Client profitability analysis starts with matching a client's managed-service fee to the full cost of delivering that service. Put revenue, burdened delivery labor, and tools on the same page for the same period. Keep products and projects separate so their margins don't hide an expensive support agreement.
The managed-service target in the MSP Outpost model is 50% gross margin after burdened delivery labor and tools. Gross margin is the share of revenue left after those delivery costs. It isn't the client's contribution to company EBITDA after sales, administration, and the owner's management salary.
I'd build the sheet so another person can reproduce it. A margin calculated from unexplained allocations is an opinion with decimal places.
Fix the Scope Before You Pull the Numbers
Choose a period and use it consistently for revenue and costs. Start with the managed-service agreement, the invoiced fee, the seats covered, and the work included. Identify credits or scope changes that affect the period before comparing it with earlier results.
Keep the fee separate from resold licenses, hardware, and project charges. The model targets about 30% margin on product and hardware, compared with 50% on fully loaded managed services. Combining the revenue without the associated costs gives you a number that cannot explain either line.
Add a short scope note above the calculation. Record whether the account includes routine support, account work, on-call coverage, and any unusual delivery responsibility. The purpose is to help the person reviewing the margin see which costs belong below the fee.
Build the Page From Traceable Rows
Use rows that lead back to a source record and a stated allocation rule. If the underlying system cannot give you a reliable figure, label the estimate. Missing time doesn't become free time because it was absent from the export.
| Row | Amount to Capture | Source or Method |
|---|---|---|
| Managed-service revenue | Fee earned for the selected period, with relevant adjustments | Agreement, invoice records, and your consistent reporting basis |
| Direct delivery labor | Client work at burdened labor cost | Time records and role costs; include owner technical work |
| Shared delivery labor | Client allocation of delivery work not already charged directly | Defined allocation of account work, centralized services, desk capacity, and on-call costs |
| Delivery tools | Client-specific cost plus a share of the remaining delivery stack | Vendor invoices, covered seats or endpoints, and stated allocation |
| Gross profit | Managed-service revenue minus delivery labor and tools | Calculate from the rows above |
| Gross margin | Gross profit divided by the same managed-service revenue | Compare with the fully loaded target |
| Company overhead allocation, if shown | Sales and administration allocated separately | Label the basis and keep it below gross profit |
An allocation assigns part of a shared cost to this client. Use a method that reflects how the work is consumed and apply it consistently. A seat allocation can provide a starting estimate, but it won't reveal differences in client workload that you never measured.
Keep direct charges and shared allocations from overlapping. If account-management time is already included in your shared labor pool, don't charge the same hours again from a separate time export. Reconcile all client allocations back to the delivery total in your books.
Cost the Whole Delivery Team
Burdened labor includes salary plus the payroll taxes, benefits, and insurance covered by your burden calculation. The US model uses a general 1.25 multiplier. It also accounts for nonproductive time through available hours and utilization, rather than assuming every paid hour can be assigned to client delivery.
When calculating an hourly delivery cost, divide the relevant burdened annual payroll by productive hours on a consistent basis. Use that rate for recorded delivery effort. Separately reconcile unused or unassigned capacity so a quiet period doesn't make part of your paid delivery team disappear from the total.
Include work outside the support queue. Technical alignment, vCIO work, centralized administration, and on-call delivery belong in the model's managed-service labor. Shared delivery supervision belongs there when you employ it. A ticket-only view leaves those costs behind.
Include the owner's technical delivery work at fair-market pay too. Separate it from the owner's management work allocated below gross profit, and avoid charging the same salary twice. The account shouldn't appear more profitable simply because its senior technician happens to own the company.
Work Through a Model Account
Say a client has the model's 20 seats at $225 per seat each month. Its managed-service fee is 20 times $225, or $4,500. For this illustration, allocate the US example MSP's average fully loaded delivery cost of $103.10 per seat; that is a planning allocation, not measured work for this client.
The average contains $80.60 of labor and $22.50 of tools per seat. Multiplying each by 20 gives $1,612 of delivery labor and $450 of tools. Total delivery cost is therefore $2,062, leaving $4,500 minus $2,062, or $2,438 of gross profit.
Divide $2,438 by $4,500 to get about 54.2% gross margin. At the 50% target, the same fee allows $4,500 × 50% = $2,250 of delivery cost. That's $2,250 minus $2,062, or $188 more than the example allocation, before any company overhead.
Those averages come from a well-run example desk at 0.5 tickets per seat each month; the model puts a typical MSP at 1.0 to 1.4. Don't copy its average client cost into your accounts as an observed result. Replace the allocation with your own delivery record and reconcile it to actual payroll and tools.
Investigate the Difference Before Changing the Price
Read a weak margin back through its cost rows. Establish whether the difference is recorded client work, shared-cost allocation, an unbilled scope change, or missing revenue. Separate unusual project effort from recurring delivery while keeping both costs visible in the appropriate line.
A high ticket count doesn't identify the cause on its own. Review the labor and repeated work behind it. Client environment faults, unclear procedures, incomplete fixes, and recording differences call for different action.
If you fix avoidable delivery work before repricing a low-margin client, record the work you expect to remove and check the result afterward. A margin below 50% is below target; it isn't automatically a loss or evidence that terminating the agreement will improve company profit.
If the client leaves, some allocated payroll and overhead may remain. Use a separate comparison of revenue lost, costs actually removed, transition work, and replacement work before making that decision. Freed hours and reduced cash spending are different outcomes.
Make the Page Reusable
Save the source period, assumptions, and allocation method with the result. Have the bookkeeper check revenue and vendor costs, the service lead check delivery effort, and the owner resolve the action. Each uncertainty should have a named person responsible for improving it.
Use the same page in the model's quarterly margin-and-fit review. Keep fit observations beside the financial result without turning them into unexplained cost adjustments. The next useful step is to reconcile one client's rows to your books, correct the missing work, and repeat a calculation you can defend.
mspoutpost.com/articles/client-profitability-analysis-on-one-page-for-your-msp
Written by Graham Whitfield
MSP Outpost publishes information, not legal, financial, insurance, tax or compliance advice, and reading it creates no professional relationship. For decisions about your business, talk to a qualified professional.
