Comparing internal cost rates across the team and analyzing the gap between hours worked and hours billed. Generated by AI via Proxuma Power BI MCP server.
Comparing internal cost rates across the team and analyzing the gap between hours worked and hours billed. 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: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
Comparing internal cost rates across the team and analyzing the gap between hours worked and hours billed. Generated by AI via Proxuma Power BI MCP server.
EVALUATE
ROW(
"TotalResources", DISTINCTCOUNT('BI_Autotask_User_Details'[resource_user_name]),
"AvgCostRate", AVERAGE('BI_Autotask_User_Details'[internal_cost]),
"MinCostRate", MIN('BI_Autotask_User_Details'[internal_cost]),
"MaxCostRate", MAX('BI_Autotask_User_Details'[internal_cost]),
"TotalHoursWorked", SUM('BI_Autotask_Time_Entries'[hours_worked]),
"TotalHoursBilled", SUM('BI_Autotask_Time_Entries'[hours_to_bill]),
"BillableRatio", DIVIDE(
SUM('BI_Autotask_Time_Entries'[Billable Hours]),
SUM('BI_Autotask_Time_Entries'[hours_worked]))
)
The top 30 resources ranked by hours worked, showing internal cost rate, hours billed, and billable ratio side by side
| Resource | Total Hours | Billable Rate |
|---|---|---|
| Dr. Amber Ayala DVM | 2,400 | 72.9% |
| James Li | 2,136 | 61.0% |
| Maxwell Reed | 2,050 | 89.6% |
| Andrew Roberts | 1,888 | 80.9% |
EVALUATE TOPN(10, SUMMARIZECOLUMNS('BI_Autotask_Time_Entries'[resource_name], "TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]), "BillableRate", DIVIDE(SUM('BI_Autotask_Time_Entries'[Billable Hours]), SUM('BI_Autotask_Time_Entries'[hours_worked]))), [TotalHours], DESC)
How 76 resources are distributed across four cost rate bands
| Cost Tier | Rate Range | Resources | % of Team | Level |
|---|---|---|---|---|
| €35–€40 | Entry level | 12 | 15.8% | Entry |
| €40–€50 | Mid level | 28 | 36.8% | Mid |
| €50–€60 | Senior | 24 | 31.6% | Senior |
| €60–€75 | Specialist / Lead | 12 | 15.8% | Specialist |
EVALUATE
SUMMARIZECOLUMNS(
"CostTier",
SWITCH(TRUE(),
MAX('BI_Autotask_User_Details'[internal_cost]) < 40, "€35-40",
MAX('BI_Autotask_User_Details'[internal_cost]) < 50, "€40-50",
MAX('BI_Autotask_User_Details'[internal_cost]) < 60, "€50-60",
"€60-75"),
"ResourceCount", DISTINCTCOUNT('BI_Autotask_User_Details'[resource_user_name])
)
Are your most expensive resources billing enough hours to justify their rates?
| Cost Tier | Avg Cost Rate | Total Hours Worked | Total Hours Billed | Billable Ratio | Efficiency |
|---|---|---|---|---|---|
| Entry €35–€40 | €37.50 | 14,280 | 10,710 | 75.0% | |
| Mid €40–€50 | €45.20 | 33,320 | 24,660 | 74.0% | |
| Senior €50–€60 | €54.80 | 27,120 | 18,870 | 69.6% | |
| Specialist €60–€75 | €66.30 | 14,730 | 10,164 | 69.0% |
Entry-level and mid-level resources bill at 74–75%, which is in line with healthy MSP benchmarks. Senior and specialist tiers drop to 69–70%. That 5-point gap is expected to some extent: senior staff spend more time on internal projects, mentoring, and pre-sales. But at €54–€66 per hour, every unbilled hour costs significantly more than at the entry tier.
The €60–€75 tier accounts for 4,566 unbilled hours. At an average cost of €66.30/hour, that is roughly €302,700 in internal cost for work that does not appear on any client invoice. Some of that is expected (project management, escalation support, architecture reviews). The question is whether that amount matches what you planned for.
EVALUATE
ADDCOLUMNS(
VALUES('BI_Autotask_User_Details'[cost_tier]),
"AvgCostRate", AVERAGE('BI_Autotask_User_Details'[internal_cost]),
"TotalHoursWorked", SUM('BI_Autotask_Time_Entries'[hours_worked]),
"TotalHoursBilled", SUM('BI_Autotask_Time_Entries'[hours_to_bill]),
"BillableRatio", DIVIDE(
SUM('BI_Autotask_Time_Entries'[Billable Hours]),
SUM('BI_Autotask_Time_Entries'[hours_worked]))
)
ORDER BY [AvgCostRate] ASC
The €60–€75 cost tier has 12 resources working 14,730 hours total, but only 69% of those hours reach a client invoice. At their cost rate, the 4,566 unbilled hours represent roughly €302,700 in absorbed cost. Some internal work is expected at this level, but the gap between their ratio and the entry-level 75% is worth auditing. Check whether these resources are spending time on internal projects that should be billable, or whether time is being logged to non-billable categories by mistake.
28 resources in the €40–€50 band account for 37.2% of all hours worked. Their 74% billable ratio is healthy, but the volume means even small improvements here have outsized impact. A 2% improvement in this tier alone would convert 667 hours into billable work, adding approximately €30,100 in internal cost recovery at their average rate of €45.20.
The €35–€40 tier leads with a 75% billable ratio. These 12 resources are largely doing direct service delivery: ticket work, on-site support, routine tasks. Their high billing efficiency is what you want from this tier. The priority is making sure they stay focused on billable work and that their cost rate covers overhead at the volumes they produce.
4 actions based on the data above
Pull the time entries for your 12 specialist/lead resources and categorize the unbilled hours by work type. Internal project work, pre-sales, and mentoring are legitimate uses. But if a significant portion is going to administrative overhead or miscategorized time entry types, that is recoverable margin. At €66.30/hour, even converting 10% of unbilled hours to billable adds approximately €30,000 back to the P&L.
Your current average of 72% treats all resources equally. That hides the structural difference between tiers. Set explicit targets: 78% for entry, 75% for mid, 72% for senior, and 68% for specialist. Measure monthly. Resources that consistently fall below their tier target need a conversation about time allocation, not a reminder to log hours.
A €48.50 average cost rate needs a billing rate that covers overhead, profit margin, and the 28% of unbilled time. If your average billing rate to clients is below €100/hour, the margin on senior and specialist resources may be thinner than it appears once you factor in their lower billable ratio. Run this report quarterly alongside your billing rate analysis to keep the two aligned.
With 28 resources and 33,320 hours, the €40–€50 tier is where operational improvements have the most impact. Look at their top non-billable activities. If a recurring internal task (team meetings, documentation, admin) can be streamlined or reduced by even 30 minutes per person per week, you recover 728 hours per year across this tier.
Internal cost rates are stored in Autotask under each resource's profile in the internal_cost field. Proxuma Power BI pulls this through the Autotask connector and joins it with time entry data. The cost rate reflects what the MSP pays per hour for that resource (salary plus overhead allocation), not the billing rate charged to clients.
Hours worked is the total time a resource has logged. Hours billed (hours_to_bill) is the amount sent to the client on an invoice, which may differ from worked hours due to write-downs or fixed-fee adjustments. Billable hours is the subset of worked hours that qualify for billing based on the time entry type and contract. The billable ratio in this report uses billable hours divided by hours worked.
Specialist and lead resources typically spend more time on activities that do not appear on client invoices: pre-sales engineering, internal infrastructure, mentoring junior staff, architecture reviews, and escalation management. A 69% billable ratio is not unusual for this tier. The question is whether the 31% internal allocation matches what was planned in your resource budget.
Most MSP benchmarks put a healthy billable ratio between 70% and 80%, depending on role. Service desk and field technicians should be closer to 80%. Senior engineers and architects typically land around 65–72%. A blended team average of 72% is within normal range, but the real value comes from measuring each tier separately and setting role-appropriate targets.
Yes. Connect Proxuma Power BI to your Autotask instance, 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 cost rates and time entries, 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