
photo credit: RDNE Stock Project / Pexels
Key Takeaways
- Company-level financial reports often hide the true sources of margin erosion in HVAC businesses.
- Job costing provides critical visibility into profitability by tracking labor, overhead, and service mix at the individual job level.
- Many contractors underestimate fully-loaded labor costs by ignoring drive time, callbacks, overtime, and technician overhead.
- Service-heavy operations can quietly compress margins even while revenue continues to grow.
- Better reporting allows HVAC operators to make pricing, scheduling, and dispatch decisions based on real profitability data rather than assumptions.
Here is a scenario that plays out more often than most contractors want to admit.
An HVAC business owner closes out a strong quarter. Revenue is up 18%. The team is busy. Trucks are rolling. The bank account looks healthy. And then the accountant sends over the P&L, and net margin is sitting at 4.2%.
Something is wrong. But the report doesn’t tell you what.
This is the core problem with standard financial reporting for HVAC contractors: it tells you what happened at the company level, but it tells you almost nothing about why. And in a business where individual jobs, technicians, and service types can vary quite widely in profitability, company-level reporting is not just incomplete; it is actively misleading.
The Gap Between Revenue and Reality
Most HVAC contractors run their financial lives off three numbers: revenue, payroll, and cash in the bank. These numbers feel like control, but honestly, they are not nearly enough to form a picture of the performance of the business.
Consider two HVAC contractors, both doing $1.5M in annual revenue. Contractor A runs a high-volume service call operation with 12 techs and fast ticket turnover. Contractor B runs a smaller install-heavy operation with 6 techs and longer average jobs. On paper, they look identical. In reality, Contractor B is likely running 12 to 15 percent net margins while Contractor A is grinding at 4 to 6 percent, working twice as hard for half the return.
The difference is not effort. It is job mix. And you cannot see job mix on a standard P&L.
In industries where the top quartile of contractors operates at 15-20% net margin and the median operator barely clears 5%, according to ACCA benchmarking data, job costing is the single most important analytical capability a contractor can build. According to SCORE, 82% of small businesses that fail, do so because of cash flow problems, not because of weak demand or poor products. For HVAC operators, the margin erosion is almost always happening at the job level, invisible to owners who are only looking at monthly financials.
Where the Margin Is Actually Going
In our work advising HVAC and home services contractors, the margin leaks cluster in three places.
Labor cost miscalculation. Most contractors track hourly wages. Very few track fully-loaded labor cost per job, which includes drive time, callbacks, overtime, and the overhead burden each technician carries. A technician billing 5 hours on a job that required 2 hours of drive time and a 45-minute callback is not generating the margin the invoice suggests. The real cost per productive hour is often 30 to 40 percent higher than owners estimate.
Service mix drift. Over time, most HVAC businesses drift toward lower-margin work without realizing it. Service calls are easier to schedule and faster to close than system replacements. But they also carry lower margins and higher overhead per dollar of revenue. When the business adds new technicians, the new tech’s calendars are almost always filled with service volume rather than install volume, and margins quietly compress. The P&L shows growing revenue. The bank account tells a different story.
Overhead allocation errors. When overhead is spread evenly across all jobs rather than allocated based on actual time and resource consumption, high-volume low-margin jobs appear more profitable than they are and high-ticket jobs appear less profitable. Pricing decisions made on this data are systematically wrong.
Finding the Leaks Without New Software
The good news is that most HVAC contractors already have the data they need to fix this. It is sitting in their field service management software, their payroll system, and their accounting platform. The problem is not data access. It is data assembly.
Here is a practical starting framework any operator can build using systems they already have.
Step 1: Pull job-level revenue and direct cost. From your FSM platform (ServiceTitan, Jobber, Housecall Pro), export completed jobs for the last 90 days with revenue, parts cost, and technician hours logged. This is your raw material.
Step 2: Add fully-loaded labor cost. From payroll, calculate your true cost per technician hour including burden (taxes, benefits, workers comp). Multiply by hours logged per job. Replace the labor cost per job with this number.
Step 3: Allocate overhead by job hour. Take your monthly fixed overhead (rent, insurance, vehicle costs, admin) and divide by total billable hours. Apply that rate to each job. Now you have a real job-level profit figure.
Step 4: Sort and segment. Group jobs by type (service call, maintenance, replacement, new install) and by technician. Calculate average margin per group. The pattern will be immediately visible.
What you will find almost every time: two or three job types or technicians are carrying the business, and several categories are consuming resources while generating little or no real margin.
For a pre-built spreadsheet that does this calculation automatically, the free HVAC Job Costing Template at Oryx Horn walks through the full framework with worked examples and 2026 benchmark data.
The One Decision That Changes Everything
Once you can see margin at the job level, one decision becomes available that was not before: you can stop pricing and scheduling based on gut feel and start doing it based on data.
For most HVAC operators, this means two things in practice. First, raising prices on service call volume that is running below 15 percent gross margin, or deliberately reducing that volume in favor of higher-margin install work. Second, identifying which technicians are generating the highest margin per hour and building dispatch logic around their strengths.
Neither of these changes requires new software, a financial analyst, or a restructuring of the business. They require a reporting framework that shows you what is actually happening at the job level rather than what the company-level P&L implies.
The business does not change until the visibility does.
FAQs
Why can standard financial reports be misleading for HVAC contractors?
Traditional P&L statements show overall company performance but rarely reveal which specific jobs, services, or technicians generate or erode profit. This can hide operational inefficiencies and margin leaks.
What is job costing in the HVAC industry?
Job costing is the process of tracking revenue and expenses at the individual job level, including labor, materials, and overhead. It helps contractors identify which types of work are truly profitable.
What are common causes of margin erosion in HVAC businesses?
Common causes include underestimating labor costs, taking on too much low-margin service work, and incorrectly allocating overhead across jobs. These issues often remain hidden in company-wide reporting.
How can contractors calculate fully-loaded labor costs?
Fully-loaded labor cost includes wages plus payroll taxes, benefits, workers’ compensation, overtime, callbacks, and non-billable time such as travel. This provides a more accurate picture of job profitability.
Do HVAC contractors need new software to improve reporting?
No. Most contractors already have the necessary data within their field service management software, payroll systems, and accounting platforms. The key challenge is organizing and analyzing the data effectively.

