A comparison of 50,752 hours worked against 55,785 hours billed across 15 clients in Autotask PSA. This report examines where billing minimums inflate billed hours beyond actual work, and where specific clients see the biggest gaps between effort and invoiced time.
A comparison of 50,752 hours worked against 55,785 hours billed across 15 clients in Autotask PSA. This report examines where billing minimums inflate billed hours beyond actual work, and where specific clients see the biggest gaps between effort and invoiced time.
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
A comparison of 50,752 hours worked against 55,785 hours billed across 15 clients in Autotask PSA. This report examines where billing minimums inflate billed hours beyond actual work, and where specific clients see the biggest gaps between effort and invoiced time.
Top-level metrics comparing hours worked, hours billed, and total revenue across all tracked clients.
Side-by-side comparison of actual hours worked (teal) and hours billed (navy) for the top 15 clients. Every client here is billed more than worked, showing billing minimums are being applied consistently.
EVALUATE TOPN(15, ADDCOLUMNS(SUMMARIZE('BI_Autotask_Companies','BI_Autotask_Companies'[company_name]), "Worked", [Company - Hours Worked], "Billed", [Company - Hours Billed], "Billable", [Company - Billable Hours]), [Worked], DESC) ORDER BY [Worked] DESC
Looking at the billable portion of worked hours alongside total billed hours. Client F has no billable hours tracked, which means all billing comes from fixed-fee or block-hour contracts.
| Client | Worked | Billable | Billed | Bill. % |
|---|---|---|---|---|
| Client A | 4,370 | 3,792 | 4,806 | 86.8% |
| Client B | 3,791 | 3,127 | 4,141 | 82.5% |
| Client C | 2,801 | 2,665 | 3,001 | 95.1% |
| Client D | 2,217 | 1,970 | 2,393 | 88.9% |
| Client E | 1,697 | 1,665 | 1,947 | 98.1% |
| Client F | 1,662 | n/a | 1,939 | 0% |
| Client G | 1,312 | 1,096 | 1,481 | 83.5% |
| Client H | 1,171 | 1,114 | 1,289 | 95.1% |
| Client I | 1,006 | 853 | 1,152 | 84.8% |
| Client J | 962 | 916 | 1,046 | 95.2% |
| Client K | 962 | 954 | 1,003 | 99.1% |
| Client L | 866 | 860 | 916 | 99.3% |
| Client M | 865 | 808 | 1,027 | 93.4% |
| Client N | 782 | 681 | 856 | 87.1% |
| Client O | 710 | 605 | 834 | 85.2% |
The "leakage" percentage here is negative because billed exceeds worked. Clients with the largest negative values have the most billing minimums applied. This is revenue capture, not revenue loss.
EVALUATE
TOPN(15,
ADDCOLUMNS(
SUMMARIZE(
'BI_Autotask_Companies',
'BI_Autotask_Companies'[company_name]
),
"Worked", [Company - Hours Worked],
"Billed", [Company - Hours Billed],
"Billable", [Company - Billable Hours]
),
[Worked], DESC
)
Estimating the dollar value of the 5,033 surplus hours billed above actual worked hours, using the average effective rate.
Billing minimums are generating roughly $1.59M in revenue that has no matching labour cost. This is the definition of captured value: you bill for the commitment of availability, not just the minutes on the clock. The three clients with the largest surplus (M at 18.7%, O at 17.5%, F at 16.7%) together account for about 438 surplus hours, worth an estimated $138K.
If billing minimums were removed and clients were only charged for actual hours worked, total revenue would drop by approximately 9%. That makes this a policy decision, not an operational one. The question is whether your clients perceive enough value to justify the minimums, or whether they will push back during contract renewals.
EVALUATE ROW("HoursWorked", [Company - Hours Worked], "HoursBilled", [Company - Hours Billed], "BillableHours", [Company - Billable Hours], "TotalRevenue", [Revenue - Total])
Across all 15 clients, 5,033 more hours are billed than worked. This is driven by billing minimums and block-hour contracts that round up short tasks. The surplus translates to roughly $1.59M in additional revenue with zero incremental labour cost. This is working as designed.
Client M is billed 18.7% above worked hours, Client O at 17.5%, and Client F at 16.7%. These clients likely have high volumes of short interactions (quick calls, password resets) where the billing minimum kicks in every time. If any of these clients audit their invoices, the gap will be visible. Worth reviewing whether the minimum policy is defensible for each account.
This client shows null for billable hours but 1,939 billed hours. That pattern points to a fixed-fee or block-hour contract where time entries are not classified as billable at entry. The 1,662 hours of work are still happening, but the billing structure bypasses the billable flag entirely. This makes it impossible to track true utilisation for Client F without looking at the contract directly.
Client K at -4.3% and Client L at -5.7% are billed closest to their actual worked hours. These are likely clients with longer average ticket durations where billing minimums rarely apply, or clients on contracts with smaller rounding increments. They represent the "clean" end of the billing spectrum.
The billing surplus is a structural feature, not a bug. MSPs that use billing minimums are trading simplicity for revenue capture. A 1-hour minimum on a 10-minute task means the client pays for your availability, not just your time. Across 15 clients, this adds up to 5,033 hours of billed time that does not correspond to actual work. At $316 per billed hour, that is $1.59M you would lose if you switched to exact-time billing.
The spread varies significantly by client. Client M sees an 18.7% gap while Client K sees only 4.3%. This difference likely correlates with ticket volume and average duration. Clients with many short interactions trigger the minimum more often. If you segment clients by average ticket duration, you will probably find that the high-spread clients all sit below 30 minutes per interaction.
Client F deserves a separate investigation. The null billable hours combined with 1,662 worked hours and 1,939 billed hours suggest a contract structure that does not map cleanly to the time entry system. This is not necessarily a problem, but it creates a blind spot. You cannot measure efficiency on an account where the billable flag is never set. Consider whether the contract terms should be reflected in the time entry classification rules.
The 89.8% average billable ratio (excluding Client F) is strong. It means 9 out of every 10 hours worked are classified as billable. The remaining 10% is internal or non-billable work attached to these client accounts. Combined with the billing surplus, the overall revenue capture per hour of effort is very healthy.
Steps to protect and optimise the billing surplus while reducing contract risk.
These three clients have the largest worked-to-billed gap (16-19%). Pull a sample of 50 recent tickets per client and check whether the minimum was triggered. If more than 60% of tickets trigger the minimum, consider whether the client might negotiate it down. Better to adjust proactively than to lose the entire minimum during a contentious renewal.
A client with 1,662 hours worked and zero billable hours tracked is a data hygiene issue. Work with the service delivery team to determine whether the contract type should auto-classify time entries as billable, or whether a manual reclassification is needed. Until this is resolved, Client F is invisible in any utilisation report.
Track the worked-to-billed ratio over time. A sudden increase in the spread could indicate a change in ticket patterns (more short calls) or a contract change. A sudden decrease might mean technicians are logging longer blocks. Either way, the trend matters more than the snapshot. The DAX queries in this report can power a live Power BI page for ongoing monitoring.
Billing minimums round up short tasks. A 15-minute call billed at a 1-hour minimum adds 45 phantom minutes. Block-hour contracts can also bill a fixed number of hours regardless of actual time spent. Both mechanisms push billed hours above worked hours.
Negative leakage means you are billing more than you work. In this dataset, every client has negative leakage, which means billing minimums are consistently capturing extra revenue. Positive leakage would mean you are doing work you are not billing for, which is the scenario MSPs usually worry about.
Client F is likely on a fixed-fee or block-hour contract where time entries are not tagged as billable at entry. The billing happens at the contract level, not the time-entry level. The 1,939 billed hours come from the contract billing rules, not from individual time entry classifications.
That depends on the client relationship and competitive pressure. The surplus from minimums is worth roughly $1.59M. Reducing minimums across the board would hit revenue directly. A better approach is to review minimums per client during contract renewals and adjust only where the spread is large enough to cause friction.
Billing efficiency is total hours billed divided by total hours worked, expressed as a percentage. A value above 100% means you bill more than you work. In this dataset, 55,785 billed divided by 50,752 worked equals 109.9%.
Yes. Copy any query from the toggles above and paste it into DAX Studio or the Power BI Desktop performance analyzer. The queries reference standard Proxuma data model tables and measures that exist in every Proxuma Power BI deployment.
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