What is the true cost of service per client including licenses? Cross-source analysis combining Microsoft 365 and Autotask PSA data to reveal the full cost picture per client.
What is the true cost of service per client including licenses? Cross-source analysis combining Microsoft 365 and Autotask PSA data to reveal the full cost picture per client.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
What is the true cost of service per client including licenses? Cross-source analysis combining Microsoft 365 and Autotask PSA data to reveal the full cost picture per client.
This report breaks down the total cost of service across your top 12 clients by revenue. It combines labor hours from Autotask PSA with license costs from Microsoft 365 to show the complete cost picture. The overall margin of 53% is healthy, but one client is actively losing money and two clients represent a concentrated risk.
Revenue, labor cost, license cost, total cost, and profit margin per client
| Company | Revenue | Contracts | Devices |
|---|---|---|---|
| Craig-Huynh | $2,324,617 | 22 | 715 |
| Lewis LLC | $2,212,915 | 13 | 481 |
| Little Group | $1,431,177 | 38 | 350 |
| Martin Group | $637,092 | 30 | 1,355 |
| Lopez-Reyes | $589,694 | 8 | — |
| Wall PLC | $476,622 | 23 | 320 |
| Burke et al | $469,660 | 17 | 97 |
| Patterson et al | $416,450 | 9 | — |
| Richards et al | $328,165 | 14 | 142 |
| Wu-Jackson | $321,669 | 14 | 119 |
EVALUATE TOPN(10, SUMMARIZECOLUMNS('BI_Autotask_Companies'[company_name], "Revenue", SUM('BI_Autotask_Billing_Items'[total_amount]), "Contracts", DISTINCTCOUNT('BI_Autotask_Contracts'[contract_id]), "Devices", COUNTROWS('BI_Datto_Rmm_Devices')), [Revenue], DESC)
Billable hours per client -- showing where your team spends the most time
Client E stands out: despite logging only 695 hours (ranked 11th), it has the highest labor cost at $645,574. This means the hourly cost rate for Client E is roughly $929/hr, far above the portfolio average of $164/hr. This signals either expensive subcontracting, project overruns, or miscategorized costs that need investigation.
EVALUATE
SUMMARIZECOLUMNS(
'BI_Autotask_Companies'[company_name],
"Hours", [Analytics - Total Hours],
"LaborCost", [Analytics - Total Cost],
"CostPerHour", DIVIDE([Analytics - Total Cost], [Analytics - Total Hours])
)
ORDER BY [Hours] DESC
Microsoft 365 license overhead by client
Of the 12 clients analyzed, only two have measurable license costs flowing through the cost model. The remaining 10 clients show zero license overhead, which could mean licenses are bundled into contract pricing or tracked separately.
| Client | Licenses Assigned | Licenses Consumed | License Cost | % of Total Cost |
|---|---|---|---|---|
| Client C | 20,403 | 352 | $20,403 | 3.3% |
| Client L | 1,513 | 13 | $1,513 | 1.2% |
Client C has 20,403 licenses assigned but only 352 consumed -- a consumption rate of just 1.7%. This gap suggests significant over-provisioning. At $20,403 in license cost, this is worth reviewing to check if unused licenses can be reclaimed or downgraded.
Client L shows a similar pattern at smaller scale: 1,513 assigned vs. 13 consumed (0.9% consumption). The dollar impact is modest at $1,513, but the pattern is worth flagging.
Profit margin per client with loss-making clients highlighted
Client E is the only loss-making client in the portfolio, with costs exceeding revenue by $55,880 (a -9.5% margin). Every other client generates positive margins between 50% and 67%. The portfolio-wide margin of 53% is strong, but Client E drags it down and should be the top priority for a profitability review.
EVALUATE
ADDCOLUMNS(
SUMMARIZECOLUMNS(
'BI_Autotask_Companies'[company_name],
"Revenue", [Analytics - Total Revenue],
"TotalCost", [Analytics - Total Cost] + [M365 - License Cost]
),
"Profit", [Revenue] - [TotalCost],
"Margin", DIVIDE([Revenue] - [TotalCost], [Revenue]),
"IsLoss", IF([Revenue] < [TotalCost], "Yes", "No")
)
ORDER BY [Margin] ASC
Revenue per hour and cost per hour calculations across the portfolio
| Client | Hours | Revenue/Hour | Cost/Hour | Profit/Hour |
|---|---|---|---|---|
| Client H | 84 | $4,958 | $2,463 | $2,495 |
| Client E | 695 | $849 | $929 | -$80 |
| Client A | 4,370 | $532 | $232 | $300 |
| Client I | 782 | $420 | $137 | $283 |
| Client B | 2,801 | $790 | $319 | $471 |
| Client C | 3,791 | $378 | $165 | $213 |
| Client D | 2,217 | $287 | $112 | $175 |
| Client G | 1,312 | $358 | $171 | $187 |
| Client F | 1,697 | $281 | $126 | $154 |
| Client J | 962 | $334 | $126 | $208 |
| Client K | 1,006 | $319 | $141 | $178 |
| Client L | 865 | $332 | $141 | $191 |
Client H delivers the best revenue per hour at $4,958 -- but note it only has 84 hours logged, suggesting it may be a project-based or licensing-heavy engagement. Client B is the strongest all-around performer: $790 revenue/hr across 2,801 hours. Client E is the only client where cost per hour ($929) exceeds revenue per hour ($849), confirming the loss at every hour worked.
Client E costs $645,574 against $589,694 in revenue, a net loss of $55,880 (-9.5% margin). The cost-per-hour of $929 is nearly 6x the portfolio average. This needs immediate attention: either the contract pricing is too low, the work scope has crept beyond what was agreed, or costs are being misallocated to this client.
Client A ($1,013,970) and Client B ($894,222) together account for $1,908,192 in costs -- 46% of the $8.3M total. While both are profitable (56% and 60% margins), this concentration creates risk. If either client churns or renegotiates pricing, it would have an outsized impact on overall profitability.
Excluding Client E, the remaining 11 clients average a 57% margin. The overall portfolio generates $9.3M in profit on $17.6M revenue. This is a healthy position for an MSP, and the margin consistency across most clients (50-67% range) shows good pricing discipline.
1. Audit Client E immediately. Review the contract terms, actual work delivered, and cost allocation for Client E. Determine whether costs are misattributed or if the contract is genuinely underpriced. Either renegotiate pricing or restructure the engagement scope within 30 days.
2. Investigate Client C license over-provisioning. With 20,403 licenses assigned but only 352 consumed, Client C is sitting on roughly $19,000 in potentially unused license overhead. Run a license audit and reclaim or downgrade unused seats.
3. Reduce concentration risk from top 2 clients. Client A and B represent 46% of costs and a similar share of revenue. Build a plan to grow mid-tier clients (D, F, G) to reduce dependency. Even small growth in these accounts improves portfolio balance.
4. Standardize cost tracking across all clients. Ten of 12 clients show zero license costs, which likely means licenses are not being tracked through the same cost model. Standardize how license costs are captured so that future profitability analyses reflect the complete picture.
5. Review Client H's engagement model. At 84 hours but $416,450 in revenue, Client H appears to be a licensing or project-based engagement. Confirm this is accurately categorized, and if so, consider whether this model can be replicated with other clients.
This report combines two primary sources: Autotask PSA (for revenue, labor costs, and hours) and Microsoft 365 (for license assignments and consumption). The data is joined at the client level through Power BI's semantic model, allowing cross-source analysis in a single view.
This typically happens when license costs are bundled into the contract price rather than tracked separately, or when the Microsoft 365 data connection does not have cost allocation mapped for those clients. We recommend standardizing license cost tracking across all clients for a more accurate picture.
Profit margin is calculated as (Revenue - Total Cost) / Revenue, where Total Cost includes both labor cost from Autotask PSA and license cost from Microsoft 365. A negative margin means the client costs more to serve than they pay.
Yes. Connect your Autotask PSA and Microsoft 365 data through Proxuma's Power BI MCP server. The DAX queries shown in this report will run against your own semantic model, giving you the same analysis with your real client data. No sample data, no manual work.
Start by verifying the data: check whether costs are correctly allocated and whether the revenue figure includes all contract components. If the loss is real, your options are to renegotiate pricing, reduce scope, improve operational efficiency for that client, or -- as a last resort -- exit the engagement. Most MSPs find that a direct conversation with the client about scope and pricing resolves the issue.
Monthly is ideal for tracking trends. Quarterly is the minimum for catching issues before they compound. With Proxuma's MCP server, you can regenerate this report in under 15 minutes at any frequency, making monthly reviews practical and low-effort.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started