Job Costing 101: How to Know If You're Actually Making Money on Each Job

By Franco Moyano, QBO ProAdvisor · Barrie, Ontario · June 8, 2026 · 8 min read

Here's a situation that comes up constantly with trades businesses across Ontario: the owner knows their annual revenue, has a rough sense of their expenses, and figures they're doing fine because the bank account isn't empty. But when you actually sit down and do job costing for their trades business — tracking what each individual job cost against what it brought in — the picture is different. Some jobs are highly profitable. Others are barely breaking even. And a few are quietly losing money on every contract. The problem is, without job costing you have no idea which is which.

Revenue Is Not Profit

This is the most important concept to absorb before we get into mechanics. A $120,000 contract does not mean you made $120,000 — or anywhere close to it. You had labour costs, material costs, subcontractor costs, and a share of your business overhead (truck, insurance, tools, office, software) that should be allocated to that job. What's left after all of that is your profit on that contract.

Many trades business owners know this in theory but manage their finances as if revenue and profit are interchangeable. They celebrate winning a big contract, do the work, collect the money — and only find out things are tight when the accountant files the year-end and the net income number is lower than expected. Job costing is how you find out in real time, not 14 months later.

What Job Costing Actually Is

Job costing is the practice of tracking all costs associated with a specific job or project, then comparing those costs to the revenue that job generated. It gives you the actual gross margin — and with overhead allocated, the actual net margin — on every job you complete.

It answers questions like:

  • Did this job make money?
  • Where did the costs run over compared to my estimate?
  • Is my labour cost tracking with what I quoted?
  • Am I pricing this type of work correctly?

For Barrie contractors and trades businesses across Ontario doing multiple projects simultaneously, job costing is the only way to make informed decisions about what work to pursue and how to price it.

The Three Cost Categories Every Trades Business Needs to Track

1. Direct Labour

This is the cost of the hours your employees (and your own hours, if you're working in the field) spent on a specific job. It includes not just wages but also payroll burden: CPP, EI, WSIB premiums, and any benefits. A common mistake is tracking labour at the wage rate without including burden. If your employee earns $30/hour but the true cost including payroll burden is $38/hour, your job costs are being understated by 27%.

2. Direct Materials

Every piece of material, equipment rental, or supply purchased for a specific job goes here. This should be tracked at the job level — not lumped into a general "materials" expense account for the whole business. When you buy copper wire for a specific electrical job, that cost belongs to that job in your books.

3. Subcontractors and Overhead Allocation

Subcontractor costs are straightforward — they invoice you for work on a specific job, and that cost belongs to that job. Overhead allocation is more nuanced. Your overhead — insurance, vehicle costs, tools, accounting fees, phone, advertising — needs to be allocated across your jobs in some proportion. A common approach is to allocate overhead as a percentage of direct labour hours or as a fixed percentage of revenue. The exact method matters less than the discipline of doing it consistently.

A Simple Job Costing Example

An HVAC contractor in Ontario quotes a commercial replacement job at $8,000. Here's what the job actually costs:

  • Direct labour (18 hours × $42/hour fully burdened): $756
  • Equipment and materials: $4,200
  • Subcontractor (electrical tie-in): $650
  • Overhead allocation (15% of revenue): $1,200
  • Total job cost: $6,806
  • Job revenue: $8,000
  • Gross profit: $1,194
  • Gross margin: ~15%

Is 15% a good margin for this type of job? That depends on your business model and the type of work — but you can only answer that question if you're doing the calculation. A contractor running 15% margins on equipment-heavy replacement work who thinks they're making healthy money may actually be underpaying themselves and not accounting for overhead properly.

How to Set Up Job Costing in QuickBooks Online

QBO is well-suited for job costing through its Projects feature. Here's the basic setup:

  • Create a Project for each job: Go to the Projects section in QBO and set up a project for each contract. Link it to the customer.
  • Assign transactions to the project: When you record expenses — materials, subcontractor invoices, labour timesheets — assign them to the relevant project at the time of entry.
  • Use time tracking: QBO integrates with time tracking apps (including its own) so employee hours can be logged to specific projects. This populates your labour costs per job automatically.
  • Review the Project Profitability report: QBO's built-in project profitability report shows income, costs, and margin by project. Run it monthly to see how each job is tracking.

Xero handles this through its Projects module with similar functionality. The key is discipline in tagging: every expense has to be coded to the right job at the time it's entered, not retroactively sorted at year-end.

Red Flags: Jobs That Look Profitable But Aren't

One of the most valuable insights job costing surfaces is the difference between jobs that feel profitable and jobs that actually are. Here are the common culprits:

Labour overruns that weren't tracked: You quoted 20 hours; the job took 32. If you're not tracking hours by job, you never see this. You collected the quoted amount and assume the margin held — but it didn't.

Material waste and over-ordering: Leftover materials that sit in the van or the yard cost real money. If materials for a job ran 20% over estimate and you didn't notice because they weren't tracked to the job, your cost analysis is wrong.

Missing overhead: The jobs that look most profitable are often the ones where overhead wasn't allocated. You see $3,000 in material and $2,500 in labour against $8,000 revenue and think you made $2,500. But the overhead on that job — the pro-rated truck cost, insurance, tools — wasn't captured. The real margin is lower.

Using Job Costing to Bid Better

The most powerful use of job costing is improving your future estimates. Once you have 12 months of job cost data, you can compare your estimates to actuals across job types:

  • How often do service calls come in under estimate? How often over?
  • What's the average labour-to-revenue ratio on new residential installs vs. commercial maintenance?
  • Are there specific job types where you consistently lose margin?

This data makes your bidding systematic rather than gut-feel. Over time, you'll know that your average commercial retrofit costs $X per square foot in labour, your material pricing needs a Y% buffer for waste, and your overhead needs to be covered at Z% of revenue minimum to stay profitable.

Real-World Example: Finding the Work Worth Doing

A plumbing contractor in Simcoe County started tracking job costs after working with a bookkeeper who specialized in trades businesses. After six months of data, the picture was clear: their service call and repair work was running at 38–42% gross margins. Their new-build residential contracts — the work they'd been actively pursuing and considered their growth opportunity — were running at 11–14% margin once overhead was allocated.

The reason was straightforward: new builds required more coordination time, longer material lead times, more site visits, and competitive pricing pressure from large GCs. Service work was faster, priced on value, and didn't require the same overhead. The owner shifted focus toward service contracts, reduced his reliance on new-build GC relationships, and increased overall profitability without increasing revenue.

That kind of insight only comes from job costing. Without it, he would have kept pursuing the work that looked impressive on paper but was quietly draining his margins.

How a Bookkeeper Helps You Maintain Job Costing Month Over Month

Setting up job costing is one thing; maintaining it consistently is another. The most common failure mode is starting strong — tagging expenses to jobs for the first few weeks — then letting it slip when things get busy. By month three, half the material costs are sitting in a generic account and the project reports are useless.

A bookkeeper who works specifically with Ontario trades businesses can maintain the job costing discipline as part of the monthly close: reconciling project expenses, ensuring labour is allocated correctly, flagging expenses that aren't coded to a job, and producing a monthly profitability-by-job report that gives the owner actual information to act on.

At Moyano & Co., job costing setup and maintenance is a core part of what we do for trades clients in Barrie and across Ontario. We set up the QBO Projects structure, train owners on time tracking, and produce a profitability report with every monthly close so you always know where your margins stand — not just at year-end.

Need help with your books?

Moyano & Co. specializes in bookkeeping for trades businesses and contractors in Barrie, Ontario and surrounding Simcoe County. If you have questions about job costing setup and profitability tracking or want help getting your books in order, book a free consultation.

Book a Free Consultation →