Serving Trades Contractors Nationwide  ·  Based in Baton Rouge, LA
(225) 274-6576 info@911bookkeepers.com Free Consultation →
JOB COSTINGOctober 10, 2026
JOB COSTING

HVAC Job Costing: A Complete Guide for Contractors

911 BOOKKEEPERS
BUILT FOR THE TRADES

Your bank account looks healthy. Your calendar is packed. You just closed three big installs this month. So why does it feel like you're barely keeping up?

For most HVAC contractors, the answer lives in the numbers they aren't tracking. Revenue is not profit, and in this industry the gap between the two can quietly swallow a business. Dispatch inefficiency, callbacks, and uncosted travel time drain margin before you ever see it. Meanwhile, most shops use their field service software only for scheduling and invoicing, blind to what each job actually costs to complete.

This guide is for contractors who know the basics and want to run a tighter operation. You'll learn the four cost categories that matter most, where field costing usually breaks down, how to set up Xero for job-level reporting, and what separates the most profitable shops from competitors doing twice the revenue with half the profit.

Why Revenue Lies to HVAC Contractors

Revenue is a vanity metric. For HVAC contractors, it can actively mislead.

A contractor running $2M in annual revenue can be worse off than a competitor doing $900K. If the larger shop's work skews toward callbacks, warranty labor, and discounted maintenance visits, the margin on each dollar is thin enough that more volume produces less profit. The gap between average and top-performing shops isn't explained by who bills more. It's explained by who knows what each job actually costs.

Bank balances compound the illusion. In HVAC, your checking account balance is an unreliable profit signal. It includes customer deposits for equipment not yet ordered, sales tax owed next quarter, and payments for jobs where materials are still in transit. None of those dollars are really the business's to spend. Making decisions off a balance that includes earmarked money is one of the fastest ways an HVAC operation bleeds cash without understanding why.

Overhead makes the problem structural. Most contractors calculate job profit as revenue minus parts and labor. That leaves out truck payments, fuel, insurance, dispatch wages, and marketing. Those costs don't disappear when a job closes. They pile up in the background, turning what looks like a 30% gross margin on a service call into a net margin well below 10% once fixed costs are allocated. Contractors who never assign overhead to jobs routinely overestimate their margins by several points.

Decisions made on feel scale badly. An owner who checks the bank account to decide whether last month was good is making pricing, hiring, and equipment decisions without knowing which service lines are profitable. A flat-rate price that made sense three years ago may now lose money on every dispatch once a technician's fully burdened labor cost, the callback rate for that job type, and vehicle costs are factored in.

The Four Cost Categories Every HVAC Shop Must Track

Most HVAC shops track two things: parts and labor. An accurate picture takes four.

1. Direct materials. Parts, refrigerant, equipment, and consumables bought for a specific job. Every dollar of material should be tied to a job record when it's purchased, not reconciled at month-end from a pile of invoices.

2. Direct labor. Technician wages plus labor burden (payroll taxes, workers' comp, and benefits) for hours actually spent on a job. The piece most shops miss is drive time. A tech who drives 45 minutes each way generates real wage cost before touching a tool, and that cost belongs on the job. Uncosted drive time is one of the most common margin leaks in HVAC.

3. Job-specific overhead. Costs that trace to a job type but get buried in general overhead. Callbacks carry real labor and fuel cost. Warranty labor is performed at zero revenue. Permit and inspection fees belong to the job that needed them, not a general expense bucket.

4. Allocated company overhead. Fixed operating costs need a systematic share applied to each job: vehicle payments, fuel, insurance, dispatch staff, shop rent, tools, and marketing. A common, defensible method is dividing total monthly fixed costs by total billable hours to get a per-hour overhead rate, then applying it to every job.

The pricing problem this creates. Contractors who calculate profit using only the first two categories overstate margin on every job. A job that clears $400 after parts and labor may net zero or less once callbacks, warranty exposure, and overhead are applied. At scale, pricing built on that incomplete math can't sustain the business.

Where Job Costing Breaks Down in the Field

Knowing the four categories is the foundation. The harder problem is that daily operations create five situations where costs slip through without ever being recorded.

Dispatch gaps are the most invisible. Time between jobs, including drive time after one job closes and before the next opens, is rarely assigned anywhere. It still consumes wages and vehicle costs, but with no job open to absorb it, it vanishes into general overhead. Every completed job looks slightly more profitable than it was.

Uncosted callbacks quietly destroy margin. When a tech returns to fix a prior job at no charge, the labor and drive time rarely get charged back to the original job. Most shops absorb it into overhead, which spreads the loss across every job instead of flagging the job, tech, or failure type that caused it. A job that invoiced at 40% gross margin may really have closed at 22% once the callback is counted.

Maintenance agreement timing distorts the whole picture. A contractor who books a $600 annual agreement as revenue the day it's signed is reporting October income for work that happens in November and April. Revenue should be recognized as the service is delivered, spread across the agreement period. Booking it early overstates profit in signing months and understates it in service months.

Seasonal swings distort monthly results. HVAC revenue concentrates in peak heating and cooling seasons. Peak months look flush and slow months look catastrophic, even when the annual margin is fine. Owners reading monthly bank balances instead of job-level margin reports make spending and hiring decisions against a distorted signal.

Field service platforms collect the data but rarely report it. ServiceTitan and Housecall Pro capture labor hours, material costs, job duration, and technician on every work order. The data for accurate job costing already exists. Most contractors just never set up the reporting that turns those records into margin information. The gap isn't data. It's configuration.

Setting Up Job Costing in Xero for HVAC Contractors

Chart of accounts structure

Separate revenue by service line: maintenance, repair, replacement, and new construction each get their own income account. Cost accounts follow the same four-category structure. When revenue and cost accounts line up, Xero produces readable service-line reports without manual reclassification at month-end.

Tracking categories

Xero's tracking categories are labels attached to transactions, including invoices, bills, and payroll journals. Xero allows two active categories with a limited number of options each, so use them for dimensions that stay manageable: one for job type (maintenance, repair, replacement) and one for technician or crew. Individual job-level detail is best kept in your field service platform, which is built to handle thousands of work orders.

ServiceTitan to Xero workflow

ServiceTitan's native Xero integration is in limited release, and many shops use a third-party connector instead. Either way, completed work reaches Xero as revenue and receivables, not full job cost detail. The critical maintenance step is a regular field mapping review. Cost codes drift when new service types or price book items get added, and unmapped codes post to a catch-all account that ruins your reports. Review the mappings before each seasonal peak.

Housecall Pro to Xero workflow

Housecall Pro has no native Xero integration (its built-in sync is QuickBooks only), so Xero users connect it through a third-party tool. Even with invoices and payments flowing that way, overhead allocation isn't included. Fixed costs like vehicle payments, insurance, and dispatch labor won't reach job-level reports unless your bookkeeper builds a recurring monthly journal entry that allocates them on a consistent basis, usually billable hours or revenue.

Job profitability dashboard minimums

A useful HVAC job costing dashboard should show, at minimum:

Maintenance Agreement Revenue Recognition Done Right

Maintenance agreements are often the highest-margin work an HVAC shop sells, but that margin only shows up in your financials if revenue is recognized at the right time. A customer who pays $600 for an annual agreement in October hasn't given you $600 of earned October revenue if the fall tune-up lands in November and the spring check-up lands in April. Under ASC 606, revenue is earned as the promised services are delivered, not when cash changes hands.

The correct treatment: deferred revenue

When an agreement payment comes in, the full amount goes on the balance sheet as a liability, not on the income statement as revenue:

Whether you recognize monthly or per visit depends on how your agreements are structured. Either method works if you apply it consistently.

Why getting this wrong is costly

Skipping deferral makes signing months look exceptionally profitable, which can trigger premature spending on equipment, bonuses, or marketing, while the service months absorb costs against little recognized revenue. The distortion grows with every agreement you sell.

In Xero, the fix is a dedicated liability account for deferred maintenance revenue and a templated monthly journal entry that moves the earned portion into revenue. Your bookkeeper should build it once and run it every month.

Metrics that drive agreement profitability

Together, these tell you whether to raise agreement pricing, change visit frequency, or push harder on selling agreements to repair customers.

Technician Profitability: The Metric Most Shops Ignore

Maintenance agreements tell you which service lines are profitable. Technician profitability tells you which people are, and most shops never look.

Revenue per technician hour is the starting point. Divide a tech's invoiced revenue for a period by their billable hours. A tech invoicing $18,000 in a month across 120 billable hours produces $150 an hour. That number means nothing until you build the cost side.

Cost per technician hour goes well beyond wages. It includes payroll burden (FICA, unemployment taxes, benefits, and workers' comp), a share of their truck's costs (payment or depreciation, fuel, insurance, maintenance), and a share of dispatch and back-office overhead.

True technician margin is the gap between those two numbers, and the spread across a team is often surprising. The highest-revenue tech on paper isn't always the most profitable once callbacks, parts waste, and vehicle costs are counted. A tech who closes big replacement jobs but gets called back on a meaningful share of them is generating rework labor and truck costs that never appear on their invoices.

Technician-level reporting needs setup before the data comes in. Either connect time tracking so hours flow into your books tagged by technician, or require consistent technician coding on every job. Both work. Neither works retroactively, because history without technician attribution can't be rebuilt later.

What the Most Profitable HVAC Contractors Do Differently

Operating discipline, not volume, drives the performance gap.

Monthly margin reviews drive decisions. Top performers don't wait for year-end financials. They review job-level margins at least monthly and act on them: shifting stronger techs toward higher-margin work, tightening flat-rate pricing on jobs that keep running over, and repricing service lines that look busy but underperform.

Overhead allocation is a system, not an estimate. Fixed costs are totaled each month, divided by billable hours or revenue, and applied to every job. That one discipline closes the loophole where every job looks profitable while the business runs at a loss.

Predictable revenue buffers the seasons. Maintenance agreement revenue provides a recurring base that bridges slow periods. Paired with a rolling 13-week cash flow forecast, it flags shortfalls weeks before they become emergencies.

When to Hire a Specialist HVAC Bookkeeper

Your current setup is probably costing you margin if:

Generalist bookkeepers record transactions accurately, and that's a real skill, but it isn't enough here. They usually lack the HVAC knowledge to set up job costing, allocate overhead across service lines, or notice that a rising callback rate is eroding margin on work that looks profitable.

A qualified HVAC bookkeeper should arrive with a trades-specific chart of accounts, working knowledge of ServiceTitan and Housecall Pro integrations, and dashboard reports built around job profitability. If they're asking you to explain deferred revenue for maintenance agreements, that's a gap you'll pay for in misreported margins.

The payoff is clearest for shops in roughly the $1M to $10M range, where even a few points of net margin from better overhead allocation and job mix decisions adds up to real money: more profit from the same revenue and the same jobs.

911 Bookkeepers works with HVAC, plumbing, electrical, and construction contractors on Xero job costing setup, ServiceTitan and Housecall Pro integration, maintenance agreement revenue recognition, and monthly dashboards that show margin by job type, technician, and service line.

Start Seeing What Your Jobs Actually Cost

Job costing isn't paperwork you do after the real work is finished. It's how you learn which jobs are building your business and which are draining it. The tools are already in most HVAC shops: your field service platform collects labor, materials, and job duration, and your accounting system can segment costs by job type. The gap is setup and discipline.

Three moves that help immediately:

Margin isn't found by doing more revenue. It's found by seeing clearly what each job actually costs.

Related reading

Jeremy Brewer is the founder of 911 Bookkeepers LLC in Baton Rouge, Louisiana. He worked in the field as an HVAC tech before building books for the trades, and he serves as a licensed paramedic in EMS. He is a Xero Certified Advisor.

Your books shouldn’t be a 911 situation.

Book a free 30-minute financial checkup and find out exactly where your business stands.

Book Your Free Checkup Call (225) 274-6576

← Back to all posts