← Back to blog

Job Costing Setup for Small Trade Firms: Practical Checklist

July 27, 2026
Job Costing Setup for Small Trade Firms: Practical Checklist

To start reliable job costing at your specialty trade firm, do four things today: create a project container in your accounting software, build a list of 15–30 cost codes matched to your estimate template, set your burdened labor rate, and enforce weekly timecard tagging to job codes. Within 30–60 days, you will have usable cost-to-complete numbers and weekly variance alerts that tell you whether a job is bleeding before it closes.

Here is what to do in the next 24 hours:

  • Turn on Projects (QuickBooks Online Plus/Advanced) or the equivalent job container in your accounting system
  • Build two-sided items in QuickBooks: each item links a sales price to a cost account so margin calculates at the item level, not just at the P&L
  • Enforce timecard tagging: every hour logged must reference a project code and a cost code — no exceptions
  • Enter open POs and signed subcontracts as committed costs so your projected cost at completion is accurate from day one

That is the whole setup in skeleton form. The rest of this guide fills in the detail, trade by trade, step by step.


Table of Contents

Why job costing changes how you run a trade firm

Most small trade firms run their financials off a P&L. The P&L tells you whether the company made money last month. It does not tell you which jobs made money, which ones lost it, or why. That distinction is the difference between job costing and ordinary bookkeeping.

Job costing is a management accounting discipline. It assigns every dollar of cost to a specific job so you can compare what you estimated against what you actually spent, while the job is still running. Project accounting is a broader term that often refers to revenue recognition and WIP schedules. Job costing is narrower and more operational: it is the weekly habit of tracking variance so you can act on it.

The difference between discovering a $15,000 overrun at job closeout versus week three is the difference between absorbing a loss and fixing it. Weekly variance tracking is what makes that detection possible — not the software, not the chart of accounts, but the discipline of comparing estimated to actual costs every single week.

Two scenarios illustrate the stakes. An HVAC firm finishes a commercial retrofit and invoices the GC, then runs the job cost report. Labor ran 22% over. The job lost $11,000. Nothing can be done. Contrast that with a plumbing crew that checks budget versus actual every Friday: by week three they see labor trending 18% high on rough-in, pull in a second journeyman for two days, and close the job within $2,000 of estimate. Same trade, same type of job, completely different outcome. The only variable is when the data surfaced.

Job cost reports also drive three specific decisions that a P&L cannot: whether to write a change order, whether to reassign crew, and whether your bid price for the next similar job is right.


What costs you must capture on every job

Every dollar that touches a job falls into one of six direct cost buckets. Miss any one of them and your projected cost at completion will be wrong.

  • Labor (burdened): base wages plus payroll taxes, workers' comp, general liability (labor portion), benefits, PTO, and small tools. Burdened labor rates for trade workers typically run 30–50% above base wages. A framer at $30/hr often costs $42–$45/hr fully burdened.
  • Materials: purchased materials and consumables tagged to the job at the point of purchase, not at month-end.
  • Subcontractors: payments to lower-tier subs, including retention withheld.
  • Equipment: owned equipment at an internal rate per hour or day; rented equipment at invoice cost. See the equipment costing guide for how to set internal rates.
  • Permits and fees: pulled at the job level, not lumped into overhead.
  • Change orders and allowances: tracked as separate line items so you can see margin on base scope versus approved changes.

Overhead is different. It is the cost of running the business — office rent, insurance not tied to a specific job, admin salaries, and vehicles not assigned to a single project. Allocate overhead to jobs using a simple rate: divide total annual overhead by total annual direct labor hours to get an overhead rate per labor hour, then multiply by hours worked on each job. Alternatively, use a percentage of direct cost (a common range is 10–20%, depending on your firm's cost structure). The exact rate matters less than applying it consistently.

Committed costs are where most small firms get burned. A committed cost is a PO you have issued or a subcontract you have signed but not yet paid. If your roofing crew has $40,000 in material POs outstanding and you only look at costs to date, your job looks healthier than it is. The formula that matters is:

Projected Cost at Completion = Costs to Date + Committed Costs + Estimated Cost to Complete

A job showing $20,000 of apparent budget remaining based on costs-to-date alone may already be $5,000 over once committed costs are added. That is not a rounding error. That is a profit wipeout hiding in plain sight.


How to set up job costing step by step

Infographic showing job costing setup steps

Step 0: Prepare before you build anything

Gather your standard estimate template, pull three recent completed jobs, and schedule a 90-minute alignment meeting with your estimator, PM, and bookkeeper. That meeting is the single most important step in the entire setup. Skipping it is the most common reason bid-to-actual comparisons fail: the estimator uses one set of line items, the bookkeeper posts to different accounts, and the reports never match.

Step 1: Create the job container

In QuickBooks Online Plus or Advanced, turn on Projects. Every active job gets its own project. Every transaction — bills, timesheets, credit card charges, POs — must be tagged to that project before it is saved. No project tag means the cost disappears from job reporting.

Hands typing on laptop keyboard in office

Step 2: Build your cost-code structure

Cap your list at 15–30 codes. MasterFormat has 600+ divisions. You do not need that. You need a list short enough that a foreman can remember it and consistent enough that the estimator, PM, and bookkeeper all use the same codes. A sample structure for a small specialty trade firm appears in the Templates section below.

Three rules for your code list: keep it short, keep it consistent across every job, and use one code set for everyone on the team.

Step 3: Create two-sided items in QuickBooks

In QuickBooks, go to Products & Services and create an item for each cost category (Labor, Materials, Equipment, Subcontractors, Permits). Each item must have both a sales price (income account) and a cost (expense account). This is what allows QuickBooks to calculate margin at the item level, not just at the company level. Posting expenses directly to accounts without using items breaks the margin calculation.

Step 4: Set your burdened labor rate

Calculate once per year, update when insurance or benefit costs change materially. The formula:

Burdened Rate = Base Wage × (1 + Burden Multiplier)

Overhead of hands reviewing labor cost sheet

Where the burden multiplier covers FICA, FUTA/SUTA, workers' comp, general liability (labor share), health insurance, PTO, and small tools. For most trade workers, that multiplier runs 0.30–0.50. Enter this rate as the cost on your Labor item in QuickBooks so every timesheet hour carries the right cost.

Step 5: Define your committed-cost workflow

Every PO issued and every subcontract signed gets entered into the system immediately, tagged to the job and cost code. In QuickBooks, use Purchase Orders linked to the project. In a trade-focused field app, use the PO or commitment module and sync to QuickBooks. The rule: if you have obligated money, it is a committed cost, and it must appear in your cost-to-complete report.

Step 6: Pilot on one job, then scale

Run the new structure on a single active job for the first 30 days. Debug code usage, find where the team is mis-tagging, and fix the workflow before rolling out to all active projects. After one weekly entry cycle, run your first cost-to-complete report. If the numbers look wrong, trace the problem to the entry point — almost always a missing project tag or a cost posted to the wrong code.

Sample cost-code structure for a small specialty trade firm:

CodeDescriptionCost Type
Project Management / SupervisionLabor
Foreman LaborLabor
03Journeyman / Installer LaborLabor
Apprentice / Helper LaborLabor
05Overtime PremiumLabor
10Primary MaterialsMaterials
11Consumables / Small MaterialsMaterials
12Special-Order / Long-Lead MaterialsMaterials
20Subcontractor — Scope ASubcontractor
21Subcontractor — Scope BSubcontractor
30Owned EquipmentEquipment
31Rented EquipmentEquipment
40Permits and FeesOther Direct
InspectionsOther Direct
50Change Order — LaborChange Order
51Change Order — MaterialsChange Order
60AllowancesAllowance
Overhead AllocationOverhead

Customize codes 20–21 for your trade. An electrical firm might split materials into conduit/wire, devices, and gear. A drywall firm might split labor into framing, hang, tape, and finish. Keep the total under 30.


How to capture field data without losing your foremen

The most common reason job costing fails is not bad software. It is that the system was designed by someone who understands accounting but has never run a field crew. Implementation fails when accountants design systems without field input. The foreman does not care about cost codes. He cares about getting his crew paid and getting off the job site by 4 PM.

The principle: make entry as close to zero friction as possible for the field, and put the reconciliation burden on the office.

Practical capture methods:

  • Daily or weekly timecards: use a mobile app with pre-loaded project codes and cost codes. The foreman selects the job from a dropdown, selects the phase (e.g., "03 — Journeyman Labor"), and enters hours. That is it. No free-text fields, no manual code lookup.
  • Invoice and receipt tagging: field staff photograph receipts with a mobile app that routes the image to the bookkeeper with a job tag already attached. The bookkeeper codes the expense; the field just captures it.
  • PO entry rules: the PM enters every PO before materials are ordered. No PO, no order. That rule alone closes the committed-cost gap.

A 30–60–90 day adoption plan by role:

  • Days 1–30: estimator and PM build codes, enter pilot job, run first report. Bookkeeper maps all existing transactions to the new structure.
  • Days 31–60: foremen start using mobile timecards on the pilot job. PM reviews tagging weekly and corrects misuse. Bookkeeper confirms PO workflow is running.
  • Days 61–90: roll out to all active jobs. Weekly review routine becomes standard. Adjust any codes that are being consistently misused.

Pro Tip: Pre-fill the project code and cost code on every timecard before the foreman opens the app. If a concrete crew is on one job all week, their timecard should open with that job and "03 — Journeyman Labor" already selected. They confirm and submit. That single change cuts entry time from three minutes to thirty seconds and dramatically improves compliance.

Crew productivity tracking and timecard collection methods vary by trade, but the principle is the same: reduce the number of decisions the foreman has to make at entry.


What software features your firm actually needs

QuickBooks Online Plus or Advanced already has the core tools most small trade firms need if configured correctly. The four-step configuration: turn on Projects, build two-sided items, tag every transaction to a project, and add Classes for cross-cut reporting (by trade type, region, or crew).

Minimum feature checklist for any job costing software:

  • Projects or jobs container that ties transactions to a job
  • Two-sided items (sales price + cost account) for margin calculation at item level
  • Purchase order or commitment tracking linked to the job
  • Time capture tied to job and cost code (not just to employee)
  • QuickBooks sync or a native ledger that produces a P&L by job

Questions to ask any vendor before you buy:

  • "Can you show me a committed cost report that includes POs not yet invoiced?"
  • "How do you handle burdened labor rates — do I enter a cost rate per employee, or does it calculate from payroll?"
  • "If I change a cost code mid-job, what happens to historical entries?"
  • "Does your QuickBooks sync push transactions or pull them, and how often does it run?"

QuickBooks Plus is sufficient for most firms under $3M in revenue with a single trade type and a bookkeeper who can manage weekly entry. When a trade-focused layer makes sense: your firm runs multiple crews on multiple jobs simultaneously, you need field-to-office PO approval workflows, or your foremen will not use a desktop interface. In those cases, a field app that syncs to QuickBooks handles capture while QuickBooks handles the ledger.

One recurring maintenance task that trips up firms: item cost values in QuickBooks go stale. If lumber costs jump 30% and you do not update the cost on your Materials item, your margin calculations will be wrong for every job until you fix it. Review item costs at least quarterly, or whenever a major material price shift hits your trade.

For a broader comparison of job costing tools for specialty trades, the key is not which platform has the most features — it is which one your team will actually use every week.


Your weekly review routine and the KPIs that matter

The weekly review should take 20–30 minutes. Run it every Friday or Monday morning. The PM or owner runs it; the bookkeeper confirms all entries are current before the review starts.

Five reports to run every week:

  1. Budget vs. Actual by cost code: where are you over or under on each code?
  2. Committed costs: what POs and subcontracts are outstanding?
  3. Projected cost to complete: what will this job cost when done?
  4. Labor hours vs. plan: are you burning hours faster than the estimate assumed?
  5. Unbilled costs: what has been spent that has not yet been invoiced to the GC?

The five-column cost-to-complete layout every PM should use:

ColumnWhat It Shows
Original EstimateWhat you bid for this cost code
Costs to DateWhat has been posted and paid
Committed CostsPOs issued, subcontracts signed, not yet invoiced
Estimated Cost to CompleteYour best forward-looking estimate to finish
Projected Variance(Estimate) minus (Costs to Date + Committed + ETC)

A negative projected variance means you are trending over budget. That number is the trigger for action, not a data point to note and move on.

KPI definitions:

  • Gross margin by job: (Job Revenue minus Job Cost) divided by Job Revenue. Track this weekly on active jobs, not just at closeout.
  • Labor productivity: actual hours divided by planned hours for a defined unit of work (e.g., hours per 100 linear feet of conduit, hours per square of roofing). This is the leading indicator — it moves before the dollar variance does.
  • Burn rate: costs incurred per week versus the planned weekly spend rate. A burn rate running 20% above plan in week two is a warning sign.
  • Backlog-to-capacity: total contracted revenue remaining divided by your weekly production capacity. Tells you whether you are over- or under-booked.

When the projected variance column turns negative, you have three levers: write a change order if the scope has grown, reassign or add crew if the labor productivity problem is fixable, or negotiate with a supplier if materials are running over. Job profitability does not manage itself. The weekly review is the mechanism.


How long setup takes and what it costs

A realistic timeline for a small trade firm starting from scratch:

  • Day 1 (Preparation): alignment meeting, gather estimate template and three sample jobs, confirm software access
  • Days 2–3 (Build): create cost codes, set up QuickBooks Projects and items, enter burdened labor rates
  • Days 4–30 (Pilot): run the new structure on one active job, fix tagging errors, run first cost-to-complete at end of week one
  • Days 31–60 (Reliable data): roll out to all active jobs, weekly review routine in place, first meaningful budget-vs.-actual comparisons available
  • Days 61–90 (Troubleshoot): adjust overhead allocation, fix any persistent code misuse, confirm the bookkeeper and PM are aligned on entry timing

Typical cost ranges:

  • Internal time: 20–40 hours total across estimator, PM, and bookkeeper for setup and first-month training
  • Bookkeeping cleanup: if your books are not current, budget $500–$2,000 for a bookkeeper to reconcile and reclassify transactions before the pilot starts
  • QuickBooks Online Plus: approximately $85/month (pricing subject to change; verify current rates at intuit.com)
  • Trade-focused field app add-on: typically $50–$200/month depending on crew size and features

The 90-day failure mode is real. Most job costing setups that collapse do so because they were built by people who understand accounting but not field operations. The fix is the alignment meeting at day one and a pilot job before full rollout. Those two steps alone cut the failure risk dramatically.

For context on how your firm's size and structure affect setup complexity, the small contractor classification guide covers financial and operational considerations relevant to firms in the $500K–$15M revenue range.


Common job costing mistakes and how to fix them

Too many cost codes. A 60-code structure that mirrors MasterFormat looks thorough and produces garbage data because nobody uses it consistently. Fix: cap at 15–30 codes, period.

Estimate and tracking codes do not match. The estimator builds a bid with eight line items. The bookkeeper posts to 12 accounts. The PM tracks four phases. Nobody can compare bid to actual. Fix: the alignment meeting maps every estimate line to a cost code before the job starts. One code set, used by everyone.

Tagging inconsistency. If the team does not tag transactions at entry — bills, labor hours, credit card charges — reports are inaccurate regardless of software investment. Fix: make tagging mandatory at the point of entry, not at month-end. No tag, no payment approval.

Overhead posted as job costs. Office rent, admin salaries, and company vehicles show up inside individual job reports, inflating job costs and making every job look worse than it is. Fix: keep overhead in its own accounts and allocate it via a rate, not by direct posting.

Ignoring committed costs. Reporting only costs-to-date gives a false picture of available budget. Fix: enter every PO and subcontract as a committed cost the day it is issued.

Trade-specific examples:

  • Electrical: tracking device counts (outlets, panels, fixtures) as a productivity metric is useful, but only if the cost code structure separates rough-in labor from trim-out labor. Lumping them together hides which phase is running over. See electrical contractor job costing mistakes for a full breakdown.
  • Drywall: crew sequencing matters. If hang and tape crews overlap on the same cost code, labor allocation becomes meaningless. Split hang, tape, and finish into separate codes even if it adds three lines to your list.

Sample templates and worked examples

Sample cost-code table for small specialty trades

The 18-code table in the Step-by-Step Setup section above is your starting point. Customize it for your trade by splitting the materials codes to match your primary material categories (wire and conduit for electrical; pipe and fittings for plumbing; board and compound for drywall).

Worked example 1: Calculating burdened labor rate

An HVAC journeyman earns $38/hr base wage. Burden items:

Burden ItemRate$/hr
Workers' comp$3.—
PTO (10 days/yr)~4%
Burdened total$51.81

The burden multiplier here is approximately 0.36, meaning the fully burdened rate is 36% above base wage. Enter $51.81 as the cost rate on the Labor item in QuickBooks. Every timesheet hour for this journeyman now carries the correct cost automatically.

Worked example 2: Cost-to-complete on an in-progress job

A low-voltage firm is three weeks into a $120,000 commercial job. Here is the snapshot:

Amount
Original estimate$96,000 (cost)
Costs posted to date$31,200
Projected variance($5,700) over

The job looked fine on a costs-to-date basis ($31,200 against a $96,000 budget). Once committed costs and the forward estimate are added, it is trending $5,700 over. That is the number the PM needs to act on now, not at closeout.

What to do with that number:

  • Review the open POs: are any negotiable or reducible?
  • Check labor productivity on the remaining scope: is the ETC realistic or optimistic?
  • Determine whether any scope additions qualify for a change order

The job profitability math behind these calculations is straightforward once the data is clean. The hard part is getting the data clean in the first place, which is why the setup steps above matter.


Job costing intersects with several legal and regulatory requirements that small trade firms need to handle correctly.

IRS requirements for job cost records. The IRS requires businesses to maintain records that substantiate deductions. For trade firms, that means keeping documentation for every cost posted to a job: invoices, receipts, signed subcontracts, and payroll records. The IRS Publication 583 covers recordkeeping requirements for small businesses. The general rule is to keep records for at least three years from the date you filed the return, or two years from the date you paid the tax, whichever is later.

Percentage-of-completion and completed-contract methods. If your firm has average annual gross receipts over $30 million (for tax years beginning in 2026, per IRS thresholds), you are generally required to use the percentage-of-completion method for long-term contracts. Most small specialty trade firms fall below this threshold and may use the completed-contract method, but the choice affects when you recognize income and how WIP is reported. Confirm your method with your CPA.

Prevailing wage and certified payroll. If your firm works on federally funded or state-funded public works projects, Davis-Bacon Act requirements (federal) or state prevailing wage laws apply. These mandate specific wage rates by trade classification and require certified payroll reports. Your job costing system must track hours by trade classification, not just by employee, to produce accurate certified payroll. Misclassifying a journeyman as an apprentice on a prevailing wage job is a compliance violation, not just a bookkeeping error.

Workers' comp audits. Workers' comp premiums are calculated on payroll by job classification. If your job costing system tracks hours by cost code and trade classification, your annual workers' comp audit becomes straightforward. If it does not, you risk misclassification and premium adjustments that can run into thousands of dollars.

Sales tax on materials. In most U.S. states, materials incorporated into a construction project are subject to sales tax at purchase. Some states have exemptions for materials sold to a contractor for resale. The rules vary by state and by contract type (lump-sum vs. time-and-material). Your job costing system should track material purchases separately from labor so your accountant can apply the correct tax treatment.

This article is general information, not legal or tax advice. Confirm current IRS thresholds, prevailing wage requirements, and state tax rules with a qualified CPA or attorney for your specific situation.


Key Takeaways

Setting up job costing for a small trade firm requires a simplified cost-code structure, a cross-functional alignment meeting, burdened labor rates, and a weekly review routine — all running before you can trust the numbers.

PointDetails
Start with 15–30 cost codesCap your code list so estimators, PMs, and bookkeepers all use the same structure consistently.
Run the alignment meeting firstMap every estimate line to a cost code before the first job goes live — skipping this step breaks bid-to-actual tracking.
Include committed costsAdd open POs and signed subcontracts to your projected cost at completion or your budget picture is wrong.
Set burdened labor ratesBurdened rates run 30–50% above base wages; enter the correct cost rate in QuickBooks before any timesheets are posted.
Pilot on one job firstDebug tagging and entry routines on a single project before rolling out to all active jobs.

What actually works — a practitioner's view

The conventional wisdom on job costing says: get the right software, build a clean chart of accounts, and the data will follow. That is backwards. The data comes from people, not systems. A foreman who does not understand why he is tagging hours to a cost code will find the path of least resistance — which is usually the wrong code or no code at all.

Three things that actually move the needle:

First, the alignment meeting is not optional and it is not a one-time event. The first meeting maps estimate lines to cost codes. The second meeting, six weeks later, reviews what the team actually used versus what was planned and fixes the gaps. Most firms hold the first meeting and skip the second. That is why the data drifts.

Second, the weekly review habit is more valuable than any report. A PM who spends 25 minutes every Friday looking at budget versus actual on active jobs will catch problems that a monthly review misses entirely. The cadence matters more than the sophistication of the report. A simple five-column spreadsheet reviewed every week beats a complex dashboard reviewed once a month.

Third, the estimator and bookkeeper need to be in the same room at least once before a job starts. When the estimator builds a bid with six labor phases and the bookkeeper posts all labor to one account, the comparison is impossible. That misalignment is not a software problem. It is a communication problem, and it costs real money on every job.

One practical trade-off worth naming: if you are choosing between a perfect cost-code structure that nobody uses consistently and a simpler structure that the whole team follows, take the simpler one every time. Consistent imperfect data is more useful than perfect data that exists only in theory. You can refine the codes once the habit is established. You cannot refine a system that the field has already abandoned.


Useful sources and further reading

A short list of resources for deeper setup guidance and specialist topics:

  • Job costing explained for trade contractors — Subascent: broad primer on job costing concepts tailored specifically to specialty trade subs; good starting point before building your code structure.
  • Job costing software for specialty trades — Subascent: covers recurring workflows and what to look for when evaluating field-to-ledger tools.
  • Why subs lose money on jobs — Subascent: eight specific profit killers with fixes; pairs well with the pitfalls section above.
  • Crew productivity tracking on job sites — Subascent: practical methods for timecard collection and labor hour tagging by trade.
  • Job costing for contractors: labor burden, cost codes, and committed costs — Beancount.io: detailed treatment of burden rate calculation, cost-code design, and committed-cost reporting; useful for the formulas in the templates section.
  • Construction job costing setup — The Construction CFO: covers the alignment meeting methodology and the 90-day failure mode in depth; recommended for owners setting up from scratch.
  • Job costing in QuickBooks without buying extra software — Accounting Fresh: step-by-step QuickBooks configuration for contractors; covers Projects, two-sided items, and tagging discipline.
  • How to improve your construction estimating process — R Construction Solutions: covers estimating workflow improvements that feed directly into bid-to-actual mapping; useful for the alignment meeting prep.
  • Subascent: if you want help implementing job costing at your specialty trade firm, Subascent builds tools and workflows specifically for electrical, plumbing, HVAC, drywall, roofing, and other specialty subs.