A breakdown of 1,889 contracts across four types, measuring active utilization rates, revenue per billing category, and client-level value. Generated by AI via Proxuma Power BI MCP server.
A breakdown of 1,889 contracts across four types, measuring active utilization rates, revenue per billing category, and client-level value. Generated by AI via Proxuma Power BI MCP server.
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: Account managers, finance teams, and MSP owners managing renewals
How often: Monthly for pipeline review, 90 days before expiry for renewal preparation
A breakdown of 1,889 contracts across four types, measuring active utilization rates, revenue per billing category, and client-level value. Generated by AI via Proxuma Power BI MCP server.
EVALUATE ROW("Total Contracts", COUNTROWS('BI_Autotask_Contracts'), "Active", COUNTROWS(FILTER('BI_Autotask_Contracts', 'BI_Autotask_Contracts'[contract_status_name] = "Active")), "Inactive", COUNTROWS(FILTER('BI_Autotask_Contracts', 'BI_Autotask_Contracts'[contract_status_name] = "Inactive")), "Total Billing Revenue", SUM('BI_Autotask_Billing_Items'[total_amount]), "Total Cost", SUM('BI_Autotask_Billing_Items'[our_cost]))
Breakdown of all 1,889 contracts by type, showing how many remain active and where inactive contracts are concentrated
| Type | Status | Count |
|---|---|---|
| Block Hours | Active | 158 |
| Block Hours | Inactive | 15 |
| Fixed Price | Inactive | 5 |
| Recurring Service | Active | 932 |
| Recurring Service | Inactive | 275 |
| Time & Materials | Active | 287 |
| Time & Materials | Inactive | 217 |
EVALUATE GROUPBY('BI_Autotask_Contracts', 'BI_Autotask_Contracts'[contract_type_name], 'BI_Autotask_Contracts'[contract_status_name], "Count", COUNTX(CURRENTGROUP(), 'BI_Autotask_Contracts'[contract_id])) ORDER BY 'BI_Autotask_Contracts'[contract_type_name] ASC, [Count] DESC
Revenue breakdown by billing item sub-type, showing which contract mechanisms generate the most value and which are running at a loss
| Billing Type | Revenue | Cost | Margin | Margin % |
|---|---|---|---|---|
| Recurring Service | $9,577,503 | $4,025,063 | $5,552,440 | 58.0% |
| Milestone | $3,845,490 | $0 | $3,845,490 | 100% |
| Product / Material | $2,644,523 | $2,483,170 | $161,353 | 6.1% |
| Block Hours | $917,546 | $453,912 | $463,634 | 50.5% |
| Time Entry (T&M) | $273,878 | $1,207,179 | -$933,301 | -340.8% |
| Expense | $225,026 | $173,409 | $51,616 | 22.9% |
EVALUATE
ADDCOLUMNS(
SUMMARIZE(
'BI_Autotask_Billing_Items',
'BI_Autotask_Billing_Items'[sub_type]
),
"Revenue", CALCULATE(SUM('BI_Autotask_Billing_Items'[total_amount])),
"Cost", CALCULATE(SUM('BI_Autotask_Billing_Items'[our_cost])),
"Margin", CALCULATE(
SUM('BI_Autotask_Billing_Items'[total_amount])
- SUM('BI_Autotask_Billing_Items'[our_cost])),
"Items", CALCULATE(COUNTROWS('BI_Autotask_Billing_Items'))
)
ORDER BY [Revenue] DESC
Top 15 clients ranked by total revenue, with cost and margin to identify which clients generate real profit and which consume more than they pay
| Company | Revenue | Cost | Margin % |
|---|---|---|---|
| Craig-Huynh | $2,324,617 | $1,013,970 | 56.4% |
| Lewis LLC | $2,212,915 | $894,222 | 59.6% |
| Little Group | $1,431,177 | $603,420 | 57.8% |
| Martin Group | $637,092 | $248,212 | 61.0% |
| Lopez-Reyes | $589,694 | $645,574 | -9.5% |
| Wall PLC | $476,622 | $214,395 | 55.0% |
| Burke, Armstrong and Morgan | $469,660 | $224,394 | 52.2% |
| Patterson, Riley and Lawson | $416,450 | $206,868 | 50.3% |
| Richards, Bell and Christensen | $328,165 | $107,091 | 67.4% |
| Wu-Jackson | $321,669 | $121,483 | 62.2% |
EVALUATE TOPN(15, ADDCOLUMNS(GROUPBY('BI_Autotask_Billing_Items', 'BI_Autotask_Billing_Items'[company_id], "Revenue", SUMX(CURRENTGROUP(), 'BI_Autotask_Billing_Items'[total_amount]), "Cost", SUMX(CURRENTGROUP(), 'BI_Autotask_Billing_Items'[our_cost])), "Company", LOOKUPVALUE('BI_Autotask_Companies'[company_name], 'BI_Autotask_Companies'[company_id], 'BI_Autotask_Billing_Items'[company_id])), [Revenue], DESC) ORDER BY [Revenue] DESC
The short answer to "are clients using their contracts enough to justify the cost?" is: most of them, yes. The portfolio-wide margin sits at 53.0% across $17.6M in total revenue. That is a healthy number for a managed services business. But the averages hide three problems worth addressing.
Time & Materials contracts have the highest churn rate. 43.1% of all T&M contracts are inactive, compared to 22.8% for Recurring and just 8.7% for Block Hours. T&M contracts are inherently short-lived, but a 43% inactive rate across 504 contracts suggests many of them were one-off engagements that never converted to a recurring relationship. That is revenue that walked away.
The billing data confirms what the contract distribution hints at. Recurring services generate 54% of all revenue ($9.58M) at a 58% margin. Block Hours produce another $918K at 50.5% margin. Together, predictable contract types account for the majority of profit. T&M time entries, by contrast, show $274K in billed revenue against $1.2M in labor cost. The negative margin is expected because most time work is covered under recurring agreements, but it also means any T&M work done outside of a contract is being delivered at a loss.
At the client level, one account stands out. UNPROFITABLE_CLIENT generated $589K in revenue but cost $645K to service, a net loss of $55,879. That is the fifth-largest revenue account in the portfolio running at a -9.5% margin. Meanwhile, Torres-Jones at position 12 generates $255K at an 81.7% margin, more than three times the profit efficiency. The gap between these two accounts tells you where to focus a contract review.
The overall utilization rate of 75.6% billable hours is reasonable but below the 80% target most MSPs aim for. With 84 active resources averaging just 10.9 billable hours per week against a 32-hour target, there is significant capacity sitting idle. The question is whether that unused capacity is structural (too many FTEs) or operational (work being done that is not logged correctly).
5 priorities based on the findings above
This account is generating $589K in revenue and $645K in cost. That is a net loss of $55,879 on what should be a top-five account. Pull the billing items for this client and identify which cost categories are driving the overrun. If the issue is excessive T&M hours outside the recurring agreement, the fix is a scope adjustment or a rate increase at the next renewal. Do not let a $590K account stay unprofitable through another quarter.
43.1% of T&M contracts are inactive. Some of those clients may still be active under a different contract type, but many probably left without converting to a managed service agreement. Run a cross-reference of inactive T&M contracts against the active company list. Any company with an inactive T&M contract and no active recurring contract is a warm lead for a follow-up call. Even a 10% conversion rate on 217 leads would add measurably to MRR.
84 resources are averaging 10.9 billable hours per week. At an 80% target on a 40-hour week, the benchmark is 32 hours. That gap could mean many resources are part-time, are doing work that is not being logged, or that the team is overstaffed relative to demand. Start by segmenting utilization by resource role and department. If certain roles show consistently low utilization, the contract pricing may need to reflect the real capacity being used.
Both accounts sit in the 37-39% margin range, below the portfolio average of 53%. They are not losing money yet, but they are trending toward the danger zone. If costs increase by even 10-15%, these accounts flip from thin profit to loss. Review their contract rates against the current cost structure and consider adjusting at the next renewal. Small margin problems are easy to fix early and expensive to fix late.
With an 81.7% margin on $255K in revenue, Torres-Jones is the most efficient client in the top 15. Their contract structure (low cost relative to revenue) is what every new deal should look like. Pull their contract details, rate card, and service scope as a template for future proposals. If you can replicate this model across even five more clients, the impact on overall margin would be significant.
Utilization rate is billable hours divided by total hours (billable + non-billable) from Autotask time entries. The 75.6% figure means that for every 100 hours logged, 75.6 were billable. The remaining 24.4% went to internal work, admin, or non-billable project tasks.
Most time entries in an MSP are covered by recurring service contracts. The labor cost is logged on the time entry, but the revenue is captured under the recurring contract billing item. So the time entry sub-type shows high cost and low revenue by design. The real margin is captured in the Recurring Service line.
Active contracts have a status of "Active" in Autotask. Inactive covers all other statuses: expired, cancelled, completed, or suspended. An inactive contract does not necessarily mean the client left. They may have transitioned to a different contract type or consolidated services under a new agreement.
Total revenue ($17.6M) divided by the average number of active companies per month (~225) divided by the number of months in the dataset (19 months from July 2024 to January 2026). The $3,299 figure represents the average monthly spend per company across all billing types.
Yes. Connect Proxuma Power BI to your Autotask PSA, add an AI tool (Claude, ChatGPT, or Copilot) via MCP, and ask the same question. The AI writes the DAX queries, runs them against your real contract and billing data, and produces a report like this in under fifteen minutes.
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