All posts

How to Calculate Labor Cost Per Job (Job Costing for Field Crews)

10 min read

How to Calculate Labor Cost Per Job (Job Costing for Field Crews)

The short answer: Labor cost per job is the total wages, payroll taxes, and benefits your crew spent on one job, not just their base hourly rate. To get it right you need hours tagged to each job, a labor burden multiplier on top of base wages, and overtime counted correctly. Once you have accurate per-job hours from a tool like Punch, the math is quick and the answer tells you which jobs actually make money.

Most owners can tell you their revenue for the month. Far fewer can tell you what a single job cost them in labor. That gap is where profit quietly disappears. Labor is usually the largest line on a field business, running anywhere from 20 to 60 percent of total job cost depending on the trade, and it is the one cost you can misjudge without noticing until the year is over.

This guide walks through what labor cost per job really includes, why most crews undercount it, and how to capture it without a spreadsheet full of guesses.


Base Wages Are Only Half the Number

The first mistake is treating an employee's hourly rate as their cost. It is not. The rate is what lands in their paycheck. The cost to your business is higher, because every hour also carries payroll taxes, workers' compensation, unemployment insurance, and whatever benefits you offer.

That extra layer is called labor burden. Industry benchmarks put burden somewhere between 25 and 50 percent on top of base wages, and the U.S. Small Business Administration estimates the true cost of an employee runs 1.25 to 1.4 times their salary. For a specialty crew carrying heavy workers' comp, it can run higher.

Here is the practical version. If you pay a framer 35 dollars an hour and you use a 40 percent burden, that hour actually costs you about 49 dollars. Bid a job on 35 and you have underpriced every hour of it by 14 dollars. One source of construction job-costing data found that contractors who track only base wages undercount their labor by 25 to 40 percent. On a thin-margin job, that is the entire margin.

The formula is simple once you have the inputs:

Labor cost per job = (hours on the job) x (base hourly rate) x (1 + burden rate)

The rate and the burden you set once. The hard part, the part that goes wrong, is the first input: hours on the job.


Why Hours Are the Weakest Link

You cannot cost a job you cannot measure. And hours are exactly where most field businesses lose the thread.

A crew hits three job sites in a day. Someone writes "8 hours" on a paper log with no split between the sites. A worker forgets to note when they left the first address. Two guys ride together and one logs the other's time from memory at the end of the week. By the time it reaches payroll, the hours are a rounded, blended estimate that cannot be pulled apart by job.

When every hour lands in one bucket, per-job costing is impossible. You know you paid out 4,000 dollars in wages last week. You have no idea whether the Miller job ate 60 percent of it or 20 percent. So you price the next Miller-type job on a feeling, and the feeling is often wrong.

Accurate job costing depends on one thing above all: every punch tied to the job it belongs to, recorded at the moment it happens, not reconstructed later. That is a time-tracking problem before it is an accounting problem.


Tag Every Punch to a Job

The fix is to make the job the unit of tracking, not the day. Punch is built around job sites. You add each active job as a site with an address, and every punch a crew member makes is tied to that site. The job name shows on every timesheet row, so a week of hours reads like a list of jobs rather than a wall of punch times.

For a crew that moves between sites in a day, there are two clean ways to keep the hours honest:

  1. Punch out and back in at each stop. When the crew finishes one site and drives to the next, they punch out and punch in again at the new address. Each becomes its own shift tagged to that job. Nothing to reconstruct later.
  2. Split a shift after the fact. If someone logged one long shift across two jobs, a manager can split it into separate sub-shifts, each with its own job and time range. The hours land against the right jobs without anyone guessing from memory.

Because the tag is captured at punch time, the number you cost against is the real number, not a Friday-afternoon estimate.


Verify Crews Were Actually There

Job costing built on inflated hours is worse than no job costing, because it looks precise while being wrong. Two common leaks inflate the hours before they ever reach your cost math.

The first is location. Punch offers geofenced punch-in: the app checks the crew member's GPS against the job site's address and radius before the punch counts. If they are not at the job, the punch does not start there. That keeps drive time and off-site hours from silently loading onto a job's cost. Geofencing applies to punch-in only, so nobody is locked out of ending their day or their lunch because GPS could not get a fix inside a stairwell.

The second is buddy punching, where one worker punches in for another who is running late. On a shared iPad kiosk, Punch requires a per-person PIN, so a punch belongs to the person who entered it. Notably, Punch verifies presence with a job-site geofence, never a camera in your crew's face. There is no selfie and no facial recognition. A geofence proves someone was at the job without turning every punch into a surveillance moment.

The result is per-job hours you can actually trust, which is the whole point. Cost math is only as good as the hours feeding it.


Count Overtime, or the Cost Is Wrong

Overtime is part of a job's labor cost, and it is easy to miss when hours are blended. An hour of overtime can cost 1.5 times the base rate before burden, and if that overtime happened on one specific job, that job carries the premium.

Punch calculates overtime automatically against the rules you pick, with presets covering more than 50 countries plus U.S. federal and state variations like California's daily overtime and double time. So when a crew pushes past 40 hours in a week finishing a job, the overtime premium is already reflected in the hours and pay Punch reports. You are not hand-flagging time-and-a-half and hoping you caught all of it. Miss the overtime and you undercount the job; count it and you finally see the true cost of the jobs that run long.


Turn Hours Into Cost Per Job

Once hours are tagged, verified, and overtime is counted, the costing step is short.

Punch groups hours and gross pay by employee and by pay period, and every export carries the job site on each row. The QuickBooks Online integration maps each of your job sites to a QuickBooks Customer, so exported time lands under the right job for costing inside QuickBooks. If you prefer a spreadsheet, the Excel and CSV exports include the job on every line, so you can total hours and pay per job in a pivot table in a couple of minutes.

From there, apply your burden multiplier to the wages and compare against what you billed. Punch gives you the accurate, per-job hours and gross pay; you add your burden rate and your invoice to see the margin. That last step is deliberately yours, because your burden and your pricing are specific to your business, and a costing number is only useful if you trust the inputs. Punch's job is to make the input, the hours, unarguable.

Run this every pay period and a pattern shows up fast. The jobs you thought were your best earners are sometimes the ones bleeding overtime. The client who always seems easy is the one whose recurring work has quietly grown 30 percent longer than it was a year ago. You cannot see any of that from a lump-sum payroll total. You can see all of it when the hours are tied to jobs.


Frequently Asked Questions

What is the difference between labor cost and labor burden?

Labor cost in the narrow sense is just wages. Labor burden is everything on top of wages that it costs you to employ someone: payroll taxes, workers' compensation, unemployment insurance, and benefits. True labor cost per job is wages plus burden. Skipping burden is the single most common job-costing error.

How do I track hours per job instead of per day?

Use a tool that treats the job as the unit of tracking. In Punch, every punch is tied to a job site, so hours sort themselves by job automatically. A crew punches out and back in as it moves between sites, or a manager splits a mixed shift afterward.

Does Punch calculate my profit margin per job?

Punch gives you accurate hours and gross pay per job, including overtime. You apply your own labor burden multiplier and compare against what you invoiced to get margin. Punch owns the hard part, the trustworthy hours; the burden rate and pricing stay in your hands because they are specific to your business.

Do I pay more for tracking more job sites?

No. Job sites are a configuration feature in Punch, not a billing unit. Add as many active jobs as you have. Plans differ only by how many people punch in, and every plan includes every feature, so overtime, geofencing, and per-job exports are never locked behind a higher tier. Owners are always free.


Getting Started

Setting up per-job labor tracking in Punch takes about fifteen minutes:

  1. Create your organization and invite your crew by email or join code.
  2. Add your active jobs as job sites, each with an address and geofence radius.
  3. Set each person's hourly rate and pick your overtime preset.
  4. Choose weekly or biweekly pay periods and approve hours before payroll.
  5. Export to QuickBooks or Excel, apply your burden rate, and see cost per job.

The 14-day free trial starts at signup, no credit card required. Stop guessing which jobs make money and let the hours tell you.

Start tracking labor cost per job with Punch →

More from the blog