Skip to content
CACanada

HVAC Contractor Markup Canada: Price Labour, Equipment, Parts and Overhead

Build an HVAC markup policy from direct costs, overhead and completed-job records without confusing markup, margin or GST/HST.

Yes Foreman · October 9, 2026 · Pricing and quoting

The replacement looks profitable until freight, extra fittings, commissioning time and office costs land on the job. The fix is an HVAC contractor markup Canada policy that starts with complete costs and a written scope.

Start with the scope. Build the direct cost. Recover overhead once. Then apply a written markup policy that your next estimator can follow.

Lock the HVAC scope before touching the markup

Inspect the site and write the accepted scope before entering crew hours or supplier costs.

For replacement work, name the equipment being removed and supplied. Record the capacity, model, accessories, controls, connections, drainage, supports, protection, testing, startup, commissioning and customer handover.

Walk the route from delivery point to final position. Check doors, stairs, roof access, lifting points, occupied areas and finished surfaces. Assign protection, lifting and cleanup instead of leaving them as crew problems.

Match the equipment to the complete installation

A model number is not a complete scope. List every accessory needed to install, control and commission the equipment.

Check the current supplier record against the quote. Confirm what is included, what ships separately and how long the price remains usable. Do not treat a required control, curb, transition, drain fitting or support as a surprise part.

If the accepted equipment becomes unavailable, stop the order. A substitute can change dimensions, controls, electrical connections, drainage and commissioning work. Recheck the scope and cost before asking for approval. Use the HVAC quote follow-up process to keep the approved equipment tied to the quoted work.

Assign access, lifting, disposal and work by others

State who opens and closes the work area. State who moves stored items, protects finishes, arranges lifting equipment and removes the old unit.

Name work by other contractors. Electrical feeds, roof openings, drainage changes, structural supports and control integration must belong to someone. If your quote does not include that work, put it in the exclusions.

Record freight, restricted access, equipment rental and disposal when they are direct job costs. Do not add a vague regional cushion. Price the actual site condition.

Exclude concealed and unconfirmed conditions

Write down what you could not inspect. Existing ductwork, drainage, electrical supply and control wiring may not match the proposed installation.

An exclusion is a boundary, not an escape route. Describe the unknown condition and what the accepted scope assumes. If the crew opens the work area and finds something different, stop and use a change order.

Before costing the quote, read the scope out loud. If the crew would still need to ask who supplies, moves, connects, tests or disposes of something, the scope is not ready.

Build the direct cost by bucket

Keep the buckets plain: labour, equipment, parts and consumables, subcontractors, and other direct costs. One large materials line hides the exact place where an estimate failed.

Direct costs belong to this job. Overhead supports several jobs. Draw that line now because the markup calculation depends on it.

Calculate loaded labour from tasks and crew time

Break the work into tasks. Include delivery handling, removal, access setup, preparation, installation, connections, controls, testing, commissioning, cleanup and handover.

Assign crew time to each task. Add travel, loading and pickup only when your accounting policy treats them as direct job labour.

Loaded labour cost = estimated job hours × loaded labour cost per hour

Loaded labour is broader than the technician's wage. Open your payroll registers, employer remittance records, benefits invoices, paid-leave records and workers' compensation statements. Classify wages, employer payroll contributions, benefits, paid non-job time and workers' compensation premiums according to your accounting policy.

Use records from your provincial or territorial workers' compensation board when its coverage cost belongs in your loaded-labour or overhead calculation. Put the cost in one place. Do not recover it twice.

Match equipment cost to the quoted system

Use the current supplier cost for the exact equipment and accessories named in the scope. Record freight, delivery, lifting and return charges separately when they belong to the job.

Equipment creates work before installation. Someone specifies it, orders it, checks it, receives it, stores it and handles damage or returns. Keep the supplier cost separate from the price you charge for carrying that work.

Count fittings, controls, supports and consumables

Count the parts used to connect, seal, support, drain, control, protect and label the system. Include stocked fittings and consumables taken from the van.

The technician who uses extra fittings from van stock has still consumed job cost. Use a takeoff, standard installation list or van issue record. Pick a method that can also feed completed-job cost tracking.

Do not use markup as a substitute for quantity. Count the fittings first. Price them second.

Keep subcontractors and direct charges visible

Enter each subcontractor quote as its own cost. Compare its scope with yours. Check access, testing, cleanup and closeout responsibilities before carrying the figure into the customer quote.

Keep rentals, freight, disposal, permits, job-specific protection and specialist testing visible. These costs should not disappear into overhead merely because they take time to collect.

HVAC contractor markup Canada: set the policy by cost bucket

One markup across the whole job is easy to apply. It can also hide different handling, warranty, supervision and cash demands.

Use separate bucket markups when labour, equipment, parts or subcontractors create materially different handling work, warranty exposure, coordination or cost volatility. One consistent markup is adequate when those demands are similar across the buckets and completed-job records show that the method recovers overhead without distorting the price.

Apply labour markup to loaded labour

Apply the labour markup to loaded labour cost, not the technician's wage. Write down what the loaded cost already contains.

Decide where travel, supervision and paid non-job time sit. If supervision is a direct cost on large work but overhead on service calls, describe when each treatment applies. Do not let each estimator make up the answer.

Price equipment for its purchasing and handling work

Set the equipment policy from your own records. Account for the work involved in specifying, ordering, receiving, storing, moving, financing, returning and administering warranty issues where your business carries those tasks.

Do not copy the parts markup onto the main unit without checking what each bucket must recover. Equipment and small stocked parts place different demands on the business.

Use one costing rule for parts

Your labour and materials markup policy should state how stocked parts, special-order parts and consumables receive a cost. You might use a current purchase record or a documented inventory cost. Use the same basis in the estimate and the completed-job report.

When purchase costs change, update the cost record before changing the markup. A stale part cost can make a sensible markup look wrong.

Recover subcontractor coordination

A subcontractor creates work for your office and field team. You may need to scope, schedule, supervise, inspect, pay and handle callbacks around that work.

Decide how the selling price recovers those tasks. Do not call the subcontractor a pass-through while your team coordinates the work for free. Follow the accepted customer agreement when it controls how a charge must be presented.

Choose one overhead recovery method

Overhead keeps the company operating across several jobs. Office labour, accounting, communications, training, general insurance and costs for vehicles not charged directly are possible examples. Use your own accounts to build the list.

Do not copy an overhead list from another contractor. Read your general ledger and decide where each cost belongs in your business.

Choose between these mutually exclusive methods:

  • Build overhead recovery into the cost-bucket markups. Do not add another overhead charge to the subtotal.
  • Keep the bucket markups free of overhead recovery and add a separate overhead recovery charge under your written pricing policy.

Whichever method you use, remove every cost already charged directly to the job. Match the recovery base to the accounts and test the method against completed work.

Use an HVAC pricing formula that exposes the calculation

A useful HVAC pricing formula works one cost bucket at a time:

Bucket selling price = bucket cost × (1 + bucket markup rate)

Run labour, equipment, parts, subcontractors, permits, freight, rentals, disposal and every other direct cost through that calculation. If your written policy passes a bucket through at cost, apply no markup to that bucket.

When overhead is built into the bucket markups:

Quoted subtotal = sum of all bucket selling prices

When overhead is recovered separately:

Quoted subtotal = sum of bucket selling prices before overhead + separate overhead recovery charge

Do not mix the methods. The how to price a job guide explains the shared cost, markup and overhead framework in more detail.

The formula shows the calculation. It does not choose the markup for you. Feed it loaded labour, current supplier records, your overhead policy and the return required by your business.

Label optional work, allowances and unconfirmed conditions clearly. An allowance can sit inside the quote when you state its amount, what it covers and how the final price will change if the actual selection or cost differs. Get approval before adding work outside the accepted scope.

Before sending the quote, match each selling-price bucket to its supporting cost record. If a price has no cost record or policy behind it, stop and find the missing assumption.

Keep markup versus margin straight

Markup versus margin is a calculation problem, not a wording preference.

Markup measures the amount added against cost. Margin measures profit against the selling price. The markup amount may recover overhead excluded from the bucket cost as well as contribute to profit.

Oak Street worked example

The house example is an electrical job used only to show the arithmetic. All figures are sample currency units, not a Canadian rate card.

R. Chen's quote Q-1847 at 14 Oak Street covered a bathroom exhaust fan and four LED downlights. The original quote was 1,105. Job cost was 850, leaving profit of 255 measured against that original quote.

1,105 − 850 = 255 profit

Markup = 255 ÷ 850 = 30%

Margin = 255 ÷ 1,105 ≈ 23%

A 30% markup produces a margin of about 23% in this example. Use the profit margin calculator to test your own selling price, but keep the cost definition consistent between the quote and the completed job.

Keep GST/HST separate and price permits as job costs

Build the marked-up subtotal first. Then show the GST/HST treatment separately. Tax collected is not contractor markup, job revenue or profit.

Check the current treatment for your business and job with the Canada Revenue Agency (opens in a new tab). Do not use the markup calculation to guess tax treatment.

Check the applicable provincial tax authority for any separate provincial tax treatment. Do not assume the GST/HST treatment answers that question.

Put permits through the documented cost policy

Ask the municipality where the work will occur about its business-licence and building-permit questions. Add confirmed permit fees and the labour needed to arrange inspections as visible job costs when your company carries them.

Ask your provincial or territorial trade licensing and safety authority which trade licences and trade permits cover the planned work. Write down the answer for the job file. The responsible authority and licence class depend on the location and work being performed.

For refrigeration mechanic certification in Manitoba, check the trade with Apprenticeship Manitoba (opens in a new tab). For gas fitting licences and permits in Manitoba, check the specific work with Inspection and Technical Services Manitoba (opens in a new tab).

Apply the documented cost-bucket policy to permit fees, permit labour and inspection costs. Keep tax treatment separate from that pricing decision.

Price hidden work through a change order

When the crew finds work outside the accepted scope, stop. Photograph the condition and compare it with the quote, site notes and exclusions.

Price the added labour, equipment, parts, subcontractors and direct charges under the same policy used for the original work. Record the schedule effect if the discovery changes the completion date.

The change order should state:

  • The condition found on site
  • The original scope boundary or exclusion
  • The added work
  • The added price
  • The schedule effect, if any
  • The customer's approval

Get approval before proceeding. Immediate action needed to make the site safe should follow the terms already agreed for the job.

On the Oak Street bathroom job, the ceiling was lined and quote Q-1847 excluded chasing. Extra cable and chasing became an approved 160 change order. Invoice INV-1847 was therefore 1,265.

Do not calculate profit by comparing the 1,265 invoice with the original 850 job cost. The costs of the 160 change order are not given. That comparison would mix a changed selling price with an incomplete cost figure.

Correct the next quote from a completed HVAC job

Pull one completed job that resembles the work you are about to quote. Place estimated and actual labour, equipment, parts, subcontractors and other direct charges beside each other.

Find the first faulty assumption. The crew may have used more commissioning time. Freight may have been missing. Van-stock fittings may never have reached the job record. The equipment cost may have changed after quote acceptance.

Correct the cost assumption before changing the markup. Raising markup to cover weak estimating hides the problem and pushes the same error into the next job.

For an HVAC quote in Canada, the HVAC job-costing process shows how to keep actual labour, equipment and parts attached to the completed job.

Treat HVAC contractor markup Canada-wide as a policy you test against completed jobs, not a number you set once.

Open one completed job and correct one faulty cost assumption before the next quote.

Put the next job in one place

Yes Foreman connects quotes, schedules, crews, timesheets and invoices for small field-service teams.