This report provides a detailed breakdown of billable hours trend over the last 12 months for managed service providers.
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: Operations managers, service delivery leads, and MSP owners managing capacity
How often: Weekly for scheduling, monthly for utilization reviews, quarterly for staffing decisions
Headline numbers for the April 2025 – January 2026 period (10 months with complete data)
EVALUATE TOPN(15, SUMMARIZECOLUMNS('BI_Autotask_Time_Entries'[resource_name], "TotalHours", SUM('BI_Autotask_Time_Entries'[hours_worked]), "BillableHours", SUM('BI_Autotask_Time_Entries'[Billable Hours]), "NonBillableHours", SUM('BI_Autotask_Time_Entries'[Non billable Hours])), [BillableHours], DESC)
Billable hours (blue) and non-billable hours (red) logged each month. The bar length represents total hours; billable portion in blue.
↗ Oct is highest month. ▼ Aug is the low point. Jan 2026 is partial month (data through Mar 22).
EVALUATE
ADDCOLUMNS(
SUMMARIZE(
FILTER(
'BI_Common_Dim_Date',
'BI_Common_Dim_Date'[year_month] >= 202504
&& 'BI_Common_Dim_Date'[year_month] <= 202601
),
'BI_Common_Dim_Date'[year_month],
'BI_Common_Dim_Date'[year],
'BI_Common_Dim_Date'[month]
),
"Billable Hours", CALCULATE([Billable]),
"Total Hours", CALCULATE([Total]),
"Non-Billable", CALCULATE([Non-Billable])
)
ORDER BY 'BI_Common_Dim_Date'[year_month] ASC
Billable, non-billable, and total hours per month with the billable percentage for each period.
| Month | Billable Hours | Non-Billable | Total Hours | Billable % | Status |
|---|---|---|---|---|---|
| Apr 2025 | 2,897 | 691 | 3,588 | 80.8% | Strong |
| May 2025 | 2,352 | 963 | 3,315 | 70.9% | Average |
| Jun 2025 | 2,161 | 1,037 | 3,198 | 67.6% | Average |
| Jul 2025 | 2,350 | 1,187 | 3,537 | 66.4% | Average |
| Aug 2025 | 1,773 | 914 | 2,686 | 66.0% | Low |
| Sep 2025 | 2,467 | 1,397 | 3,865 | 63.8% | Average |
| Oct 2025 | 2,981 | 1,022 | 4,003 | 74.5% | Peak |
| Nov 2025 | 2,460 | 854 | 3,314 | 74.2% | Strong |
| Dec 2025 | 2,479 | 768 | 3,247 | 76.3% | Strong |
| Jan 2026 | 1,664 | 451 | 2,116 | 78.6% | Partial |
EVALUATE
ADDCOLUMNS(
SUMMARIZE(
FILTER(
'BI_Common_Dim_Date',
'BI_Common_Dim_Date'[year_month] >= 202504
&& 'BI_Common_Dim_Date'[year_month] <= 202601
),
'BI_Common_Dim_Date'[year_month],
'BI_Common_Dim_Date'[year],
'BI_Common_Dim_Date'[month]
),
"Billable Hours", CALCULATE([Billable]),
"Non-Billable Hours", CALCULATE([Non-Billable]),
"Total Hours", CALCULATE([Total]),
"Billable Pct", DIVIDE(CALCULATE([Billable]), CALCULATE([Total]), 0)
)
ORDER BY 'BI_Common_Dim_Date'[year_month] ASC
What percentage of logged hours was billable each month? The target for most MSPs is 75–85%.
-- Overall billable ratio
EVALUATE
ROW(
"Billable Pct Overall", DIVIDE([Billable], [Total], 0),
"Billable Hours", [Billable],
"Total Hours", [Total],
"Non-Billable", [Non-Billable]
)
-- Monthly ratio for chart
EVALUATE
ADDCOLUMNS(
SUMMARIZE(
FILTER(
'BI_Common_Dim_Date',
'BI_Common_Dim_Date'[year_month] >= 202504
&& 'BI_Common_Dim_Date'[year_month] <= 202601
),
'BI_Common_Dim_Date'[year_month]
),
"Billable %",
DIVIDE(
CALCULATE([Billable]),
CALCULATE([Total]),
0
)
)
ORDER BY 'BI_Common_Dim_Date'[year_month] ASC
The data covers April 2025 through January 2026. Over those 10 months, the team logged 25,784 billable hours at an average of 2,578 per month. That translates to roughly 129 chargeable working days per month across the team, assuming an 8-hour day.
The pattern shows a clear August dip (1,773 billable hours, the lowest in the period), which is typical in European MSP environments during the summer holiday period. The recovery in September was sharp, peaking in October 2025 at 2,981 billable hours, the highest single month in the dataset. That October surge may reflect deferred work from August being processed, combined with a busy Q4 client cycle.
The billable ratio tells a more nuanced story. April had the best ratio at 80.8%, but September had the worst at 63.8% despite having the second-highest total hours logged. That gap between total and billable hours in September suggests a high volume of internal or non-chargeable work, not a productivity problem.
September had 1,397 non-billable hours, the highest in the period, accounting for 36.2% of all time logged that month. Before attributing this to holiday catch-up or training, drill into what work types absorbed those hours. If internal projects or admin work jumped significantly in September, that is a capacity decision, not a calendar effect.
2,686 total hours in August versus a 10-month average of 3,387 is a 21% reduction. If this repeats year over year, the right response is proactive: front-load Q3 billable targets into July, reduce non-essential internal projects in August, and consider delayed renewals or scheduled maintenance tasks to fill the gap.
October 2025 shows what the team can produce when working at capacity: 2,981 billable hours on 4,003 total. That's a 74.5% ratio and a 15.6% lift over the annual average. Use this as the ceiling for monthly targets, not the floor. Setting targets at the average means you are planning for mediocrity in peak months.
Billable hours come from the Billable Hours column on Autotask time entries. These are hours flagged as billable by the technician or set as billable based on the contract type. Non-billable hours are time entries where the billing flag is off or the entry type is internal.
The data was extracted in March 2026, and January 2026 only contains time entries logged through the extraction date. This makes January appear lower than it should be as a complete month. Treat it as a partial data point rather than a trend indicator.
Most MSPs target 75–85% billable against logged hours. Below 70% over two or more months is a signal worth investigating: it often indicates too much internal work, under-recording of billable time, or scope creep on fixed-price contracts. Above 90% may indicate insufficient time allocated to internal improvements and knowledge work.
Yes. In the live Power BI report, you can apply slicers for resource name, team, or department to see individual billable hour trends. Ask the AI the question "Show me billable hours per technician over 12 months" and it will run the equivalent DAX with a GROUP BY on the resource dimension.
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