Go to SendWork
Full access

The Job Bank wage is where contractor pricing starts, not where it ends. Here's the provincial data, the four multipliers between wage and invoice, and the billable-hour count that decides everything.
Search for contractor hourly rates in Canada and the first number you will find is a wage. It is the median a plumber or electrician earns as an employee, published by the federal Job Bank. Operators quote from that number, add a bit, and wonder why the year ends with a full calendar and an empty account. The wage is where the math starts. It is roughly a third of where sustainable contractor hourly rates end.
The operator consequence is a slow one, which is why it is dangerous. A rate that is $25 an hour too low does not lose you a single job. It loses you about $30,000 a year across 1,300 billable hours, quietly, while every client tells you how reasonable you are. Therefore the useful question is not “what do contractors charge in my province.” It is “what does an hour of my crew’s time actually cost before I add a dollar of profit.”
The Job Bank publishes low, median and high hourly wages by province for every trade. The data comes from Statistics Canada’s Labour Force Survey. Its plumber figures below were updated in November 2025 and cover the 2023 to 2024 reference period. They are employee wages, blending apprentices with journeypersons, and they are the most defensible public baseline in the country.
| Province | Low ($/hr) | Median ($/hr) | High ($/hr) |
|---|---|---|---|
| Canada | 21.00 | 34.00 | 46.00 |
| Quebec | 24.50 | 40.00 | 45.00 |
| Saskatchewan | 22.00 | 35.00 | 43.00 |
| Nova Scotia | 18.00 | 33.00 | 38.38 |
| Ontario | 20.00 | 32.50 | 50.38 |
| British Columbia | 23.00 | 32.00 | 48.00 |
| Manitoba | 21.00 | 30.11 | 43.00 |
| Alberta | 20.00 | 30.00 | 43.00 |
| Prince Edward Island | 20.00 | 30.00 | 38.00 |
| Newfoundland and Labrador | 18.50 | 27.50 | 36.03 |
| New Brunswick | 16.50 | 26.00 | 34.00 |
Two things stand out. First, Quebec’s median is the highest in the country because collective agreements set the rate. Ontario’s high end is the widest because the industrial and commercial sector pays well above residential. Second, the Atlantic provinces sit $6 to $8 below the national median. That matters if you are pricing against a competitor who moved east and brought Toronto numbers with him. Electricians and carpenters follow a similar shape, with national medians of about $35 and $30 respectively.
Here is the arithmetic, using Ontario’s $32.50 plumber median as the starting point. Every figure is illustrative, so substitute your own.
From wage to charge-out: a worked example
Base wage: $32.50. Add the employer burden of CPP, EI, WSIB, vacation pay and statutory holidays at roughly 20%. The loaded cost is about $39 an hour.
Then divide by billable utilization. A technician paid for 2,000 hours bills perhaps 1,300 of them once travel, quoting, callbacks, supply runs and weather are removed. That is 65%, so the cost per billable hour is about $60.
Add overhead. A van, fuel, insurance, phone, software, tools and a share of the owner’s unbilled time run a one-truck operation somewhere near $45,000 a year. That is about $35 per billable hour.
Cost per billable hour is now around $95. Add a 15% margin and the charge-out rate is roughly $110. The wage was less than a third of it.
The multiplier most operators skip is utilization, and in Canada it is seasonal. A crew that bills 70% of its hours from May to October may bill 50% in January. That is the month the truck will not start and half the day is daylight. Consequently a single annual rate is really a blended rate. The operators who price winter work without a premium are subsidizing it from summer.

The number that decides whether contractor hourly rates work is not the wage and not the margin. It is the billable-hour count, because every overhead dollar is spread across it. Two plumbers can charge the same $110 and pay the same $32.50. The one billing 1,500 hours a year clears roughly $20,000 more than the one billing 1,200, with no change to his pricing at all. That is why the strongest operators obsess over the gap between hours paid and hours invoiced. It is also why a lost afternoon to a callback nobody logged is a pricing problem, not a scheduling one. When jobs, quotes and invoices sit in one record, that gap is visible by the week. SendWork’s job-level reporting shows hours quoted against hours invoiced per job, which is the quickest way to find where a crew’s day is leaking.
Consider an electrician in Sudbury, two years into running his own show, with one apprentice. He set his rate at $85 an hour because a supply-house rep told him that was “what everyone charges.” His loaded cost for himself and the apprentice, spread over actual billable hours, was about $78. The $7 that remained was not profit. It was the money that disappeared the first time a service call ran long or a client paid in 60 days. He was busy every week and behind on his own instalments by October. Raising the rate to $115 lost him two price-sensitive clients and made the year work. Our read is that his story is the typical one. The rate was not set; it was inherited, and nobody had ever run the arithmetic.
The published wage is a public fact and a private trap. Use it as the first line of the calculation and never as the last. The rate that keeps a Canadian trade business solvent is built from burden, utilization and overhead. It is only defensible if you know your own billable hours, which means invoicing every job and logging every callback. Operators who already keep their GST/HST and invoicing discipline tight have most of the data they need. The rest is one afternoon with a spreadsheet.
The provincial wage figures in this article come from the Government of Canada Job Bank wage report for plumbers. That site also publishes equivalent tables for electricians, carpenters and every other trade. Check it for the current update before you rely on a figure.
What can wait is fine-tuning the margin between 12% and 18%. What cannot wait is knowing how many hours you actually billed last year.
ON THE HOURS YOU PAID BUT NEVER BILLED
The rate that keeps you solvent is built, not inherited.
The rate only works if the billable-hour count behind it is real. SendWork builds and sends the quote, tracks the job against it and issues the invoice when the work closes, so the hours you actually billed are a number you can read, not one you estimate in April.