Your trucks are busy all day and the bank balance never moves
Every truck goes out in the morning. Your technicians are busy from clock-in to clock-out, the dispatcher says the crew is slammed, and at month end the bank balance looks like last month's.
Our position, and it is a position, not a measured finding: a busy board and a broke P&L are not a contradiction. They are one number read from two sides. Every common fix for a shop like this works on the half of the day it already bills.
The number in the middle is billable time. It is the hours a technician is paid for set against the hours a customer is billed for. Billable hour efficiency is the second divided by the first.
This article shows where to find that number in two reports you already have. A contractor does not need new software to see it.
Our position, and it is a position, not a measured finding: a busy board and a broke P&L are not a contradiction.
You paid for eight hours and sold about five and a half
Take one technician and one ordinary 8-hour day. You paid for all of it. Money comes in only for the hours that end up on a customer's bill, and in the study below that is about 65 percent of the paid day. The rest was paid for, and nobody paid the shop back.
Treat the eight and the five and a half as a round illustration of the idea, not as a finding. The published figures are 8.8 paid hours and 5.7 billed hours. They come in the section on the 300 companies below, and the article uses those from there on.
You already own the hours that would fix this. You bought them this morning, and you are not selling all of them.
Why raising prices does not fix a busy shop that is broke
The usual diagnosis is that prices are too low, the owner is still in the truck taking customer calls, or the shop is one technician short. The usual fixes follow: charge more, get out of the truck, or hire. A second camp says fire everybody and go back to one truck. That is the advice owners are given, not a finding.
A price rise only lifts the hours a customer is billed for. Whether you set the hourly rate by flat rate pricing or by the clock, it applies to billed time. The hours the shop paid for and did not bill stay at full cost, and a higher price does not make them earn.
Another truck is another technician whose day is billed the same way, so it adds another unbilled half day. That is arithmetic on the average in the report below, not a claim about any one shop.
Raising prices is not wrong. It answers a different problem: the one where the billed hours are already priced below cost. Your labor rate has to cover the tech's hourly wage, labor cost, overhead cost and a target profit margin, and a labor calculator is a fair way to test it. Our hvac pricing guide for contractors shows how to check that for your own shop.
We are not saying your prices are too low or too high. Price and billed share are two separate questions, and fixing one does nothing for the other.
A price rise only lifts the hours a customer is billed for.
Two screens, each one right, and nobody comparing them
The dispatcher decides which technician goes where. The dispatch board shows every technician's day as colored blocks, wall to wall. Ask the dispatcher about the service department and the answer is that the crew is slammed. That is true.
The bookkeeper looks at a different screen, the profit and loss statement. It counts income only from hours a customer paid for, set against what the shop paid its people. The bookkeeper is also right.
The dispatcher sees hours worked. The bookkeeper sees hours paid for. Nobody puts the two side by side, and that is where the gap hides. It is nobody's fault, because each person is reading what their screen shows.
The time in between is non-billable time: drive time, shop time, administrative tasks, callbacks, the wait at a job site. Service companies all carry some of it. Getting it into view is a scheduling question as much as a money question, and our piece on dispatching strategies and scheduling efficiency covers the board side of it.
The dispatcher sees hours worked.
What 300 HVAC companies show about the average technician's day
Field Promax, a software company for HVAC shops, reported in a study covered by ACHR News on 16 June 2026 that the average technician workday is 8.8 paid hours, and that an average of 5.7 hours a day can be considered billable. The report covered 300 HVAC companies and more than 10,000 data points. The article does not state the period the data covers, and Field Promax sells software to this trade, which is worth keeping in mind.
The unbilled gap is about three hours a day. The report puts the driving time not recovered through trip charges or flat-rate pricing at about 1.13 hours a day, so more than one of those three hours is driving. ACHR News repeated the 8.8 and 5.7 figures and the 1.13 driving hours in a second article on 21 July 2026.
Now the arithmetic, which is ours. 5.7 divided by 8.8 is about 65 percent. So the average shop in that report is paid for about 65 percent of the hours it buys. That is our own division of two published figures. The report gives no breakdown by shop size, so it does not tell you what a shop with twelve trucks looks like.
ServiceTitan's blog post on HVAC profit margins groups shops by billable utilization. Below 55 percent is poor, with net margin of minus 5 to 3 percent. 55 to 65 is below average, at 3 to 8 percent. 65 to 75 is average, at 8 to 12 percent. 75 to 85 is good, at 12 to 18 percent, and 85 and above is excellent, at 18 to 25 percent.
The 65 percent in the Field Promax report sits on the line between below average and average. Read that way, a shop keeps roughly 3 to 12 cents of profit on each dollar, and at best twelve cents of each dollar stays.
Two cautions. ServiceTitan states no sample for its table and the table carries no year, so we call it ServiceTitan's benchmark table and do not date it. And the Field Promax figure and the ServiceTitan table are two different companies' numbers joined by our reading, not one survey.
5.7 divided by 8.8 is about 65 percent.
Where the unbilled hours hide
Neither screen shows where those three hours go. The dispatch board, in ServiceTitan or Housecall Pro, shows the hours the team worked as colored blocks, wall to wall. It never says which blocks were billed.
The P&L does not show the gap either. Money in is the hours billed and money out is the hours paid for. The gap never shows up as hours. It shows up as a smaller profit at the bottom, and nobody reads a thin profit as three unbilled hours per technician per day.
The board measures movement, and the owner expects movement to equal money. It does not.
A technician's busy day includes driving across town, waiting at the supply house for a part, diagnosing a problem the customer then declines, and going back to fix last week's job. That is the shop owner's account of how a day goes. Our research found no published split of where unbilled hours go, apart from the 1.13 hours of unrecovered driving.
The board measures movement, and the owner expects movement to equal money.
What one more billed hour a day is worth
Start with the Field Promax example in the ACHR News article. If 10 technicians each cut unbilled downtime by 30 minutes a day, that equates to $39,000 a year that goes directly to the bottom line.
The example assumes a $30 hourly rate, which is about $15 a day per technician.
Where might 30 minutes come from? Our example is fifteen minutes less standing around the shop in the morning and fifteen less in the afternoon. Over a year, at about 240 working days, that is about 120 hours per technician. The 240 days is an assumption and the 15-minute split is our example, not a finding.
Now a truck and a half. Twelve trucks each billing one more hour a day is twelve extra billed hours a day. An eight-hour day is eight hours, so twelve hours is a truck and a half of work, with no recruiting, buying, insuring or training. That is our own arithmetic, with twelve trucks as an example.
It is also why the shop probably does not need another technician. Another truck billing the same way just makes the unbilled half bigger.
The owner who went back to one truck and says he never worries about money has a point. When he is the only technician, there is no unbilled half of somebody else's day to pay for. But a twelve-truck owner who does the same throws away what he built, to hide from a number he could manage.
Another truck billing the same way just makes the unbilled half bigger.
Where we have read a business's records this way before
Before Anchorfield, our founder built the operating software for an import business with thirty locations. Every money number was in its QuickBooks file. What nobody could see was how goods moved between the locations and the customer, and the two sides did not match.
He mapped the movement and matched it back to the books and the P&L. It is the same job here: the dispatch side and the money side, next to each other.
To be plain about it, we have built ERP software for an import business, a more complex operation than a home services company, so reading a business's records end to end is not new to us. We are not claiming results from that work, and we have no audit findings to report.
A fifteen-minute check you can run tonight
Open the technician performance report in ServiceTitan, or the employee time report in Housecall Pro. For last month and for each truck, find the hours sent out and the hours billed. Divide hours billed by hours sent out. That is your shop's percentage.
Confirm the exact report names in your own account, since menus and names change.
Then open last month's P&L and find field payroll under cost of goods sold. That is what the shop paid for the hours it bought.
Here is a hypothetical, labelled as one. If a shop bought a thousand hours and billed six hundred, the leak is the four hundred hours paid for and never sold. It is not the prices and it is not the head count.
Start with callbacks. A callback is a return visit to fix work the shop already did, and it takes a truck and a technician's hours without producing a new invoice. We have no published split of how much of the gap callbacks account for, so look at your own count by truck. Our guide to technician billable hours, callbacks, and field efficiency goes further into how to read it.
If your number comes back high, the usual advice is right. Say your technicians bill seven hours of every eight. That is 87 percent, and ServiceTitan's table calls 85 percent and above excellent, with net margin of 18 to 25 percent. Then charge more, and hire if the schedule is still packed. Our view is that most shops that run this check will not come back that high. That is our view, not a finding.
Key Takeaways
A busy board and a thin P&L are one number read from two screens: the hours you pay for against the hours you bill.
In the Field Promax report, the average technician is paid for 8.8 hours a day and bills 5.7, about 65 percent.
A price rise lifts only the billed hours, and another truck adds another half-billed day.
ServiceTitan's table puts 65 percent billed at a net margin of roughly 3 to 12 percent, and 85 percent or more at 18 to 25 percent.
The check takes fifteen minutes with two reports you already have. If the number comes back high, the usual advice is right.
A free report, if you would rather not run the check yourself
If you would rather not run this check yourself, Anchorfield offers a free report, the GAP Integrity Report. It reads your company's public reviews and website for possible gaps, puts a dollar figure on a gap where there is a basis to estimate one, and gives you checks to run and a 90-day plan your team can work on together. It is for HVAC, plumbing and electrical owners doing $2 million a year or more in sales.
Anchorfield's audit is a read of a company's own records. No audit has been delivered to a home services company yet, so this article makes no claim about what audits find.
Before you touch a price or hire anyone, ask for a diagnosis before a pitch: a sales pitch is not a diagnosis. That page explains what the free report looks at and lets you check whether you qualify.
What it costs if the audit finds nothing
The revenue audit is meant to find where money can be recovered into your P&L, and to say how much, in dollars. If it finds nothing, you do not pay for it. That is our offer, and it is not a promise about what any audit will find.
You already know something is wrong.
Ninety seconds will tell you how big it usually is.



