Every hour, part and direct cost must reach the work order. The practical meaning of HVAC job costing Canada is simple: match one job's revenue with the actual costs caused by that job.
Build the record around the work order. Not the payroll week. Not the accounting month.
HVAC job costing Canada: define the job before work starts
Define three records before anyone books time or withdraws stock. The job is the accepted scope you want to measure. The work order holds the labour, parts, equipment and documents for that job. A visit is one attendance on site and may be only one part of the work order.
Continue the same work order when another visit completes the same accepted scope. A replacement can span removal, installation and commissioning visits without becoming three jobs. A service dispatch can also continue into an approved repair when the scope and approval remain clear.
Open a linked work order when the customer approves new work outside the original scope, when a callback must be classified separately or when a maintenance contract needs each visit measured on its own. Keep the original job number visible so the records can be reviewed together without mixing their costs.
Copy the accepted scope into the work order. Include the equipment, location, access, exclusions and expected completion point. For a replacement, record what is being removed, what is being installed and who handles electrical work, controls, condensate, sheet metal, lifting and disposal.
If the scope still needs work, use the job pricing guide to separate labour, materials, direct expenses, overhead and markup before sending the quote.
Keep these records apart from the start:
- Quoted work covered by the accepted price.
- Allowances that will be adjusted when the actual selection is known.
- Customer-approved change orders.
- Billable follow-up work.
- Manufacturer warranty work.
- Company rework.
That decision controls every cost entry that follows.
Cost each HVAC job type by its own work
Service calls
Cost the diagnostic visit first. Record dispatch travel, diagnosis and any parts used. If the customer approves a repair, add the repair labour and parts under the same work order or a linked work order that keeps the approval clear.
Close the call with technician time, findings, installed parts, test results and the customer decision. If no repair was approved, do not let a future visit blur the cost of the original diagnosis.
Replacement projects
Cost the accepted replacement scope from removal through startup and commissioning. Separate labour phases when they help you see the result: removal, handling, sheet metal, piping, controls, electrical coordination, evacuation and commissioning.
Match the installed unit and special-order parts to the work order. Add rentals, disposal, permits and subcontractors when the job caused those costs. Close the project with equipment identifiers, technician time, supplier documents, test records and approved change orders.
Planned equipment servicing visits
Cost each visit against the assets and tasks promised in the maintenance scope. Record travel, inspection and service labour, filters, belts, controls, consumables and follow-up work.
Assign contract revenue to each visit before comparing visit profit. Use a documented allocation tied to the accepted maintenance scope, such as the assets or work assigned to that visit, and apply the same rule throughout the contract.
Close the visit with the assets serviced, tasks completed, parts used, defects found and work left open. Keep quoted repairs separate from the maintenance visit so the service cost stays visible.
Set up simple buckets for HVAC job costing Canada
Keep the buckets boring. A technician should know where a cost belongs without calling the office.
Labour
Capture technician and apprentice time caused by the job. That can include dispatch travel, diagnosis, parts collection, removal, installation, evacuation, charging, controls work, startup, testing and commissioning.
Use phases that match how you quote and review the work. If commissioning time is always buried inside installation, you cannot see why the final hours moved.
Equipment and parts
Record installed units, special-order components, truck stock, refrigerant, fittings, controls and job-specific consumables. Use enough detail to identify what went into the system and what came back.
Do not treat the supplier invoice as the whole parts record. The supplier knows what you bought. The work order must show which job used it.
Other direct costs
Post costs that belong to this job and no other job. Examples include an external rental, a job permit, disposal, freight or a subcontractor invoice.
Check trade licence and trade permit questions with your provincial or territorial trade licensing and safety authority. Ask the municipality responsible for the job location about building permits. Write the answer into the work order when it changes the scope or cost.
Overhead
Office wages, general training, shop expenses and other business-wide costs normally sit outside the direct job record. Recover them through your pricing method rather than dropping them onto whichever job is open.
Do not move a direct cost into overhead because the paperwork is missing. Find the paperwork. An unrecorded part makes a poor job look profitable.
Capture HVAC labour costing from dispatch to closeout
Record each worker against the work order and the phase performed. Do it on the day. Memory gets worse after the next call.
A second technician may join only for handling, recovery, evacuation or commissioning. Their time still belongs to the job. A general timesheet entry hides the labour that made the work possible.
Use actual payroll records to build labour cost. Start with direct pay and add the employer costs attached to that labour using your own payroll and accounting records. Do not invent a flat labour cost because it is easy to type.
Keep billed labour and labour cost separate. The customer price is revenue. The technician cost is an expense. Comparing the billed hourly amount with wages alone leaves out employer costs and confuses price with cost.
Record travel and parts collection when the job caused them. If a technician drives from the site to collect a missed fitting, that time belongs in the job record. Mark the reason so you can tell necessary travel from a stocking failure.
Keep idle time, general meetings, broad training and office work out of direct labour unless the job caused that time. Use one rule across the business. Changing the rule from job to job ruins the comparison.
Issue every installed unit and part to the work order
Match special-order equipment to the work order when it is ordered. Use the supplier document, purchase order, model, serial number or another equipment identifier that your crew can check.
When the unit arrives, confirm that the identifier matches the job. When it is installed, mark it as used. This joins the purchase cost, field record and customer document.
Truck stock needs the same treatment. When a technician installs a contactor, fitting or control, issue it to the work order. Do not wait for a van count to reveal the shortage weeks later.
Use a short withdrawal record:
- Work order.
- Part or stock code.
- Quantity used.
- Technician.
- Date.
- Reason for any extra quantity.
Credit unused parts back to the same job. Do the same with supplier returns, recoverable cores and credits. The original charge and the credit must meet in one record.
Record damaged parts and emergency replacement purchases instead of burying them in overhead. Add a reason. Wrong item ordered, transit damage, installation damage and failed new component are different problems. They need different fixes.
Assign rentals and company-owned equipment once
Post an external rental directly when it was hired for one job. Attach the rental document and record what work required it. If the rental serves several jobs, use a consistent charge based on your own records.
For company-owned recovery machines, vacuum pumps, lifts and other equipment, define the supported cost pool from your actual ownership and operating records. Divide that pool by a logged usage base, such as productive use time, then apply the resulting internal cost once to the job.
Keep any customer equipment charge separate. That charge is pricing and revenue. The internal allocation is job cost.
Count the equipment once. If the internal allocation carries the ownership and operating cost into the job, do not load the same expense into overhead and recover it again. Double-counting can make sound work look weak.
Stop and document changed work before continuing
A replacement unit is on site. The existing plenum, condensate route or electrical connection does not match the quoted scope. Stop before the extra work disappears into the original price.
Describe the condition. State the added labour, parts, equipment and schedule effect. Send a written change order and get the customer's approval before continuing.
Keep change-order revenue with change-order costs. Tag the added labour, parts and equipment with the change-order number while leaving each cost in its normal bucket. Do not let the extra revenue improve the original scope while its costs sit elsewhere.
Worked example: Oak Street change order
This is the house electrical example, not an HVAC rate card. Every figure is a sample currency unit.
R. Chen's job at 14 Oak Street covered a bathroom exhaust fan, ducted through the roof, and four LED downlights. Estimate E-1847 gave a range of 900–1,400. Quote Q-1847 was 1,105.
The ceiling was lined and the quote excluded chasing. Extra cable and chasing were approved on site as a 160 change order. Invoice INV-1847 was therefore 1,265.
The change was approved and visible. That is the point. On an HVAC replacement, use the same control when hidden duct, drainage, controls or electrical conditions change the accepted scope.
Classify callbacks before posting their costs
Do not add callback time to a closed job without a label. First decide what the visit is:
- New billable work outside the completed scope.
- Manufacturer warranty work.
- Company rework caused by the installation or repair.
Open a linked work order for the visit. Keep the original job number visible. Post the labour, parts and travel once to the linked callback record, then include company rework through a reporting roll-up to the originating job.
For manufacturer warranty work, keep the costs separately classified and record the part, labour, supplier documents and any expected credit or claim. Do not assume a future credit has already reduced the cost. Post it when your records support it.
For company rework, keep the ledger entry on the linked callback work order and include it in the original job result through the reporting roll-up. Hiding it in overhead protects the job result and damages the next quote. The estimator needs to know whether access, workmanship, commissioning or part selection caused the return.
For billable work, create a fresh scope and customer approval. Keep its revenue and costs separate from the original job while linking the work orders for service history. A completed-work record can then flow into the HVAC service invoice process without mixing the new repair with warranty or rework.
Compare estimated and actual air conditioning job costs
Do not look only at the total. Compare each estimate bucket with its actual result.
| Cost bucket | Estimated | Actual | Variance | Evidence or reason |
|---|---|---|---|---|
| Technician labour by phase | [amount] | [amount] | [amount] | [timesheet and note] |
| Apprentice labour by phase | [amount] | [amount] | [amount] | [timesheet and note] |
| Installed equipment | [amount] | [amount] | [amount] | [supplier document and identifier] |
| Special-order parts | [amount] | [amount] | [amount] | [purchase and issue record] |
| Truck stock and consumables | [amount] | [amount] | [amount] | [withdrawal record] |
| Rentals or equipment charge | [amount] | [amount] | [amount] | [rental or equipment record] |
| Permits, disposal and subcontractors | [amount] | [amount] | [amount] | [supporting document] |
Keep change-order labour, parts and equipment in these normal cost buckets. Add the linked change-order tag so you can compare the original scope and approved extra work without inventing another cost category.
Check callbacks separately:
| Callback classification | Cost treatment | Roll-up check |
|---|---|---|
| Billable new work | Keep revenue and costs on the linked new work order | Do not roll into the original job result |
| Manufacturer warranty | Keep costs and supplier credits separately classified | Link the claim and post credits when supported |
| Company rework | Post costs once to the linked callback work order | Include them in the originating job through the reporting roll-up |
Treat a favourable variance with suspicion until the records are complete. Missing technician time and unissued truck stock are not savings.
For this direct-cost review, job profit before unallocated overhead is revenue minus job cost. It is not whole-business net profit. Margin is that job profit divided by revenue. Markup is that job profit divided by cost.
Worked example: Oak Street profit check
The Oak Street job cost was 850. Against original quote Q-1847 of 1,105, profit before unallocated overhead was 255 because 1,105 − 850 = 255.
Margin was 255 ÷ 1,105, or about 23%. Markup was 255 ÷ 850, or 30%.
Do not calculate profit from invoice INV-1847 of 1,265. The costs of the 160 change order were not supplied. Combining the final invoice with the original job cost would overstate profit.
Use the profit margin calculator with your completed job figures only after labour, parts, equipment and credits have been checked.
Turn HVAC profit tracking into a quoting decision
Give every important variance a reason. Use plain labels: scope, quantity, labour time, purchase cost, waste, rework or missing documentation.
Then change the assumption that caused it. If commissioning took longer because controls were not identified, improve the survey and commissioning allowance. If a fitting was missing from every similar job, update the parts takeoff or van stock rule.
Do not apply one blanket increase to every price. That hides the lesson. Change the labour phase, material quantity, equipment allowance or exclusion that was wrong.
Review planned equipment servicing by asset and visit scope. Compare the allocated revenue with technician time, filters, belts, controls, travel and follow-up work. Before renewal, use the HVAC maintenance renewal site review to correct the scope instead of carrying a weak visit into another term.
Close the work order with evidence, not a guess
Before closing the job, check that every technician posted time and every installed part left stock. Match special-order equipment, rentals, subcontractor bills and permit costs to the work order.
Confirm that unused returns and supplier credits went back to the original charge. Link every change order, callback and warranty claim. Keep customer deposits and payments received separate from revenue earned by the work when reviewing performance.
Have your accountant document how recoverable and non-recoverable GST/HST are treated under Canada Revenue Agency GST/HST rules (opens in a new tab). Apply that documented treatment consistently to every comparable job-profit review.
Keep HVAC job costing Canada-wide consistent by saving one action from each review. It might be a revised labour phase, a new truck-stock issue rule, a clearer exclusion or a dispatch note.
Open the latest completed HVAC work order now. Find one missing labour entry, stock issue, return or callback label and fix it before using that job to price the next one.