Job Costing for Small Contractors: A Practical Guide with Worked Numbers

How to set up cost codes, track labor, materials and subs against each job’s budget, read the results mid-job, and use them to price the next one.

Floot ·

Key Takeaways

  • Job costing compares estimate with actual, line by line. Use the same cost codes in your estimate and your bookkeeping, or the comparison is impossible.
  • Labor is where jobs are won or lost. Materials rarely run far over. Labor hours do, and they only show up if each person logs time against a job and a cost code every day.
  • Look at it weekly, not at the end. A job cost report read after final payment is a history lesson. Read weekly, it tells you to talk to the customer about a change order before the money is gone.
  • Keep overhead out of job cost. Job cost is direct cost only. Overhead gets recovered through your pricing, and mixing the two hides which jobs actually perform.
  • Feed actuals back into estimating. The real payoff is the next bid: your own production rates, by job type, from your own crews.

Quick-Start Prioritization Framework

If you are...Start withUpgrade when
1 crew, under 10 jobs a yearA spreadsheet per job with 6 to 10 cost codes, receipts tagged by jobYou start missing receipts or hours
2 to 4 crewsAccounting software with job or project tracking plus daily time entry by jobYou need mid-job reports without manual work
Multiple PMs, subs on most jobsConstruction management software with budgets, commitments and change ordersYour process differs from what the product supports

A lot of small contractors know whether the year was good and have no idea which jobs made it good. The accountant’s profit and loss statement tells you the company made 6 percent; it does not tell you the deck jobs made 18 percent and the kitchen jobs lost money. Job costing does. It is simply recording every cost against the job that caused it, comparing it with the estimate, and acting on the difference while the job is still running. This guide shows how to set it up with the tools you already have, how to read it mid-job, and how a real-looking kitchen job’s numbers play out.

What job costing is, and what it is not

Job costing assigns every direct cost (labor, materials, subcontractors, equipment, permits, disposal) to a specific job, and usually to a cost code within that job. You then compare actual costs with the estimate, and revenue with costs, job by job.

It is not overhead allocation. Your truck payment, office rent and bookkeeper are real costs, but they are company costs. Keep them out of job cost. You recover overhead in your pricing (see the estimating guide), and you judge each job on its gross profit: revenue minus direct cost.

Why it matters more for small companies

Margins are thin. NAHB’s 2026 Remodelers’ Cost of Doing Business Study reports an average gross margin of 29.9 percent and net margin of 6.3 percent for 2024, with operating expenses at 23.6 percent of revenue. On those numbers, a job that runs 7 percent over its direct-cost budget can wipe out the profit entirely. A big company can absorb a bad job. A five-person company may not.

Set up cost codes you will actually use

A cost code is a category of work or cost. Large GCs use detailed CSI MasterFormat divisions with hundreds of codes. A small contractor needs far fewer. The test is simple: would you change how you estimate if you knew this number? If not, merge it into another code.

A starter list for a remodeler

Demo and protection, framing and carpentry, plumbing, electrical, HVAC, insulation and drywall, tile, cabinets and countertops, finish carpentry, paint, cleanup and disposal, permits and fees. Then split each into cost types: labor, materials, subcontract, equipment. That gives you a grid of perhaps 12 codes by 4 types, which is plenty.

Use the same codes everywhere

The estimate, the timesheet, the purchase order, the receipt and the bookkeeping entry all need the same job and cost code. If your estimate says “Tile” and your bookkeeper files the tile shop receipt under “Materials, general,” the comparison breaks. Write the list down, give it to everyone, and do not let it drift.

Capture costs as they happen

Job costing fails at data entry, not at reporting. If costs reach the job a month late, the report is a month late.

Labor: daily, by job and cost code

Each person logs start, end and break, plus the job and cost code, every day. The cost of an hour is the burdened rate (wage plus payroll taxes, workers’ comp and benefits), not the wage. If someone works on two jobs in a day, they split the hours. Weekly totals reconstructed from memory are close to useless for job costing.

Materials: job number on every purchase

Give suppliers the job name or number as the PO or reference on every order. Have crews photograph receipts for runs to the store and tag the job. Returns need to come back off the same job. Materials taken from shop stock should be charged to the job at cost too, or that job looks better than it was.

Subcontractors: track commitments, not just bills

When you sign a sub for 12,800 dollars, that is a commitment against the job, even if you have paid nothing yet. Tracking committed cost alongside paid cost tells you what the job will cost, not just what it has cost so far. Add sub change orders to the commitment as soon as you approve them.

A worked example: a 68,000 dollar kitchen

These are illustrative numbers for a mid-range kitchen remodel, rounded so the arithmetic is easy to follow. The burdened labor rate is 45 dollars an hour.

Budget at contract: labor 420 hours, 18,900 dollars; materials 17,500; subcontractors (electrical, plumbing, countertop fabricator) 12,800; equipment and disposal 1,600; permits 900. Total direct budget 51,700 dollars against a 68,000 dollar contract, for a planned gross profit of 16,300 dollars, or 24.0 percent.

During the job, the electrician found an undersized circuit that needed a new run, and the customer approved a change order for that plus an added pantry cabinet, at 3,200 dollars. The electrician’s extra cost was 650 dollars.

Actual at completion: labor 505 hours, 22,725 dollars; materials 18,240; subcontractors 13,450; equipment and disposal 1,600; permits 900. Total direct cost 56,915 dollars. Revenue 71,200 dollars including the change order. Actual gross profit 14,285 dollars, or 20.1 percent.

Cost codeBudgetActualVariance
Labor (hours)420505+85 hrs
Labor ($45 burdened)18,90022,725+3,825
Materials17,50018,240+740
Subcontractors12,80013,450+650 (change order)
Equipment and disposal1,6001,6000
Permits9009000
Total direct cost51,70056,915+5,215
Revenue68,00071,200+3,200
Gross profit16,300 (24.0%)14,285 (20.1%)−2,015

What the numbers say

The change order was handled well: 3,200 dollars of revenue against 650 dollars of sub cost, plus some of the extra labor. The real problem is 85 extra hours of the company’s own labor. That one line cost 3,825 dollars, almost four points of margin.

Job costing by code lets you ask the next question: which 85 hours? If most of it sits in cabinets and finish carpentry, maybe the cabinet install took longer because of out-of-square walls nobody priced, and your next kitchen estimate needs a line for that. If it sits in cleanup and protection, maybe the customer was living in the house and you need a different production rate for occupied homes.

Reading job costs mid-job

The value of job costing is in the middle of the job, when you can still act.

Percent complete and cost to complete

Each week, for each cost code, ask the foreman one question: how many hours are left? Add that to hours spent and compare with the budget. That is your estimate at completion. If tile has used 30 of 40 budgeted hours and the foreman says 20 to go, you are heading for 50, and you know it with days to spare instead of after the fact.

Over-billing and under-billing

On progress-billed jobs, compare what you have billed with what you have earned. One common way to measure earned revenue is percent complete by cost: costs to date divided by estimated total cost, times the contract value.

Example from the kitchen: at week four, costs to date are 30,000 dollars and estimated total cost is 56,915, so the job is about 52.7 percent complete. Earned revenue is 52.7 percent of 71,200, about 37,530 dollars. If you have billed 40,800, you are over-billed by about 3,270 dollars. That cash is not profit; it is money you will need to finish the job. Small contractors who spend over-billings as if they were earnings are the ones who get squeezed at the end of a job.

What to do when a code runs over

Find out why within the week. The answer is usually one of four things: the scope grew (write a change order), conditions were worse than expected (check your contract’s exclusions and write a change order if they apply), the crew was slower than estimated (fix next time’s production rate), or costs landed on the wrong job (fix the entry).

Tools for job costing

You do not need special software to start. You do need one place where every cost lands with a job and cost code.

Spreadsheet

One sheet per job with budget columns from the estimate and actual columns filled from timesheets and receipts. It works for one crew and a handful of jobs if someone updates it weekly. It falls apart when three people are entering data or when receipts arrive by text message.

Accounting software

Most small-business accounting software can tag income and expenses by customer or project. QuickBooks Online’s pricing page, for example, lists project profitability tracking on the Plus plan and advanced project financials on Advanced. That handles materials and subs well. Labor by cost code usually needs a time-tracking tool feeding it.

Field service and construction software

Many contractor-focused products include job costing. Jobber’s pricing page lists job costing on its Grow plan and above; Housecall Pro lists job costing on all its plans; construction-focused tools such as JobTread and Contractor Foreman include budgets and job cost reports. They are worth a trial with one real job before you commit.

Close the loop: use actuals in your next estimate

After each job, spend 20 minutes on a closeout review. Compare budget with actual by code, write down why the big variances happened, and update your production rates. Over a year, you build a table of your own numbers: hours per square foot of tile, hours per linear foot of base cabinet, typical materials overrun on bathrooms. That table is worth more than any pricing guide, because it reflects your crews, your customers and your market.

Also track gross margin by job type. If decks average 26 percent and basements average 14 percent, you have a decision to make about what you sell and how you price it.

Common job costing mistakes

Most of these come down to inconsistent data entry rather than bad math.

  • Different categories in the estimate and the books, so nothing lines up.
  • Using wages instead of burdened labor cost.
  • Allocating overhead into job cost, which makes every job look worse and hides the real problem jobs.
  • Ignoring sub commitments and only counting paid bills.
  • Shop stock and leftover materials used without charging them to the job.
  • Reading the report only at the end of the job.
  • Treating over-billings as profit.
  • Never updating production rates, so the same overrun repeats.

If you would rather not do this by hand

If you’d rather not keep job cost spreadsheets yourself and the software you have tried does not match your cost codes, you can describe your own cost codes, timesheets and budget reports to an AI app builder such as Floot and get a small web app with its own database that your crew logs into from their phones.

Frequently Asked Questions

What is job costing in construction?

It is the practice of recording every direct cost (labor, materials, subs, equipment, permits) against the job and cost code that caused it, then comparing actual costs with the estimate and with revenue. It tells you which jobs and which kinds of work make money.

Should overhead be included in job costs?

Generally no. Keep job cost to direct costs and judge jobs on gross profit. Recover overhead through your pricing by applying an overhead percentage to every estimate.

How many cost codes does a small contractor need?

Usually 10 to 15 work categories, each split into labor, materials, subcontract and equipment. Add a code only if knowing that number would change how you estimate.

Can I do job costing in QuickBooks?

QuickBooks Online’s pricing page lists project profitability tracking on the Plus and Advanced plans. Tagging materials and sub bills to a project works well; labor by cost code usually needs time tracking set up to feed it.

What is over-billing?

It is billing a customer more than the value of work earned to date, often measured by percent complete. It is not profit; it is cash you will need to finish the work. Under-billing is the opposite and means you are financing the job.

How often should I review job costs?

Weekly on every active job. A short review with the foreman about hours remaining by cost code catches overruns while you can still write a change order or adjust the crew.

Sources