Start Free Trial
HVAC contractor reviewing job costs and profitability

Software Buying

How HVAC Companies Quietly Lose Money on Jobs: A Practical Guide to HVAC Job Costing

Your P&L says the year was “fine.” Payroll cleared. The trucks are on the road. But the checking account feels thin—and you cannot point to which jobs actually paid for the shop.

That gap is what HVAC job costing fixes. Not someday when you hire a CFO. This quarter, with the jobs you already run.

Job costing tracks revenue minus true cost for a specific job—labor (fully loaded), materials, equipment, subcontractors, and a fair share of overhead—so you can see whether yesterday’s capacitor call, today’s furnace install, and tomorrow’s maintenance tune-up each contributed profit or quietly subsidized the rest of the week.

This guide is for small HVAC business owners, office managers, and lead technicians who set prices without a full finance team. You will learn what to measure, how to calculate a defensible labor rate, where margin usually leaks, how to review jobs weekly, and how connected estimate, invoicing, and reporting tools support the habit—not replace your judgment.

If quote amounts, hours, and invoices live in different places today, see how ServLoom connects HVAC estimates to completed jobs and billing—so costing reviews start with complete records, not detective work.

What HVAC Job Costing Actually Means (and What It Is Not)

Job costing answers one question: *Did this job make money after all real costs?*

It is not the same as:

Concept What it tells you What it misses
Bank balance Cash on hand today Which jobs earned it
Monthly P&L Company-wide summary Loser jobs hidden inside winners
Revenue per truck Activity level Profitability per hour
Gross invoice total What you charged What you spent to deliver

For HVAC contractors, job costing usually groups expenses into five buckets:

  1. Direct labor — technician time on the job, at a *loaded* rate (not base wage).
  2. Materials & parts — capacitors, contactors, refrigerant, line sets, consumables at your cost.
  3. Equipment — major units you buy and resell (furnace, coil, condenser) at cost.
  4. Subcontractors — crane, electrical, duct sub, permit expeditors billed to the job.
  5. Allocated overhead — shop rent, insurance, office wages, software, marketing, vehicles—spread across billable hours.

Add indirect time—drive time, warehouse, callbacks, warranty return visits. If you do not capture it on the job, bury it in your loaded labor rate or overhead allocation. Otherwise install jobs look artificially healthy while service calls bleed.

Featured-snippet summary: HVAC job costing is the practice of tracking all direct and allocated costs per job—loaded labor, parts, equipment, subs, and overhead—then comparing that total to invoice revenue to calculate true gross profit and margin by job type, technician, or customer.

Why Small HVAC Shops Feel Busy but Broke

1. Pricing labor at base wage instead of loaded cost

The Bureau of Labor Statistics reported a median wage of $59,810 per year ($28.75/hour) in May 2024 for heating, air conditioning, and refrigeration mechanics and installers nationwide. That is what workers earn—not what they cost you.

Employer payroll taxes, workers’ compensation, health benefits, retirement contributions, paid time off, uniforms, and training push loaded cost well above base wage. If your flat-rate book assumes $25/hour internal labor when true cost is $45+/hour, every “profitable” repair subsidizes the difference.

2. Using 2,080 billable hours per tech

A full-time year has roughly 2,080 work hours (40 × 52). Technicians are not billing customers 40 hours a week. Subtract:

  • Paid vacation and holidays
  • Training and safety meetings
  • Shop time and inventory loading
  • Drive time between calls
  • Callbacks and warranty trips
  • Slow days when the board is light

Many small shops land near 1,400–1,600 billable hours per technician per year once they measure honestly. Dividing annual overhead by 2,080 instead of 1,500 understates overhead per hour and underprices every job.

3. Parts markup that does not cover shrinkage

Truck stock disappears. Warranty parts get replaced at no charge. Small fittings and brazing alloy rarely hit the invoice line by line. A flat “2× cost” rule on a $12 part may work; on a $1,200 condenser it may not—tiered markup tables exist because margin targets differ by price band.

4. Callbacks treated as “customer service,” not cost

A free return visit uses the same truck, labor, and opportunity cost as a paid job. If callbacks run 8–15% of service calls and you never tag them to the originating job, your repair margin looks better than reality.

5. Install jobs cross-subsidizing service

Install crews often have longer hours, helper labor, permit fees, and lift rentals. If you price installs to “match the competitor down the street” without costing helpers and drive, service revenue props up install losses—or vice versa.

6. Maintenance plans priced for acquisition, not delivery

ENERGY STAR emphasizes that proper HVAC maintenance supports efficient, reliable operation—customers expect thorough tune-ups. If your membership price covers a 20-minute visit when the checklist requires 45 minutes plus consumables, plan members become your least profitable segment while looking like “recurring revenue wins.”

7. No connection between estimate, field hours, and invoice

When the sold price lives in email, actual hours on a timesheet, and parts on a distributor portal, month-end reconciliation is guesswork. Job costing fails at the data handoff, not the math.

The HVAC Job Costing Formula (Step by Step)

Step 1: Calculate loaded labor cost per hour

For each technician (or role):

Loaded hourly cost = (Annual base wages + employer taxes + benefits + workers' comp + other labor burden)
                     ÷ annual paid hours

Use your payroll reports and workers’ comp class codes—not guesses. The IRS Employment Taxes guide outlines employer FICA and unemployment obligations that belong in burden.

Example (illustrative only):

Tech A: $62,000 wages + $14,000 burden = $76,000 ÷ 2,080 paid hours ≈ $36.54/hour loaded before overhead.

Step 2: Calculate overhead per billable hour

Overhead rate = Total annual fixed overhead ÷ total billable technician hours

Include: rent, office salaries, insurance (GL, auto, umbrella), vehicle costs, fuel, software subscriptions, marketing, accounting, tools depreciation, and owner salary if the business pays it separately from distributions.

Example (illustrative only):

$420,000 annual overhead ÷ 6,000 billable hours ≈ $70/hour overhead allocation.

Step 3: Fully burdened cost per hour

Fully burdened rate = Loaded labor rate + Overhead rate

Using the examples: $36.54 + $70 = $106.54/hour internal cost before profit.

That number is your floor for time-and-materials labor—not your customer price yet.

Step 4: Add target profit margin

For target gross margin on labor-heavy work:

Selling price per labor hour = Fully burdened rate ÷ (1 − Target gross margin)

If target gross margin is 50%: $106.54 ÷ 0.50 = $213.08/hour customer labor rate before parts markup.

Flat-rate pricing embeds this math into task prices (“replace capacitor,” “clean flame sensor”) so techs do not re-negotiate math on every call.

Step 5: Price materials with tiered markup

Part cost (your cost) Typical markup approach Why
Under $25 Higher markup % Picking, stocking, shrinkage
$25–$100 Moderate markup Common repair parts
$100–$500 Standard markup Compressors, coils
$500+ Lower % but higher $ Competitive pressure on big tickets
Refrigerant Review monthly Volatile cost

Add a warranty reserve (often 3–5% of parts revenue) inside the price so callbacks do not hit operating cash directly.

Step 6: Close the job P&L

Job gross profit = Invoice revenue
                 − (Actual labor hours × Loaded labor cost)
                 − (Overhead rate × Actual labor hours)
                 − Materials at cost
                 − Equipment at cost
                 − Subcontractor invoices
                 − Job-specific fees (permits, disposal)
Job gross margin % = Job gross profit ÷ Invoice revenue

Review by job type (diagnostic, repair, maintenance, retrofit, full install) and technician—not company average alone.

Overhead Categories: What Belongs in Your HVAC Job Costing Model

Owners often ask, “Which expenses are overhead vs. job cost?” Use this framework:

Always include in annual overhead (allocated per billable hour)

Category Examples Notes
Facilities Shop rent, utilities, internet, phone Even if you work from a home office, allocate a fair portion
Insurance GL, auto, umbrella, workers’ comp (employer portion) Rising premiums should trigger price book review
Fleet Truck payments/lease, fuel, maintenance, tires, GPS Per-truck costing helps when adding vehicles
Office labor Dispatcher, CSR, bookkeeper, owner admin time Owner-only shops: allocate % of owner hours to overhead
Marketing Google Ads, mailers, website, sponsorships Divide by jobs or revenue—pick one method and stay consistent
Software & tools FSM, accounting, email, price book apps Include field service software in burden math
Professional services CPA, legal, HR Annualize retainers
Training & safety EPA certifications, manufacturer training Required for compliance—real cost

Usually direct job costs (not spread across all hours)

Category Examples
Parts and materials used on the job Capacitors, refrigerant, line sets
Equipment sold on the job Furnace, condenser, thermostat upgrade
Permits and inspection fees tied to one address Mechanical permit for replacement
Subcontractor invoices for that job Electrical, crane, duct fabrication
Job-specific rental Lift for one install day

Gray areas—pick a rule and document it

  • Small tools and consumables (brazing rod, nitrogen, vacuum pump oil): often overhead unless you track per job.
  • Warranty parts: cost to originating job or warranty reserve pool—never ignore.
  • Sales commissions: direct cost of revenue; include in job margin for sold installs.
  • Financing merchant fees: if you absorb them, build into install pricing or track per job.

Gray areas kill consistency. Write your policy in a one-page costing handbook so the office prices and reviews jobs the same way when you are on a truck.

Measuring Billable Hours: A Field-Realistic Method

Stop debating 1,400 vs. 1,600 in the abstract. Run a two-week time study:

  1. Export completed jobs from dispatch or scheduling software.
  2. For each tech, sum on-site hours + billable drive time (if you charge trip fees, define policy).
  3. Compare paid hours from payroll for the same period.
  4. Calculate: Billable % = Billable hours ÷ Paid hours.

If billable % is 62%, your annual billable hours per tech ≈ 2,080 × 0.62 ≈ 1,290 hours—lower than many templates assume.

Improve billable % without cutting quality:

  • Cluster geography on the board (fewer 40-minute drives for 20-minute calls).
  • Stock common repair SKUs on trucks to avoid supply-house detours—ServLoom lists inventory tracking among advanced tools if you outgrow manual truck lists.
  • Standardize closeout so techs finish paperwork in the driveway, not at home at 8 p.m.
  • Use customer communication for ETAs so fewer “where is my tech?” calls pull dispatch off higher-value work.

Billable hour accuracy is the hinge of overhead allocation. Everything downstream—labor rate, flat-rate book, membership pricing—rotates on this number.

Job-Type Economics: Service, Maintenance, and Install

Different HVAC work carries different risk profiles. Your costing model should reflect that—not one blended “hourly rate.”

Service and repair

  • Revenue drivers: speed, first-call fix rate, appropriate upsell to replacement when warranted.
  • Cost drivers: diagnostic time, truck stock, callbacks, after-hours premium labor.
  • Costing focus: actual hours vs. flat-rate book time; parts used vs. parts billed; callback tagging.

Maintenance agreements

  • Revenue drivers: renewal rate, plan tier upgrades, conversion to equipment replacement.
  • Cost drivers: visit duration discipline, filter stock, seasonal surge staffing.
  • Costing focus: profit per visit × visits per year vs. membership price; see ServLoom’s recurring maintenance workflows for scheduling recurring visits without losing visit context.

Installations and replacements

  • Revenue drivers: sold hours accuracy, change-order discipline, financing attachments.
  • Cost drivers: helper labor, lift rental, permit fees, warranty registration, inspection revisits.
  • Costing focus: separate job codes; track margin before sales commissions.

Commercial vs. residential

Commercial jobs may have lower margin percentages but higher dollar volume and longer contracts. Residential often has faster decisions but more price sensitivity. Split reporting so commercial callback patterns do not hide inside residential averages.

Residential deep dive

Homeowners compare you to the last invoice they remember—not your burden spreadsheet. Residential costing priorities:

  • Diagnostic fees that filter tire-kickers without subsidizing free consulting.
  • Good/better/best repair vs. replace options on the estimate so margin is chosen consciously, not accidentally discounted.
  • Membership visit scripts that match checklist time—filter changes, coil inspection, safety tests per manufacturer guidance.
  • After-hours surcharges that reflect true overtime burden, not only “what the guy down the road charges.”

Commercial deep dive

Commercial HVAC introduces purchase orders, net-30 terms, and multiple decision-makers. Costing must include:

  • Bid labor (estimating, site walks, re-bids) amortized across won projects.
  • Compliance documentation (refrigerant logs, safety paperwork) as labor minutes.
  • Return visits for access issues (locked mechanical rooms, tenant no-shows).
  • Retainage or slow pay—margin on paper is not margin in the bank; payment status visibility matters for cash-flow costing.

A commercial job at 32% gross margin with $28,000 revenue may beat a residential repair at 58% on $320—but only if you track both on the same overhead basis.

Seasonal Demand and Job Costing Across the Year

HVAC is inherently seasonal in most U.S. markets. Peak cooling and heating weeks compress revenue into short windows; shoulder seasons thin the board. Job costing interacts with seasonality in three ways:

1. Overhead rate uses annual hours, not peak-week hours.

If you only recalculate prices in June when techs are fully booked, you forget February’s under-absorbed overhead. Build overhead from a full 12-month billable hour estimate.

2. Off-season work has hidden subsidy.

Low-margin off-season promos may be strategic for cash flow—but label them strategic. Know how much peak season must subsidize January tune-up specials.

3. Overtime and temp labor distort job margin.

Peak weeks with overtime tech pay spike loaded labor for those jobs unless you use surge pricing or cap emergency intake. Tag peak-week jobs in reports to see true cost.

ServLoom’s reporting dashboard emphasizes trend visibility and seasonal demand—useful when comparing Q2 service margin to Q4 maintenance mix.

The U.S. Department of Energy publishes homeowner guidance on heating and cooling systems; it does not set your labor rate—but it reinforces why maintenance and efficient equipment matter to customers, supporting premium pricing when you deliver thorough visits.

Refrigerant, Commodities, and Parts Volatility

Few line items move faster than refrigerant. A flat-rate task priced in March can lose margin by August if R-410A or successor refrigerant costs shift and the book is static.

Practices that protect margin:

  • Separate refrigerant line items from “included” tasks when possible.
  • Review distributor price sheets monthly for top 50 SKUs.
  • Tie major equipment quotes to supplier quote expiration dates on install jobs.
  • Train techs that unreported recovery cylinders and lost fittings are job-cost leaks, not “shop stuff.”

For truck stock, implement a minimum markup rule on anything removed from the van—even if the customer did not see a line item on a flat task, you need aggregate truck stock reconciliation monthly or gross margin lies.

Twelve Places HVAC Margin Quietly Leaks

Use this as a monthly audit—not a one-time workshop.

# Leak Signal Fix
1 Under-loaded labor rate Cash tight despite “good” close rate Recalculate burden quarterly
2 Book time ≠ field time Techs consistently exceed flat-rate hours Update price book; train diagnostics
3 Unbilled materials Truck stock always empty; invoices light on parts Require line items; cycle-count stock
4 Discount habit “Ten percent off” on every estimate Approval rules; show good/better/best
5 Free second trips Callback rate rising Tag callbacks; root-cause by tech
6 Warranty confusion Manufacturer vs. company warranty mixed Separate job types; track warranty labor
7 Helper labor invisible Install crews run pairs; costing one tech Cost all hours on the job
8 Drive time ignored First/last call of day lose money Route planning; minimum call charges
9 Membership underpriced Plan count up; profit flat Cost per visit model; tiered plans
10 Change orders unpaid Scope creep on installs Document approvals in writing
11 Financing fees ignored “Same as cash” promos Include fees in job margin review
12 Owner labor free Owner on truck nights/weekends Allocate owner hours or adjust overhead

Flat Rate vs. Time and Materials: A Costing Perspective

Time and materials (T&M) exposes customers to variable bills but gives you transparent recovery when jobs run long—*if* your hourly rate is truly burdened.

Flat rate packages labor and parts into task prices—better for homeowner trust and technician selling—*if* the book is rebuilt from loaded costs and updated when wages or refrigerant prices move.

Many HVAC shops use hybrid: flat rate for common repairs; T&M or quoted hours for custom commercial work. Job costing tells you which SKUs in the price book are losers.

Price book maintenance checklist:

  • [ ] Reload distributor costs quarterly
  • [ ] Adjust refrigerant line items monthly in volatile markets
  • [ ] Reconcile top 20 sold tasks against actual hours monthly
  • [ ] Flag tasks below margin floor for rewrite or removal
  • [ ] Document when a “loss leader” diagnostic fee is intentional

Financing, Payment Terms, and True Job Revenue

Job costing starts with recognized revenue, not the sticker price on the estimate.

Payment method Costing consideration
Card on site Merchant fees reduce net revenue—0.5–3%+ depending on card and processor
Customer financing promo Dealer fees or subsidized APR may reduce net; track on install jobs
Net-30 commercial Cost of carrying receivables; bad debt reserve
Membership prepaid annual Allocate revenue across planned visits—do not count full payment as one job’s margin
Chargebacks / disputes Tag to originating job when possible

ServLoom’s payment processing and core payments product pages focus on collecting on site and understanding payment status—useful when reconciling invoiced vs. collected during job reviews.

If your team celebrates “sold $18k install” before financing fees and helper overtime, job costing exposes the gap between sales board and deposit account.

Technician Performance: Job Costing Without a Blame Culture

Job margin by technician is sensitive. Used poorly, it becomes a punishment tool; used well, it identifies training, routing, and book-time issues.

Healthy uses:

  • Compare similar job types (capacitor calls to capacitor calls), not installs to tune-ups.
  • Pair low margin with callback rate and average book-time variance—skill vs. routing vs. price book error.
  • Celebrate techs who sell appropriate replacements with above-floor margin, not only highest revenue.

Unhealthy uses:

  • Ranking techs on company average margin without job-type normalization.
  • Punishing slow, careful diagnostics on complex commercial equipment.
  • Ignoring dispatcher assignments that send junior techs to jobs priced for senior speed.

Leadership reviews should ask: *What system change would help every tech hit margin floor?*—not only *Who missed?*

Building a Weekly Job Costing Review (45 Minutes)

You do not need perfect data on day one. You need consistent closed-job reviews.

Monday job costing meeting agenda

  1. Pull last week’s closed jobs — revenue, labor hours, parts cost (from invoices + POs).
  2. Flag jobs below margin floor — define floor by job type (you set targets; do not copy internet benchmarks blindly).
  3. Review top 3 losers — callback? underquoted? wrong tech assigned? parts missing?
  4. Review top 3 winners — replicate sales or dispatch patterns.
  5. One pricing action — adjust a price book line, add a truck fee, or fix a membership tier.
  6. One behavior action — training, checklist, or required fields on closeout.

Minimum fields to capture per job

Field Why it matters
Job type / code Compare apples to apples
Sold price vs. final invoice Catch change orders and credits
Technician hours (per tech) Loaded labor accuracy
Parts cost at receipt Markup reality
Callback? (Y/N) True service margin
Customer source Marketing ROI later

Spreadsheets work at low volume. As job count grows, disconnected systems break—quotes in one tool, hours in another, invoices in QuickBooks. That is where field service reporting and accounting-connected job records reduce manual exports.

Explore ServLoom for your HVAC business when you are ready to tie quotes and estimates to scheduled work, completed jobs, and invoices—so weekly costing reviews pull from one system instead of four exports.

From Spreadsheet to System: When Software Helps Job Costing

Job costing is a discipline. Software is the pipe that carries data.

You likely need better systems when:

  • Office spends 5+ hours/week reconciling estimates to invoices
  • Technicians re-enter customer or part details in the field
  • You cannot answer “profit on last Tuesday’s no-heat call” without four logins
  • Maintenance renewals are growing but visit margin is unknown

What to look for in HVAC business software (costing lens)

Capability Costing benefit
Estimate → job → invoice continuity Same sold price flows to billing
Line-item parts on quotes Planned vs. actual parts comparison
Labor/time on work orders Hours per job for loaded cost
Job-type reporting Margin by service / maint / install
Payment status on jobs Revenue recognition vs. cash
Recurring visit scheduling Plan economics over the year

ServLoom positions service estimate software around professional proposals, faster approvals, and quote-to-job continuity without duplicate entry. Invoicing emphasizes invoice-ready job data from completed work. Reporting and the reporting dashboard highlight revenue, utilization, team productivity, and seasonal trends—inputs leadership needs for costing reviews.

ServLoom does not replace your accountant or a dedicated construction accounting module for every shop. Confirm with your bookkeeper how job financial records map to your chart of accounts. Use software to eliminate handoffs, not to skip burden math.

Published pricing starts at $99/month (Basic, up to 3 users) and $199/month (Pro, unlimited users), with a 14-day free trial (no credit card required on published plans). Factor software into overhead when you recalculate your hourly rate.

Scenario Walkthrough: Three HVAC Jobs, Three Different Stories

*Illustrative numbers only—substitute your shop’s loaded rates and costs.*

Job A — Residential capacitor replacement

  • Invoiced: $385 flat rate
  • Labor: 1.1 hours × $38 loaded = $41.80
  • Overhead allocation: 1.1 × $68 = $74.80
  • Parts cost: $42
  • Gross profit: $385 − $41.80 − $74.80 − $42 = $226.40 (58.8%)

Looks healthy—unless the tech actually spent 2.0 hours because the unit was buried behind stored holiday bins. Actual labor 2.0 hours drops margin toward 45%. Job costing catches book-time drift.

Job B — Maintenance plan visit

  • Membership visit (no extra charge): $0 incremental invoice; allocated plan revenue $89 for the visit
  • Labor: 0.9 hours loaded + overhead
  • Parts: $18 filter (included)
  • Gross profit on visit: often thin—profit lives in renewals and conversions. Track plan economics annually, not per visit in isolation.

Job C — Full system replacement

  • Invoiced: $14,200
  • Labor: 18 hours two-tech crew (36 loaded hours)
  • Equipment + materials cost: $7,850
  • Subcontractor electrical: $650
  • Permit/fees: $220
  • Gross profit: $14,200 − labor − overhead on 36h − $7,850 − $650 − $220 = depends on your rates

One missed helper day or unpaid electrical upgrade can erase install margin. Job costing by phase (rough-in, set, start-up) surfaces overruns before warranty calls start.

Dispatcher and Schedule Decisions That Move Job Cost

Job costing is not only pricing—it is which job you take next.

  • Stacking far-zone calls inflates drive overhead per job.
  • Sending a senior tech to a low-margin maintenance block may be correct for retention—but know the tradeoff.
  • After-hours emergencies need pre-built surcharges that reflect true overtime burden.
  • Selling the next available slot without capacity planning creates overtime and callbacks.

Pair costing reviews with ServLoom’s dispatching and dispatch board visibility so schedule choices align with margin goals—not only shortest drive time.

For deeper operational context, see the field service management guide and growth guide.

HVAC Job Costing for Growing Contractors

When you add a second crew, margin leaks multiply:

  • New techs take longer—price book must reflect learning curve or assign job types intentionally.
  • Office staff grows—overhead rate jumps; old flat-rate prices are suddenly underwater.
  • More memberships—visit discipline becomes a costing priority.

Growing contractors need operational visibility across scheduling, crews, and customer experience—the same visibility job costing demands. If you recently scaled past the owner-dispatcher model, revisit loaded rates quarterly, not annually.

Pair this guide with HVAC CRM software for small business if customer history and follow-ups are still fragmented—lost leads and slow quote follow-up are costing problems too, even when labor math is correct.

Job Costing Implementation: 30-Day Rollout Plan

Week Focus Deliverable
1 Burden & overhead Loaded rate worksheet per tech; annual overhead total
2 Data fields Job codes, callback flag, parts cost source of truth
3 Pilot review Cost last 20 closed jobs manually; find top leak
4 Price action Update 10 price book lines or one membership tier

Roles:

  • Owner: approves margin floors and price changes
  • Office manager: runs weekly review meeting
  • Lead tech: validates book times vs. field reality
  • Bookkeeper: validates overhead inputs and P&L alignment

Do not roll out twenty new reports at once. One consistent closed-job worksheet beats a dashboard nobody opens.

Decision Framework: Should You Take This Job?

Before discounting or accepting low-margin work, run a quick filter:

  1. Does it cover fully burdened labor at expected hours?
  2. Are parts priced at or above your floor markup?
  3. If callback risk is high (old equipment, access issues), is contingency built in?
  4. If the slot blocks a higher-margin call, what is the opportunity cost?
  5. Strategic value? (new commercial account, referral neighborhood, membership conversion)

Saying no—or quoting appropriately—is a costing skill.

Common HVAC Job Costing Mistakes (and Corrections)

Mistake: Trusting company net profit on the tax return as “proof” pricing works.

Correction: Tax return timing (cash vs. accrual), owner draws, and loan payments distort net profit. Use job-level gross margin weekly.

Mistake: One markup rule for all parts.

Correction: Tiered markup by cost band and category (refrigerant separate).

Mistake: Ignoring slow season overhead absorption.

Correction: Overhead rate uses annual billable hours, including slow weeks—summer cash must fund winter overhead.

Mistake: Blaming “the market” before verifying internal math.

Correction: Cost three jobs you lost on paper; adjust before cutting marketing.

Mistake: Buying software before defining job codes.

Correction: Configure chart of job types first; software amplifies good or bad structure.

HVAC Job Costing Worksheet (Copy for Your Office)

Use this template for the first 30 closed jobs when building a habit.

Job identification

  • Job # / invoice #: __________
  • Date closed: __________
  • Customer / site: __________
  • Job type (service / maint / install / commercial): __________
  • Lead tech: __________ Helper(s): __________

Revenue

  • Sold / quoted amount: $__________
  • Final invoice (before tax): $__________
  • Discounts or credits: $__________
  • Payment method / terms: __________

Direct costs

  • Tech hours (lead): ______ × loaded rate $______ = $______
  • Helper hours: ______ × loaded rate $______ = $______
  • Parts & materials (your cost): $__________
  • Equipment (your cost): $__________
  • Subcontractors: $__________
  • Permits / fees: $__________

Overhead allocation

  • Total billable hours on job: ______ × overhead rate $______ = $______

Results

  • Total job cost: $__________
  • Gross profit: $__________
  • Gross margin %: ______%
  • Callback within 30 days? Y / N
  • Root cause if below floor: __________

Review in your Monday meeting. After 30 jobs, patterns beat anecdotes.

Estimate vs. Actual: The Feedback Loop That Fixes Pricing

Job costing is backward-looking; estimating is forward-looking. Profit improves when they talk.

Stage Question Tool / habit
Estimate What labor hours and parts did we expect? Price book + quotes
Dispatch Did we assign the right skill and time window? Dispatch board
Field What hours and parts actually happened? Work order closeout, distributor receipts
Invoice Did we bill what we sold—or eat change orders? Invoicing
Review Variance why? Weekly costing meeting

Variance tags (pick one per loser job):

  • BOOK — price book time wrong
  • SCOPE — customer/site surprise
  • PARTS — unbilled or wrong SKU
  • CALLBACK — quality or misdiagnosis
  • DISPATCH — wrong tech or stacked route
  • SALES — discount or option not priced

After 90 days, count tags. If 40% are BOOK, fix the book—not the techs.

Job Costing Methods Compared: Spreadsheet, Accounting, and FSM

Approach Best for Strengths Weaknesses
Spreadsheet 1–2 trucks, <30 jobs/week Free, flexible, fast start Breaks at volume; manual hours/parts entry
Accounting (e.g., QuickBooks) Shops with strong bookkeeper P&L, classes, job reports Weak field labor capture; estimates often outside
Field service platform Growing teams, dispatch + mobile Quote→job→invoice continuity; reporting Requires setup discipline; confirm job-cost depth with vendor
Hybrid Many mature small shops QB for tax; FSM for operations Integration maintenance

ServLoom fits the field service platform row: emphasis on operational continuity and reporting rather than replacing a CPA. Confirm with your accountant whether you need deeper construction accounting for large commercial projects.

For operators still on spreadsheets, the field service guide helps define workflow before software—costing fails when stages are undefined.

More Scenarios: When the Invoice Lied

Job D — “Simple” ductless mini-split add-on

Sold as a half-day install. Attic routing required unexpected soffit access; helper added; electrical sub called same day.

  • Lesson: Mini-split tasks need site survey fields on the estimate, not only SKU pricing.
  • Costing action: Split standard vs. complex line items in the price book.

Job E — Commercial PM visit under contract

$0 incremental invoice; contract allocates $140 per visit. Tech spent 2.5 hours on a neglected rooftop unit with filthy filters and a failing contactor—replaced under “included” maintenance.

  • Lesson: Scope creep on PM contracts destroys margin unless visit limits and upsell paths are defined.
  • Costing action: Model worst-case visit, not best-case checklist time.

Job F — Emergency no-heat at 9 p.m.

Premium invoice $890. Overtime labor + after-hours parts pickup + callback next morning for a related gas valve issue.

  • Lesson: Emergency pricing must cover callback probability on aging equipment—or tag the callback to Job F’s true margin.
  • Costing action: Emergency surcharge policy written and priced from loaded OT cost.

Connecting Job Costing to Customer Experience (Without Race-to-Bottom Pricing)

Higher prices only stick when delivery matches promise. Job costing supports CX—not fights it:

  • Accurate ETAs reduce cancel/rebook cycles that burn drive overhead.
  • Complete equipment history on return visits cuts duplicate diagnostics—time you can bill or reinvest.
  • Professional estimates reduce “why is this so much?” disputes that end in silent discounts.

ServLoom’s HVAC industry page highlights emergency dispatch, maintenance scheduling, equipment history, and seasonal staffing—operational capabilities that make premium pricing defensible when visits are thorough and communication is proactive.

Customers do not pay for your overhead—they pay for comfort, reliability, and clarity. Job costing ensures you can still afford to deliver that next season.

FAQs

What is HVAC job costing?

HVAC job costing is tracking all costs tied to a specific job—loaded labor, parts, equipment, subcontractors, and allocated overhead—then comparing that total to invoice revenue to find true gross profit and margin.

Why do HVAC companies lose money on jobs they think are profitable?

Usually because labor is priced below loaded cost, overhead is omitted, parts are under-marked up, callbacks are untracked, or hours on the job exceed the price book assumption. Company-wide P&L hides individual loser jobs.

How do I calculate a fully loaded HVAC labor rate?

Add annual wages plus employer taxes, benefits, and workers’ compensation for the technician, divide by paid hours for loaded labor. Add overhead per billable hour. That sum is your internal cost before profit margin.

How many billable hours per HVAC technician per year?

Many small shops measure roughly 1,400–1,600 billable hours per technician after vacation, training, drive time, shop time, and callbacks—but you should calculate yours from timesheets or dispatch records rather than using a rule of thumb alone.

What gross margin should an HVAC job target?

Targets vary by job type, market, and risk. Service and maintenance often need higher gross margin percentages than large install tickets with heavy equipment cost. Set floors by category based on *your* burdened costs—not generic internet charts.

Flat rate or time and materials for HVAC?

Flat rate improves customer clarity and tech consistency when the price book is built from loaded costs. T&M can work for custom commercial work. Hybrid models are common. Job costing shows which tasks fail under either model.

How often should I update my HVAC price book?

Review distributor costs quarterly, refrigerant monthly when prices move, and reconcile your top-selling tasks against actual hours at least monthly. Update burden and overhead rates when wages, insurance, or fleet costs change materially.

Can QuickBooks do HVAC job costing?

QuickBooks can track income and expenses by job or class when configured consistently. Field service shops often outgrow it when labor hours, truck stock, and estimates live outside QuickBooks. Integration or an FSM platform may reduce re-entry.

Does ServLoom do HVAC job costing?

ServLoom connects estimates, job completion, invoicing, payments, and reporting so you have quote-to-cash visibility for reviews. You still define loaded rates, markup rules, and margin targets—the platform reduces data gaps between office and field.

How does job costing relate to HVAC maintenance agreements?

Memberships allocate revenue across multiple visits. Cost each visit (labor, parts, time) and model annual plan profitability including renewals and equipment conversions—not just the first visit.

What is the difference between job costing and estimating?

Estimating predicts cost before the job. Job costing records actuals after the job. Compare estimate to actual to improve future quotes—a feedback loop ServLoom supports when quotes flow into scheduled jobs and invoices.

Should small HVAC businesses with one truck bother with job costing?

Yes—especially with one truck, where a few underpriced jobs per week matter. Start with ten closed jobs on a spreadsheet; scale process before scaling fleet.

Conclusion

HVAC companies rarely go broke because they lack skill on the tools. They go broke because every job looks fine at the invoice until you add loaded labor, real parts cost, callbacks, and overhead—and discover the week was busy but unprofitable.

HVAC job costing is how you see that truth early enough to fix pricing, price book lines, membership tiers, and dispatch habits before another season passes. Start with burden math, capture five fields on every closed job, and hold a 45-minute review every Monday.

Software does not replace the math—but disconnected quotes, field notes, and invoices make the math impossible. When you are ready to connect those steps for your HVAC team, review ServLoom’s HVAC field service management software and run a real week on trial: sell jobs, complete them, invoice them, and ask whether you can finally see margin by job type without a spreadsheet archaeology project.

Start managing your HVAC business in one place. Start your free trial or book a demo—14-day trial on published plans, no credit card required.