INDUSTRIES / CONSTRUCTION CONTRACTORS
Construction bookkeeping servicesConstruction bookkeeping.
Know your margin per job, not per year.
Most contractors find out whether a job made money long after the crew has moved on, and by then the next three bids are already priced off a feeling. Bookkeeping for construction companies has to work differently from a standard small-business setup, because a contractor doesn't run one business — it runs a portfolio of small ones, and each job needs its own scoreboard.
Accurate books that still
can't tell you anything
A contractor's books can balance perfectly and still be useless. If every cost lands in one bucket called "materials" and one called "labor," your P&L tells you the company made money last quarter. It will never tell you that the school gym job carried the whole quarter while two residential builds quietly lost twelve thousand dollars each.
That's the difference between recording history and running a business. Contractors don't have one business, they have a portfolio of small ones, and each job needs its own scoreboard.
Then there's the timing problem. Construction revenue rarely matches construction cash. You bill on a schedule, costs land when they land, retainage sits with the customer for months after the work is finished. A cash-basis view of a percentage-of-completion business is a distorted picture, and it's the reason so many contractors feel busy and broke at the same time.
Under-billing is the version nobody notices. You've done $180,000 of work and billed $140,000, so you're effectively lending the customer $40,000 at zero interest while paying suppliers on thirty-day terms. A WIP schedule surfaces that in a fortnight. Without one, you find out when payroll is tight.
What usually goes wrong
- Costs pooled company-wide instead of by job
- No work-in-progress schedule, so over- and under-billing goes unseen
- Retainage recorded as revenue or forgotten entirely
- Change orders done on a handshake and never invoiced
- Subcontractors misclassified, creating 1099 and audit exposure
- Equipment expensed in full instead of depreciated properly
- Books that can't produce what a bonding agent or bank asks for
Bookkeeping from $299/month · Cleanup from $200 per month behind
What construction company bookkeeping
actually requires
Six things separate construction company bookkeeping from a generic small-business setup, and getting any one of them wrong quietly breaks the others: job costing structured around cost codes, a work-in-progress schedule that catches over- and under-billing before it becomes a cash problem, retainage tracked as its own asset and liability rather than blended into ordinary receivables and payables, change orders that make it onto an invoice as reliably as they make it into the field, certified payroll where the work requires it, and a construction management platform that agrees with QuickBooks instead of quietly disagreeing with it. Each one is covered in depth below.
The six pieces
- Job costing: cost codes, committed cost, cost-to-complete
- WIP schedules: percentage of completion, over- and under-billing
- Retainage: receivable, payable, and cash flow
- Change orders: tracked from field to invoice
- Certified payroll and prevailing wage
- Platform reconciliation to QuickBooks
Cost codes, committed cost
and cost-to-complete
Job costing starts with cost codes — a standard list of categories, usually built around something like a simplified CSI MasterFormat structure, that every cost on every job gets tagged against: labor, material, equipment, subcontractor, within a division of work like sitework, concrete, framing or electrical. The same code list is reused across every job, which is what makes job-to-job comparison possible at all. Without it, "concrete" on one job and "foundation" on another are really the same cost hiding under two names, and nothing ever rolls up cleanly.
Committed cost is the piece most bookkeeping setups miss entirely. It's the cost you've obligated yourself to — a signed subcontract, an issued purchase order — but haven't actually paid or even been billed for yet. A job can look profitable on a cash or even accrual basis right up until $40,000 in committed subcontractor cost lands, because nothing recorded that commitment when it was made. Tracking committed cost alongside actual cost is what lets you see a problem while the job is still running rather than after it's closed out.
Cost-to-complete follows directly from the first two. The basic version is arithmetic: estimated cost to complete equals your total estimated cost for the job minus costs incurred to date. The more reliable version re-estimates remaining cost based on what's actually left to do, rather than just subtracting — because a job that's 60% through its budget isn't necessarily 60% through its actual work. Committed cost belongs in this number too: money you've already obligated is money you're going to spend, whether or not it's hit the books yet.
What a cost code structure needs
- One shared code list used across every job, not one per project
- Labor, material, equipment and subcontractor split within each code
- Committed cost recorded when a PO or subcontract is signed
- Cost-to-complete re-estimated monthly, not assumed from budget
Percentage of completion,
over-billing and under-billing
Percentage of completion is the standard method for recognizing revenue on a job that runs longer than a billing cycle, and the formula is straightforward: percent complete equals costs incurred to date divided by total estimated cost, and earned revenue equals that percentage multiplied by the total contract value. A job budgeted at $500,000 in cost against a $600,000 contract, with $300,000 spent so far, is 60% complete and has earned $360,000 in revenue — regardless of what's actually been invoiced.
That gap between earned revenue and actual billing is what a WIP schedule exists to surface. If you've billed more than you've earned, that's billings in excess of costs — over-billing — and it sits on the balance sheet as a liability, because you've been paid for work you haven't done yet. If you've billed less than you've earned, that's costs in excess of billings — under-billing — and it's an asset, because you've done work you haven't been paid for. Using the numbers above: bill $400,000 against $360,000 earned and you're over-billed by $40,000; bill $320,000 and you're under-billed by $40,000, effectively financing the job yourself.
Under-billing is the one that actually causes payroll problems, because it looks like profit on an income statement while behaving like a loan on the balance sheet. A WIP schedule run monthly catches the gap while it's a few weeks old and fixable with a progress bill, rather than three months old and already a cash flow crisis.
What a WIP schedule shows
- Percent complete by job, based on cost incurred versus total estimate
- Earned revenue versus actual billing to date
- Over-billing (a liability) or under-billing (an asset), by job
- Estimated cost to complete and projected final margin
Receivable, payable,
and why it distorts cash flow
Retainage runs in two directions and both need their own line on the balance sheet, not a blend into ordinary receivables and payables. Retainage receivable is money owed to you, held back by the owner or general contractor until substantial completion — sometimes longer, if it's tied to a warranty or punch-list period. Retainage payable is the mirror image: money you're holding back from your own subcontractors under the same logic. Both age differently from ordinary invoices and release on project milestones rather than payment terms, which is exactly why blending them into regular AR and AP makes both reports harder to read and easier to lose track of.
The cash flow distortion follows from the timing. Under percentage of completion, you recognize earned revenue as the work happens — but a real slice of every dollar billed doesn't actually arrive until the retainage releases, often months after the work that earned it. A job can be genuinely profitable on paper and still strain cash for its entire duration, because the profit is real but the cash is deliberately delayed.
Retainage percentages aren't universal — they're set by contract, and increasingly by state law. California, for example, has capped retainage on public works at 5% since around 2012 under Public Contract Code §7201, and a new law — Civil Code §8811, added by Senate Bill 61 — extends a 5% cap to many private construction contracts entered into on or after January 1, 2026. Other states set their own caps, or none at all, so what applies to your contract depends on your state and your contract type, not a single national rule. Outside of statutory caps, 5% to 10% is the range we most commonly see negotiated in private contracts — often 10% on early progress payments, stepped down to 5% at substantial completion — which is a market observation from the contracts we work from, not a surveyed industry average.
Why retainage needs its own accounts
- Retainage receivable and payable age on different milestones than ordinary AR/AP
- Blended into regular receivables, retainage overstates how collectible your AR actually is
- Release terms vary by contract and increasingly by state law
- Cash flow planning has to account for the lag separately from earned revenue
Why unapproved change orders
wreck margin reporting
Change orders break job costing in a specific, predictable way. A crew starts extra work on a verbal go-ahead — a foreman says "just do it" — days or weeks before it's formally priced and signed. The cost of that work hits the job immediately. The contract value it's supposed to be billed against doesn't move until the change order is approved and invoiced, sometimes much later. In the meantime, cost-to-date has gone up with no matching increase in contract value, which drags down percent complete and earned revenue on a job that's actually fine — it just has unbilled work sitting in limbo.
The reverse happens when the change order finally gets approved: contract value jumps, margin appears to recover, and the job looks like it improved for reasons that have nothing to do with how the work actually went. Neither swing reflects real performance. Both are an artifact of change orders that existed in the field before they existed on paper.
The fix is procedural, not an accounting trick: log every change the day work starts, not the day it's signed, with a status field — pending, approved, invoiced — so the WIP schedule can at least show pending change order value as a known gap rather than a mystery. Crews shouldn't start meaningfully-scoped extra work without some documented authorization, even informal, that gets formalized within days rather than at the end of the job.
Where change orders usually go wrong
- Work starts before pricing is agreed or documented
- No status tracking between "requested," "approved" and "invoiced"
- Verbal approvals never converted to paper before the job closes
- Change order revenue left out of the WIP schedule entirely
Certified payroll
and prevailing wage
Federally funded construction work is generally subject to the Davis-Bacon Act, which requires contractors and subcontractors to pay at least the locally determined prevailing wage for each trade classification and to submit certified payroll reports — historically on federal Form WH-347 — for every week worked on the project. Prevailing wage isn't one number; it's set per trade, per county, and can be paid partly as cash wage and partly as bona fide fringe benefits such as health insurance or pension contributions, which affects how payroll should actually be coded rather than just what it totals.
Many states run their own version of Davis-Bacon — sometimes called "little Davis-Bacon" acts — extending similar prevailing wage and certified payroll requirements to state- and locally-funded public work, with their own forms and thresholds. Whether a given job is covered depends on the funding source and your state's specific rules, which is worth confirming before bidding rather than after the first payroll audit.
Misclassifying a worker's trade, or splitting fringe benefit credit incorrectly between cash and benefits, is where most certified payroll problems actually originate — not underpayment on purpose, but a classification that doesn't match what the worker actually did on site that week.
What certified payroll requires
- Weekly certified payroll reports for the life of a covered project
- Correct trade classification for every worker, every week
- Fringe benefits tracked separately from cash wage
- A signed statement of compliance filed with each report
Reconciling Procore, Buildertrend
or Sage to QuickBooks
Construction management platforms — Procore, Buildertrend, CoConstruct, Sage 100 Contractor — hold job-level detail that QuickBooks was never built to track on its own: budgets by cost code, committed cost against open purchase orders and subcontracts, change order status, and draw schedules. QuickBooks holds the general ledger and the actual cash movement. When the two aren't reconciled monthly, they drift apart quietly, and the WIP schedule built from whichever one looks more complete ends up wrong in whichever way the other one was right.
A realistic version of the gap: the platform shows $85,000 in job costs incurred for the month across all active jobs. QuickBooks shows $81,500 in matching bills and payroll. Tracing the $3,500 difference, $2,800 turns out to be a subcontractor draw approved in the platform but not yet entered as a bill in QuickBooks — the work happened, the commitment is real, but the liability isn't booked yet. The remaining $700 is a change order cost logged against a job in the platform before it was formally priced, with no corresponding contract value adjustment on either side. Neither is fraud or carelessness; both are exactly the kind of timing gap that monthly reconciliation exists to catch before it compounds across a dozen jobs and six months.
What monthly reconciliation checks
- Job costs incurred in the platform against bills and payroll in QuickBooks
- Committed cost (open POs, subcontracts) against what's actually been booked
- Change order status against contract value used in the WIP calculation
- Draw schedules and retainage held against the corresponding GL accounts
Sourced, calculated,
and market observation
Same rule as our HVAC bookkeeping guide: what follows is labeled as sourced, calculated from a sourced figure, or market observation — and where we couldn't confirm a number against a source we'd stand behind, we've left it out rather than guessed.
Labor cost basis. The U.S. Bureau of Labor Statistics puts the median wage for Construction Laborers and Helpers at $46,680 a year in its May 2025 Occupational Employment and Wage Statistics — about $22 an hour. That's base wage only; a true loaded rate adds payroll tax, workers' comp (which runs unusually high in construction relative to most trades, and varies enormously by state and by the specific work) and any benefits, and we don't have a reliable industry-wide burden multiplier to turn that into one number, so we're not inventing one.
Retainage percentage. Covered above: California's statutory caps are sourced and specific to that state; the commonly-negotiated 5–10% range elsewhere is market observation from contracts we've actually worked from, not a cited survey.
What we won't state as fact. Numbers claiming a "typical" WIP over- or under-billing swing, a standard percentage of margin lost to unapproved change orders, or industry-average gross margin by trade circulate widely in construction accounting content online. We looked for the original, checkable studies behind those figures and didn't find them — they trace back to marketing content citing other marketing content, not a named survey with a methodology. So we're not repeating them here.
Every client gets
- Replies within 48 hours, guaranteed
- Books closed by the 15th, every month
- Flat monthly pricing, no hourly billing
- A plain-English summary with every report
- The same team every single month
- Cancel any time, files handed over cleanly
You'll recognise this if...
None of these mean anything is broken. They mean the books were set up to satisfy a tax return rather than to run a business, which is the normal starting point.
You bid off feel
You price the next job from experience rather than from what the last three like it actually returned.
Retainage is a mystery
You know money is being held somewhere but couldn't say how much or by whom without ringing round.
The bank asked for a WIP
Someone requested a work-in-progress schedule and it took a week and a spreadsheet to produce something approximate.
Good year, no cash
The P&L says the year went well and the bank account disagrees, and nobody can explain the gap.
What it looks like
three months in
By the second month you'll have a job cost report you actually read. Not a spreadsheet somebody maintains reluctantly — a monthly view showing which jobs are tracking to estimate, which are slipping, and by how much.
By month three you'll have enough history to bid differently. Most contractors discover the same two things: one category of work is far less profitable than they assumed, and one crew or foreman consistently comes in under estimate. Both are worth knowing before the next bidding season.
You'll also have a WIP schedule you can hand to a bonding agent or a lender without a week of scrambling. That alone has widened the jobs some of our clients can go after.
And you'll stop being surprised in April. Tax planning happens during the year — equipment timing, entity structure, how you pay yourself — so the bill is something you saw coming rather than something that happened to you. This is what our monthly bookkeeping is actually built to produce, month after month, not just at year-end.
BOOK A FREE CALLEvery client gets
- Replies within 48 hours, guaranteed
- Books closed by the 15th, every month
- Flat monthly pricing, no hourly billing
- A plain-English summary with every report
- The same team every single month
- Cancel any time, files handed over cleanly
Construction bookkeeping questions
Actual cost is what's been paid or billed. Committed cost is what you've obligated yourself to through a signed subcontract or purchase order but haven't been billed for yet. Tracking both is what lets you see a cost overrun coming before it hits the books.
Costs incurred to date divided by total estimated cost gives percent complete; multiply that by the total contract value to get earned revenue. We recalculate this monthly for every active job, not just at year-end.
It gets its own accounts. Retainage receivable and retainage payable are tracked separately from ordinary AR and AP, because they age against project milestones rather than payment terms and release on a different schedule entirely.
Yes. Cost hits the job as soon as work starts, but contract value doesn't move until the change order is priced and approved — so an unapproved change order makes a fine job look like it's losing margin until the paperwork catches up.
Not automatically — it depends on the funding source and your state's rules. Federally funded work is generally covered by the Davis-Bacon Act; many states extend similar requirements to state-funded projects under their own "little Davis-Bacon" laws. We'll help you confirm what applies before you bid.
Yes, monthly. Job costs, committed cost and change order status in the platform get checked against bills, payroll and contract value in QuickBooks, which is where most of the real discrepancies get caught.
No. Bookkeeping for small construction business owners doesn't need to look different in kind, just smaller in scale — it still needs the same job costing and WIP structure as a larger contractor, just fewer jobs running at once. If you're a few months behind getting there, catch-up bookkeeping is a separate one-time project, priced before we start.
Find out what your jobs
are actually making
Thirty minutes, no pitch. We'll look at your current books, show you what job costing would reveal that you can't see today, and quote a flat monthly price.
BOOK YOUR FREE CALL