
An MSP chart of accounts should let you read revenue and delivery cost together for each service line. Split managed services, recurring product, hardware, and projects, then map the labor and purchases that serve them. I'd settle those definitions before adding more account codes.
The MSP model targets a 50% managed-services gross margin after burdened delivery labor and tools. Gross margin is revenue less its direct delivery cost, divided by revenue. If delivery pay sits somewhere else in your report, the percentage you're comparing has a different cost basis.
Build the Management View Around the Work
Start with the profit and loss report you want to use, then map the existing accounts into it. You don't need a separate general-ledger account for every client or every product SKU. Use the detail your system can maintain consistently, with a clear route from each report total back to the underlying transactions.
Give each revenue line a matching cost group. Keep the definitions in a short mapping document, including the treatment of credits, shared costs, and work that spans more than one line. Have whoever posts invoices and payroll use that same document.
The model's four revenue lines carry different work and purchases. An invoice billing monthly doesn't, by itself, establish that the item is a managed service. Resold licenses remain product revenue even though they are recurring.
| Reporting Line | Revenue to Map | Delivery Cost to Map |
|---|---|---|
| Managed Services | The fee for the managed scope | Burdened support, TAM, vCIO, centralized work, service management when present, on-call pay, and delivery tools. |
| Recurring Product | Resold licenses and other recurring product | The corresponding supplier charges for those products. |
| Hardware | Equipment sold to clients | The corresponding equipment purchase costs. |
| Projects | Separately billed project work | Burdened project labor and the other direct costs of that work, with product components separately identified. |
If you actually sell a distinct resold-service line, identify it separately. The model's 70% margin target belongs to that labeled category; its example doesn't use it as a revenue line. Don't apply it to managed seats or recurring product just to obtain a preferred margin.
Put Delivery Roles Inside Delivery Cost
The model's service manager belongs in managed-services delivery labor when the role is present. So do the TAM and vCIO, even though their work extends beyond tickets. Their reporting relationship to the owner doesn't move their delivery cost into sales or general overhead.
Keep centralized services and residual alert handling clear. The model uses RMM automation as the default NOC approach, with remaining alerts handled by the desk. Don't add an imaginary NOC role to the report when the existing staff and tools already carry that work.
Use burdened labor rather than salary alone. The model's US general employee multiplier is 1.25 for payroll taxes, benefits, and insurance, with other employment costs treated separately. For your management report, use the actual costs you incur and reconcile the allocation to payroll.
Where an owner performs technician work, allocate that work to delivery rather than treating it as unpaid capacity. Keep the owner's total compensation counted once. Reallocating the relevant cost between delivery and overhead doesn't create another salary or change the company's total expense.
Give Shared Costs a Written Allocation
Some employees and supplier invoices serve several lines. Choose an allocation method you can support, document it, and use it consistently. Time records can inform labor allocation; product and service detail can inform supplier-cost mapping. Missing detail should remain a gap to resolve rather than becoming a favorable guess.
In practitioner advice, Reed Warren recommends separating direct labor by the revenue streams it supports, including managed services, projects, and time-and-materials work. He argues that a combined labor bucket makes line costs and pricing harder to assess. I'd keep the allocation method beside that report so the split can be checked.
The model places onboarding on project engineers, including the unpaid work when the fee is quoted and waived. Preserve that cost in project labor even though no onboarding revenue appears. Moving it to an unexamined overhead account would change the comparison you're trying to make.
Separate tools used to deliver client service from internal software and equipment. The model carries internal software and equipment in general and administrative costs. A supplier name alone won't establish the category when one invoice contains different kinds of purchase.
Keep Sales and Overhead Below Gross Profit
After subtracting delivery costs, gross profit remains to fund sales and general overhead. Keep sales pay and programs visible together. Keep the office, administration, and the owner's management work visible in the general and administrative group, rather than treating overhead as whatever didn't get assigned elsewhere.
The model's new-business rep belongs in sales and marketing, while account delivery work remains separate. This is a role distinction. If someone shares work, allocate the cost to the responsibilities performed instead of assuming their job title answers every posting question.
Use the same period and recognition basis when comparing revenue and cost. A cash payment date can differ from the period the item belongs in. Have the finance owner settle the reporting treatment and reconcile the management view to the books, rather than letting a delayed supplier bill appear to improve delivery performance.
Prove That the Totals Still Reconcile
Say you use the model's US stable example as a reporting check. Its reported gross profit is $1,594,955, sales and marketing is $218,077, and general and administrative cost is $646,602. Subtracting the latter groups from gross profit gives $730,276 in EBITDA, or earnings before interest, taxes, depreciation, and amortization.
That arithmetic is $1,594,955 minus $218,077 minus $646,602. Reclassifying a cost from overhead to delivery would reduce gross profit and overhead by the same amount, leaving EBITDA unchanged. If total profit changes solely because you rearranged reporting groups, inspect for a missing or duplicated posting.
For line margins, compare actual results with the right target. The model uses 50% for managed services and projects, and about 30% for recurring product and hardware. Keep the actual cost beside the percentage; a target doesn't establish what your team delivered.
Test the Mapping Before Applying It Everywhere
I'd test a closed reporting period before changing the recurring process. Use representative transactions from each line, including a mixed supplier invoice and an employee who works across services. Confirm that the allocation can be reproduced by the person responsible for the next close.
- The finance owner maintains the revenue and cost mapping and approves changes to its definitions.
- Billing assigns invoice lines and credits to the agreed revenue categories.
- Delivery confirms which work belongs to each service and resolves missing labor information.
- The person closing the books reconciles payroll, supplier costs, and the final report totals.
- The owner reviews unexplained margin changes and distinguishes posting changes from operating results.
Keep a note when the mapping changes, including how it affects comparison with earlier reports. Don't present a reclassification as a delivery improvement. Start with the period you've tested, reconcile its totals, and give the next close the same definitions.
mspoutpost.com/articles/build-an-msp-chart-of-accounts-that-shows-real-margin
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.
