Job costing for contractors means tracking every dollar of labor, materials, subcontractors, equipment, and allocated overhead against one specific job, then comparing those actuals to the estimate at closeout. You can start this week with a spreadsheet and five cost buckets. Two numbers decide whether it works: a burdened labor rate (a $26 per hour carpenter really costs $33 to $36) and an overhead allocation, because no job has earned real profit until it covers both.
Key takeaways
- Job costing compares estimated cost to actual cost per job. The variance shows exactly which line of your bidding or execution is off.
- Labor burden (payroll taxes, workers' comp, insurance, benefits) typically adds 20 to 40 percent to base wages in construction, so costing at the bare wage overstates profit on every job.
- Overhead is allocated three common ways: percent of revenue, percent of direct cost, or a rate per labor hour. Pick one and apply it to every job.
- QuickBooks Online needs the Plus plan ($115 per month as of mid-2026) or Advanced to job cost with Projects. Construction-specific tools like Knowify and JobTread start at $99 to $199 per month.
- The five biggest margin leaks: unwritten change orders, unburdened labor rates, uncoded supply runs, warranty callbacks, and financing or card fees taken off the top.
What you need before you start
Job costing needs four things in place: one unique name or number per job on every receipt, timesheet, and invoice; a burdened hourly cost for each worker (step 2); an overhead percentage or hourly rate (step 3); and a habit of coding costs when they happen, not from a shoebox in April. A spreadsheet with five columns is enough to begin.
Step 1: Set up one job code and five cost buckets
Every job gets a single identifier, and every dollar lands in one of five buckets: labor, materials, subcontractors, equipment, and allocated overhead. Resist the urge to build 40 cost codes on day one; five buckets tracked accurately beat 40 tracked badly, and you can split "materials" into tile, lumber, and fixtures once the basics run clean. When costs land under three spellings of the same job name, no report can add them up.
Takeaway: one job code everywhere, five buckets, no exceptions.
Step 2: Calculate your true hourly labor cost
Your true hourly labor cost is the base wage plus labor burden: employer payroll taxes, workers' comp, general liability tied to payroll, health insurance, and small overheads like tools and phones. Published ranges vary by source and trade: Construction Coverage cites 30 to 60 percent of base wage, while payroll-focused guides such as Payroll4Construction put non-union contractors at roughly 24 to 33 percent, with union shops and high-risk trades like roofing well above that. The exact percentage matters less than running your own math once. Here is the full calculation for a hypothetical $26 per hour carpenter (illustrative numbers, your tax and comp rates will differ):
| Cost item | Basis | Annual cost |
|---|---|---|
| Base wages | $26.00 x 2,080 hours | $54,080 |
| Employer FICA | 7.65% of wages | $4,137 |
| Federal unemployment (FUTA) | 0.6% of first $7,000 | $42 |
| State unemployment (SUTA) | 2.5% of a $9,500 wage base (varies by state) | $238 |
| Workers' comp | $8.00 per $100 of payroll (carpentry-class rate) | $4,326 |
| General liability | $2.00 per $100 of payroll | $1,082 |
| Health insurance (employer share) | $450 per month | $5,400 |
| Small tools, phone, training | flat allowance | $1,100 |
| Total annual cost | $70,405 | |
| Cost per paid hour | divided by 2,080 hours | $33.85 |
| Cost per productive hour | divided by 1,952 hours (minus PTO and holidays) | $36.07 |
Notice the two bottom lines. Burden alone puts the cost 30 percent over the wage, but the worker only produces on 1,952 of those 2,080 paid hours, which pushes the true productive-hour cost to $36.07, about 39 percent over base. That last number is the one your estimates should carry, and those hours only mean anything if they land on the right job daily, which is where time tracking software built for field crews earns its subscription.
Takeaway: estimate with cost per productive hour, not the wage on the paycheck.
Step 3: Choose one overhead allocation method
Overhead allocation spreads the cost of being in business (office, owner salary, non-payroll insurance, software, trucks, advertising) across jobs, and Procore's cost library describes the same three methods most accountants use. Take a company with $180,000 of annual overhead, $1.2 million revenue, $900,000 in direct costs, and 9,000 field hours:
| Method | How it works | This company's rate | Best when |
|---|---|---|---|
| Percent of revenue | Overhead divided by revenue, loaded onto each job's price | 15% of contract price | Jobs have a similar cost mix; simplest to run |
| Percent of direct cost | Overhead divided by direct costs, added on top of each job's directs | 20% of direct cost | Material-heavy and labor-heavy jobs alternate |
| Rate per labor hour | Overhead divided by annual field hours | $20 per field hour | Labor drives office workload (service and remodel trades) |
Any of the three works. Switching between them mid-year does not, because your job-to-job comparisons stop meaning anything.
Takeaway: pick one method, load it onto every estimate, and leave it alone for a year.
Step 4: Build the estimate in the same five buckets
Your estimate must use the same buckets as your cost tracking, or closeout comparison becomes guesswork. Price labor as productive hours times the burdened rate from step 2, take material counts from a real takeoff rather than a gut number (a digital takeoff tool keeps the counts honest), get sub quotes in writing, and add your overhead load before you look at profit. Modern estimating software can hold burdened rates and overhead as defaults so every bid starts from the same assumptions.
Takeaway: an estimate that mirrors your cost buckets is the only estimate you can learn from.
Step 5: Capture actual costs at the source
Actual costs are only accurate when coded the moment they happen: the receipt gets the job code at the register, hours get logged daily from the field, sub invoices get coded on arrival, and change orders get written before the work is done. Costs reconstructed weeks later from memory are wrong in one direction, which is against you. A solid invoicing and payment platform keeps the revenue side and its processing fees coded automatically.
Takeaway: cost data is captured in the moment or it is fiction.
Step 6: Compare estimate to actual at closeout, every job
The closeout comparison is the entire payoff: line up estimated versus actual for each bucket, read the variances, and write down one fix per overrun. If labor runs 15 percent over on job after job, you are underbidding hours or the crew needs coaching, and both are fixable once visible. An estimate you never check against actuals is a guess you keep repeating.
Takeaway: the variance column, not the actuals column, is where the learning lives.
A complete worked example: one bathroom remodel, estimate to actuals
Here is one hypothetical bathroom remodel followed all the way through. Every number is illustrative, made up to show the method, not a benchmark to copy. The contractor bids a full gut-and-replace at $28,000, using a $36 burdened labor rate and a 12 percent overhead load:
| Estimate line | Amount |
|---|---|
| Labor: 240 field hours x $36 burdened | $8,640 |
| Materials: tile, vanity, fixtures, lumber, waterproofing | $6,400 |
| Subcontractors: plumbing and electrical | $3,600 |
| Equipment, dumpster, floor protection | $560 |
| Direct cost | $19,200 |
| Overhead allocation (12% of contract price) | $3,360 |
| Total estimated cost | $22,560 |
| Contract price | $28,000 |
| Planned profit | $5,440 (19.4%) |
Six weeks later the job closes. The tile shipment arrived cracked and was partially re-ordered, the shower took 28 more hours than bid, and the plumber charged $250 extra to move a drain nobody wrote up as a change order. Closeout looks like this:
| Cost bucket | Estimated | Actual | Variance |
|---|---|---|---|
| Labor (268 hours at $36) | $8,640 | $9,648 | $1,008 over |
| Materials | $6,400 | $7,090 | $690 over |
| Subcontractors | $3,600 | $3,850 | $250 over |
| Equipment and rentals | $560 | $610 | $50 over |
| Allocated overhead | $3,360 | $3,360 | $0 |
| Total cost | $22,560 | $24,558 | $1,998 over |
| Profit | $5,440 | $3,442 | $1,998 lost |
| Margin | 19.4% | 12.3% | 7.1 points lost |
The job still made money, but 37 percent less than the bid promised, and the table says exactly why. The fixes write themselves: add 10 percent to shower-tile hours in the template, inspect deliveries on arrival so the supplier eats the cracked tile, and make a rule that no sub does extra work without a signed change order (that drain move should have been a $450 change order to the homeowner, not a $250 hit to the contractor). Without job costing, this contractor just feels vaguely poorer in November. With it, the next three bathrooms bid tighter and bill fuller.
The 5 places margin leaks hide
Margin leaks rarely show up as one big loss. On most contractors' books they hide in the same five places:
- Unwritten change orders. Extra work performed without a signed change order is pure cost with zero matching revenue, the single fastest margin killer in remodeling.
- Unburdened labor rates. Bidding at $26 when the productive-hour cost is $36 quietly gives away 28 percent of every labor dollar before the job starts.
- Uncoded supply runs. The $40 supply-house trip charged to no job, plus the hour of paid drive time around it, vanishes into overhead where nobody questions it.
- Warranty and callback hours. Return visits booked nowhere make the original job look better than it was and hide which crews or products generate rework.
- Financing and processing fees. Card fees and financing dealer fees come off the top of revenue; if you offer payment plans, price them in, because dealer fees can quietly claim several points of margin on a big ticket.
WIP and retainage in plain English
Work-in-progress (WIP) reporting matters once jobs run longer than a few weeks. A WIP schedule lists, for each active job, cost to date, amount billed, and percent complete, where percent complete is cost to date divided by total estimated cost (the cost-to-cost method, as accounting guides from Deltek and Foundation Software lay out). Billed ahead of that percentage and you are overbilled, which is future work already paid for, not profit to spend. Billed behind it and you are underbilled, financing the customer's project with your own cash.
Retainage is the slice of each payment a customer holds back, commonly 5 to 10 percent, until substantial completion. Break it out separately in job records, since it is earned but not collected and distorts a job's apparent position if it hides inside a lump sum. You do not need to master either concept to start job costing, but your accountant, your bank, and any construction software will use both words.
QuickBooks Projects vs construction-specific tools in 2026
Job costing software splits into two camps: general accounting platforms with a projects feature, and construction-specific tools that cost jobs inside the daily workflow. Pricing below is as listed by the vendors in July 2026:
| Tool | How it job costs | Price as of mid-2026 |
|---|---|---|
| QuickBooks Online Plus | Projects feature ties invoices, bills, expenses, and time to a job with live profitability; Simple Start and Essentials cannot job cost | $115/month list on Intuit's pricing page, with an announced increase to $140 in August 2026 |
| QuickBooks Online Advanced | Same Projects feature plus deeper custom reporting and workflow automation | $275/month, rising to $340 in August 2026 |
| Knowify | Real-time budget vs actual by job with two-way QuickBooks sync | From $99/month plus $10 per additional user |
| JobTread | Estimating, purchasing, and job costing in one system, built around budget vs actual | From $199/month for the first user plus $20 per added user on annual billing; rated 5.0 on G2 from 65 reviews as of 2026 |
| Buildertrend | Budget vs actual inside the project-management workflow, so overruns surface mid-job | No published pricing since 2026; volume-based quotes, with third-party estimates running roughly $339 to $1,099/month |
The practical rule: if QuickBooks already holds your books, turn on Projects before buying anything, then add a construction-specific layer when you need purchasing, field entry, or mid-job overrun alerts. Our guides to the best accounting software for contractors and best project management platforms for GCs compare these in depth, and the full remodeler software stack shows where job costing sits among your other tools.
Common job costing mistakes
- Costing labor at the bare wage. Skipping burden makes every job look 25 to 40 percent more profitable than it is and locks in chronic underbidding.
- Never allocating overhead. Revenue minus direct cost is gross profit, not profit; the office still has to be paid out of it.
- Reconstructing costs after the fact. Receipts and hours coded from memory weeks later produce numbers you will confidently act on and be wrong.
- Tracking actuals but never comparing to the estimate. Without the variance column you are collecting data and learning nothing.
- Forty cost codes on day one. Complexity kills the habit; five buckets done daily beat a chart of accounts done never.
- Treating overbillings as profit. Cash billed ahead of work is borrowed from the back half of the job.
How we put this together
Software prices come from vendor pricing pages (Intuit, Knowify, JobTread) checked in July 2026, with Buildertrend noted as quote-only since it stopped publishing prices. Labor burden ranges are attributed to Procore, Construction Coverage, and Payroll4Construction guides. The bathroom remodel and carpenter burden table are hypothetical worked examples, not client data. Last verified July 2026.
Frequently asked questions
Do I need software for job costing, or is a spreadsheet enough?
A spreadsheet is enough to start and to prove the habit for your first dozen jobs. Move to software when hand-keying falls behind, or when re-entering the same data across estimating, invoicing, and accounting becomes the bottleneck.
Can QuickBooks Online do job costing?
Yes, through the Projects feature, but only on the Plus and Advanced plans; Simple Start and Essentials cannot job cost. Projects pulls invoices, bills, expenses, and time into one job record and reports profitability per job.
What is labor burden and how much should I add?
Labor burden is everything paid on top of the wage: employer payroll taxes, workers' comp, liability insurance tied to payroll, and benefits. Published construction ranges run from the mid-20s to 40-plus percent by trade and state, so run your own numbers once rather than borrowing a percentage.
How is job costing different from estimating?
Estimating predicts what a job will cost before it starts, while job costing records what it actually cost. The comparison between the two, the variance, is where you learn which bids and which crews need fixing.
What profit margin should a contractor job target?
There is no universal number, but many residential remodelers target gross margins in the low-to-mid 30s so that net profit lands in the high single digits to low teens after overhead. Job costing tells you what your jobs actually earn, which matters more than any industry target.
Do small contractors need a WIP schedule?
Only once jobs regularly run longer than a few weeks or several run at once. A simple version (cost to date, billed to date, percent complete per job) shows whether you are billing ahead of or behind the work, the early warning for cash crunches.

