HVAC Job Costing in 2026: The Real Math Behind Profit Per Job
HVAC job costing tracks five cost buckets per job: labor hours by tech at loaded wage, materials at cost, equipment at cost, allocated overhead per billable hour, and indirect time (drive, shop, callbacks). The standard 2026 method calculates a burdened labor rate of $55-$95/hour on top of base wage, then applies it to actual hours worked. Healthy gross margin targets: tune-ups 65-75%, repairs 50-60%, retrofits 35-45%, installs 28-35%. ServiceTitan, FieldEdge, Knowify, and QuickBooks Online Plus with Projects are the platforms that handle this correctly.
Key Takeaways
- An estimated 70-80% of HVAC shops under $3M revenue have no real job costing — they track revenue and total expenses but cannot tell which jobs made money
- Properly allocated overhead in a 5-truck residential shop runs $55-$95 per billable tech hour on top of the wage — most owners load only $15-$25
- Healthy 2026 HVAC gross margin targets by job type: tune-ups 65-75%, repairs 50-60%, retrofits 35-45%, full system installs 28-35%, new construction 18-25%
- ServiceTitan, FieldEdge, and Knowify run $200-$500/tech/month with real job costing — Housecall Pro and Jobber land at $99-$300/user/month with lighter cost tracking
- Drive time, shop time, callbacks, and warranty work account for 18-32% of a tech's paid hours and almost never get billed back to the originating job
An estimated 70-80% of HVAC shops doing under $3M in revenue have no real job costing. They watch their bank account, they track total revenue and total expenses, and they assume the install jobs are the profit drivers. Many of them are wrong about which jobs are paying the bills.
Job costing is the difference between running an HVAC shop on instinct and running it on numbers. Done right, it tells you which job types print money, which techs are profitable, and which “winning” installs are quietly bleeding the business. Done wrong (or not at all) you ship the same losing job 200 times a year and never know.
This is the 2026 breakdown of what real HVAC job costing tracks, how to allocate overhead the way the big-shop CFOs do it, and the gross margin targets that actually protect the business.
Why most HVAC shops don’t have real job costing
The reason is mechanical, not philosophical. Most shops grow from one truck to five trucks running on QuickBooks Online Simple Start or Essentials, which don’t include the Projects module needed for job costing. The field service tool (Housecall Pro, ServiceTitan, FieldEdge) tracks revenue and invoiced materials per job, but the accounting side never absorbs that data into a true profit-and-loss per job.
The result: the owner can pull a report showing the install last Tuesday brought in $11,400. They cannot pull a report showing it cost $8,700 to deliver and netted $400 after overhead instead of the $2,400 they assumed.
A Reddit r/HVAC thread from a Charlotte shop owner doing $2.3M: he switched from “we make 25% on installs, we know it” to actual job costing in 2025 and discovered his average residential changeout was netting 11%, not 25%. The miss came from drive time he wasn’t loading into the labor rate, equipment markup that had compressed as supplier prices rose faster than his quoted price, and warranty callbacks running 14% of installs (industry average is 6-8%). He raised prices 8%, tightened install scopes, and the same revenue posted 40% more net profit the next year.
That gap — between assumed margin and actual margin — is what job costing closes.
The five cost buckets every HVAC job needs to track
Real HVAC job costing tracks five separate cost buckets per job:
1. Direct labor. Hours by tech multiplied by loaded wage, not base wage. Loaded wage is base pay plus payroll taxes (7.65% FICA, state unemployment, federal unemployment), workers’ comp insurance (HVAC is class code 5538 in most states, running 4-8% of payroll), health benefits, paid time off accrual, and retirement match. A tech at $32/hour base typically costs $44-$52/hour loaded.
2. Materials. Filters, capacitors, contactors, line set, fittings, refrigerant by weight, electrical components, drywall patches, anything consumed on the job. At cost, not at retail.
3. Equipment. The condenser, air handler, furnace, heat pump, ductwork, thermostat. At landed cost (invoice price plus freight plus any pickup labor), not at quoted price.
4. Allocated overhead. The shop’s annual fixed costs (rent, office salaries, insurance, vehicles, marketing, software, depreciation) divided by total billable tech hours, expressed as $/hour and applied to every job. This is the bucket most shops skip entirely.
5. Indirect time. Drive time, shop time (loading the truck, parts pickup), callback time, and warranty work. FieldEdge’s 2026 contractor benchmarking data shows indirect time runs 18-32% of a tech’s paid hours and almost never gets billed back to the originating job. If you don’t bury it into the burdened labor rate, it disappears into “general overhead” and the install jobs look more profitable than they are.
Miss any one of these and the job profit number is fiction.
The overhead-per-job allocation method that works
The standard 2026 method for allocating HVAC overhead per job:
Step 1: Sum annual overhead
Rent + utilities $36,000
Office staff + payroll taxes $95,000
General + workers comp insurance $42,000
Vehicles (lease + fuel + maint) $58,000
Marketing (Google Ads, SEO, branding) $48,000
Software (FSM, QB, payroll, dispatch) $24,000
Depreciation + financing $18,000
Misc (uniforms, training, tools) $14,000
TOTAL $335,000
Step 2: Calculate total annual billable tech hours
5 techs x 2,080 hours x 65% billable = 6,760 hours
Step 3: Divide
$335,000 / 6,760 = $49.55 per billable hour
Step 4: Add to loaded labor rate
Tech loaded wage $48/hr + overhead $50/hr = $98/hour fully burdened cost
That fully burdened rate is what the job needs to cover before the shop makes a dollar of net profit. Most shops set their internal cost at the $48/hour loaded wage and call it good, which is why their margin assumptions are wrong by exactly the overhead bucket.
For a 5-truck residential shop, fully burdened cost typically lands at $90-$140/hour per tech. ServiceTitan’s contractor playbook on labor burden shows that shops who price off the fully burdened number instead of the loaded wage number post net margins 8-15 points higher.
The billable percentage matters. A tech who is “on the clock” 2,080 hours a year is not billable 2,080 hours. Drive, shop time, callbacks, training, sick days, vacation, and warranty work drop billable to 60-70% for most residential shops. If you assume 100% billable in your overhead allocation math, your $/hour overhead number will be roughly 30-40% too low.
Gross margin targets by HVAC job type in 2026
What healthy 2026 HVAC gross margins look like by job category:
| Job type | Healthy gross margin | Why |
|---|---|---|
| Maintenance tune-up | 65-75% | High labor utilization, minimal parts, no equipment cost |
| Diagnostic call | 60-70% | Fixed dispatch fee against 30-90 min labor |
| Capacitor / motor / minor repair | 55-65% | Marked-up parts plus efficient labor |
| Major component repair (compressor, heat exchanger) | 45-55% | Higher parts cost compresses the margin |
| Retrofit / partial replacement | 35-45% | Equipment line is heavy, install labor variable |
| Full system install (residential changeout) | 28-35% | Equipment dominates, install labor is variable |
| New construction install | 18-25% | Competitive bidding, GC pressure on price |
| Commercial PM contract | 50-60% | Recurring labor against scoped work |
Blended across a healthy residential shop’s mix, gross margin lands at 42-52% and net margin (after fully allocated overhead) at 10-20%. If your installs are coming in under 25% gross margin you are almost certainly losing money on them once warranty and callback costs land — see the HVAC pricing guide for the markup math that protects that floor.
A r/sweatystartup post from a Phoenix shop doing $4.2M put it this way: “Our maintenance plans subsidize our installs. Without the 70% margin on tune-ups absorbing some of the overhead, our 28% install margins would not be enough.”
The top HVAC job costing software in 2026
The honest ranking by shop size and use case.
ServiceTitan ($250-$500/tech/month). The most complete HVAC job costing tooling on the market. Loaded wage by tech, fully burdened overhead by category, real-time profit margin per job, install department vs service department P&L. Worth the price above $1.5M revenue, overkill below it. The setup takes 60-120 days with their onboarding team.
FieldEdge ($200-$400/tech/month). The most cost-conscious enterprise competitor to ServiceTitan. Real job costing with tech-level labor allocation, materials tracking, and QB sync. Lighter on the install workflow than ServiceTitan but cleaner on service work. Strong fit for $1M-$3M shops.
Knowify ($150-$300/user/month). Built for commercial and new construction trades — the only platform on the list with serious change order, retention, and AIA billing tooling. The right answer if 30%+ of your revenue is commercial or new construction. Lighter on residential service dispatch than the others.
Housecall Pro ($99-$300/user/month). Real job costing in the higher tiers, light in the entry tier. The right answer for $500K-$1.5M residential shops who want costed jobs without the per-tech enterprise price. The full field service software for QuickBooks comparison covers the QB sync details.
Jobber ($99-$249/user/month). Job costing is functional but not the strongest part of the product. Better for scheduling and CRM than for true install-level profitability tracking.
Aspire (custom pricing, typically $5K-$15K/year). Landscaping-first platform but a growing minority of HVAC commercial shops use it for the strong contract billing and route optimization. Niche play.
For shops below $500K, QuickBooks Online Plus at $99/month with the Projects module turned on is the floor. It will not handle dispatching, but it will hold job-level profitability if the field service tool pushes costed line items into Projects correctly.
The QuickBooks setup that actually works for HVAC job costing
The QBO Projects setup that holds for 2026 HVAC:
- Turn on Projects in QBO Plus or Advanced (Settings → Advanced → Projects).
- Build the item list with categories that map to your cost buckets: Labor (with sub-items per pay grade), Materials, Equipment, Subcontractor, Permits, Disposal, Warranty Reserve, Financing Fee.
- Set up class tracking with at least four classes: Residential Service, Residential Install, Commercial, Maintenance Plans. This lets you pull P&L by class to see which division is carrying the shop.
- Establish the burdened labor rate per tech as a payroll item or service item. Document the math in a memo so the next bookkeeper or CPA can verify it.
- Document the overhead allocation formula as a memo on the chart of accounts. Refresh it annually.
- Sync the field service tool to QB after the chart of accounts and item list are in place. Doing it in the other order creates duplicate items and ghost customers — see the field service software for QuickBooks comparison for the platforms that sync cleanly.
BDR’s HVAC QuickBooks setup guide walks through the same pattern in more detail. Budget 10-25 hours of CPA or controller time to do it right; most shops recover the setup cost in deduction recovery and pricing corrections inside 90 days.
The job costing mistakes that quietly burn HVAC margin
The recurring mistakes from shops that “have job costing” but still miss margin:
Forgetting drive time. A 90-minute job at $185 sounds profitable until you load the 45-minute round-trip drive. Now you have 2.25 hours of paid tech time against the $185, and the margin halved. Burden the labor rate to absorb drive time or track it as a separate line on every job.
Missing small parts. A capacitor swap that “only needed a capacitor” actually consumed a contactor, two wire nuts, a fuse, and a quart of leak sealant. None got logged. Across 1,200 service calls a year that’s $8,000-$15,000 in unrecovered parts cost.
Equipment cost drift between quote and install. Quoted in March at $4,200 supplier cost, installed in July at $4,650 because the supplier raised prices and nobody repriced the deal. The 10% supplier increase ate the entire margin on that job. Lock equipment cost on quote date or build in a 60-day expiration.
Warranty callbacks unallocated. A 30-day callback on an install is labor and parts spent against a job whose revenue already closed. If the callback time doesn’t get tagged to the original job, that install’s “profit” is overstated and the technician who installed it doesn’t get the feedback loop to improve.
Sales commissions missed. Most shops pay 5-10% commission on installs. If commission isn’t in the job cost bucket, the gross margin number is wrong by exactly that amount.
Office overhead missed entirely. The CSR, the dispatcher, and the office manager are not “general overhead” — their time supports specific jobs. Either burden the labor rate to absorb their cost or allocate it monthly by revenue share.
For the broader business plan view of how job costing connects to growth, the HVAC business plan guide covers how the numbers stack from job-level profitability up to enterprise value.
The honest take
Most HVAC shops don’t need fancier software. They need to turn on Projects in QuickBooks, run the overhead allocation math once a year, and load every job with the fully burdened labor rate instead of the base wage. That alone closes 80% of the visibility gap.
The shops compounding at 25%+ annual growth in 2026 share three habits: they cost every job within 7 days of completion, they review job profitability by tech monthly, and they refuse to take on job types where the trailing 90-day gross margin sits under target. Everyone else is running on assumed margins that quietly drift while supplier costs, wages, and warranty rates change underneath them.
If you only do one thing this quarter: calculate your fully burdened labor rate per tech and compare it to what your pricing assumes. Most shops find a $15-$40/hour gap. Closing that gap is worth more than any software switch, marketing campaign, or hiring round — see dispatch software for how to wring more billable hours out of the same crew once the cost math is right.
For HVAC shops specifically, the for/hvac vertical page covers how PipelineOn tracks revenue from lead source through to job-level profit so the marketing spend can be allocated against the jobs that actually paid for it.
Written by
Pipeline Research Team