Home / Blog / Industry Guides
Industry Guides

Bookkeeping for Contractors and Construction Businesses: The Complete Guide

EGBy Erick Gamez
·July 18, 2026·11 min read

You know what is in your bank account today. What you probably cannot answer is the question that actually runs a construction business: did that job make money? Most contractor books track cash in and cash out, which works fine for a coffee shop but falls apart the moment your work spans months and your costs show up long before the customer pays.

This guide walks through the bookkeeping that construction really needs. We will follow one Mesa kitchen remodel from first receipt to true profit, then cover progress billing, retainage, subcontractor paperwork, and when it makes sense to hand the whole thing off.

Why Contractor Books Break the Normal Rules

A regular small business buys something, sells it, and gets paid, all in the same week. Construction does not work that way. A job can run three months. Money arrives in chunks, a deposit up front, a draw in the middle, a final payment weeks after the crew leaves. And your costs land early. You are buying lumber and paying framers in week one, long before the customer sends a dime.

That timing gap is why generic bookkeeping lies to a contractor. In a plain profit and loss statement (a report that shows income minus expenses over a period, also called a P&L), a big material buy makes a great month look like a loss, and a final payment makes a slow month look like a windfall. Neither is true. If you want a refresher on the report itself, we break it down in how to read your P&L line by line.

Meet our example. Maria runs a remodeling shop in Mesa. She just landed a $45,000 kitchen remodel. Her bank balance looks healthy because the customer paid a deposit, but that number tells her nothing about whether this job will pay her. We will fix that.

Job Costing: Know Your Profit on Every Job

Job costing means tagging every dollar of cost to the specific job that caused it. In QuickBooks Online you do this by setting up each project as a customer or a sub-customer, then attaching every bill, material receipt, labor hour, permit, and equipment charge to that job. Do it as the money moves, not in a pile at year end.

Here is Maria's kitchen, line by line.

  • Cabinets and countertops: $14,000
  • Other materials (tile, fixtures, drywall, paint): $6,500
  • Labor, 220 hours at a burdened cost of $38 an hour: $8,360
  • Subcontractors (electrician and plumber): $7,200
  • Permits: $650
  • Equipment rental and dumpster: $900

Total job cost is $37,610. Against the $45,000 contract, Maria's true job profit is $7,390, a margin of about 16 percent. That is the number no bank balance could ever show her, and it is the number that tells her whether to keep bidding kitchens this way.

Labor burden is bigger than the wage

Notice that labor line used $38 an hour, not the $27 wage Maria actually pays her lead carpenter. The difference is labor burden (the real cost of an employee once you add everything on top of the paycheck). Add the employer share of payroll taxes, workers comp insurance, general liability, and paid downtime like drive time and slow days. For most East Valley trades that turns a $27 wage into $36 to $40 of real cost per hour. If you job-cost at the raw wage, every job looks more profitable than it is.

Pro tip. Build one burdened labor rate per crew member and use it on every estimate and every job cost entry. Getting that rate right is the same math we walk through in how to price a job for profit, and it is the single fastest fix for a contractor who feels busy but broke.

Progress Billing and Deposits Done Right

On a long job you bill in stages, not all at the end. That is progress billing, invoicing by milestone (foundation done, rough-in done, final) or by percent complete. It keeps cash flowing while the work runs.

The trap is the deposit. When Maria collects a $10,000 deposit before she buys a single cabinet, that money is not income yet. She has not earned it. Booked correctly, a deposit sits as a liability (money you owe as work, not money you have made) and turns into income only as you complete the work. Record it as instant revenue and your P&L throws a party in month one, then crashes in month three when the costs hit and no new income comes in.

This is also where overbilled and underbilled amounts come in. If you have billed the customer more than the work you have finished, you are overbilled, and that extra is not profit. If you have done more work than you have billed, you are underbilled, and real earnings are hiding off the report. Tracking both is what keeps the P&L honest in the middle of a job instead of swinging wildly from month to month.

Retainage: The Money You Earned but Cannot Touch

On bigger jobs, especially commercial and general-contractor work, the customer holds back a slice of every payment until the whole job is signed off. That holdback is retainage, usually 5 to 10 percent. You earned it, but you cannot touch it yet.

The fix is simple: track retainage as its own receivable (money owed to you), separate from your regular invoices. If it just blends into normal accounts receivable, it quietly gets forgotten, and forgotten retainage is money you never collect.

Watch how fast it adds up. Say Maria is running three jobs and the customers hold 8 percent on each.

  • Job A, $120,000 contract, 8 percent held: $9,600
  • Job B, $60,000 contract, 8 percent held: $4,800
  • Job C, $45,000 contract, 8 percent held: $3,600

That is $18,000 of money she has earned sitting just out of reach. If she does not track it and chase it, she can be fully booked and still short on cash, which is exactly the trap we describe in profitable but no cash.

Watch out. Retainage often comes with a deadline and a punch list. If you lose track of which jobs are complete and eligible, that $18,000 can sit for a year. A simple retainage report you review every month keeps it from slipping.

Subcontractors, 1099s, and Staying Compliant

If you pay subs, the paperwork matters as much as the payment. Two habits keep you out of trouble.

Collect the W-9 before the first check

A W-9 is the form that gives you a sub's legal name and tax ID. Get it signed before you pay them the first time, not scrambling in January. A sub who has already been paid and moved on is a lot harder to chase for a form.

Know which payments need a 1099-NEC

Generally, if you pay an unincorporated subcontractor $600 or more in a year for services, you owe them and the IRS a 1099-NEC (a form reporting what you paid a non-employee). Payments made by credit card or a payment app are usually reported by the processor instead, so those come off your list. The forms are due at the end of January, and that deadline sneaks up every single year.

Note. Arizona also has transaction privilege tax (TPT), the state's version of sales tax, and prime contracting has its own special rules for who owes it and on what. The details depend on your projects, so confirm your specific situation with a tax professional. We cover the basics in the Arizona TPT guide. GGS handles the bookkeeping and CFO side, and tax filing runs through our licensed CPA partners.

Cash vs Accrual, and When to Hand It Off

Two ways to keep books. Cash basis records income when the money lands and expenses when you pay them. Accrual basis records income when you earn it and expenses when you incur them, even if no cash has moved. For a contractor, accrual is what makes job costing, progress billing, and retainage actually tell the truth, which is why most growing construction businesses drift toward it. If those terms are new, how to categorize transactions in QuickBooks is a good next read.

Here is the honest part. Doing all of this every month, tagging every cost to the right job, booking deposits as liabilities, tracking overbilling and retainage, keeping W-9s current, and closing the books so the numbers are real, is a genuine job on top of running crews and landing work. Most owners can learn it. Few have the hours to do it well month after month.

That is what GGS does. We run job-costed books for East Valley contractors every month, so you open your P&L and see true profit per job, not a guess. If you want proof before you commit, get a Free Profit Review on your last three jobs. We will job-cost them and show you what each one really made.

Key Takeaways

The short version

  • Generic bookkeeping tracks cash in and out, which cannot tell a contractor whether a specific job made money once work spans months.
  • Job costing tags every material, labor, sub, permit, and equipment cost to one job. Maria's $45,000 kitchen cost $37,610, for a true profit of $7,390.
  • A deposit is a liability, not income, until you earn it. Booking it as instant revenue inflates one month and craters the next.
  • Retainage is money you earned but cannot touch yet. At 8 percent across three jobs it can quietly tie up $18,000 in cash.
  • Collect W-9s before the first check and send 1099-NEC forms to unincorporated subs paid $600 or more, due end of January.
  • Growing contractors drift toward accrual because it makes job costing and progress billing tell the truth.

Questions owners ask us

What is the difference between job costing and regular bookkeeping?
Regular bookkeeping sorts your income and expenses into general buckets like materials or labor for the whole business. Job costing goes one level deeper and ties every cost to the specific job that caused it, so you can see the true profit on each project instead of just a company-wide total. For a contractor, that per-job number is the one that tells you whether to keep bidding work the same way.
Is a customer deposit income when I receive it?
No. A deposit is money you have collected but not yet earned, so it should sit on your books as a liability until you complete the work it pays for. If you record it as income the day it arrives, your profit and loss statement will look great that month and terrible later when the costs hit, which makes it impossible to see how a job is really doing.
Which subcontractor payments need a 1099-NEC?
Generally, if you pay an unincorporated subcontractor $600 or more during the year for services, you owe them and the IRS a 1099-NEC by the end of January. Payments you made by credit card or a payment app are usually reported by the processor instead, so those come off your list. Collect a signed W-9 before the first check so you are not chasing forms in January.
Should my construction business use cash or accrual accounting?
Cash basis is simpler and fine for very small operators, but accrual basis is what lets job costing, progress billing, and retainage actually tell the truth, so most growing contractors move toward it. The right answer depends on your size and your projects, and the tax rules can differ, so confirm your specific situation with a tax professional before you switch.
Done For You

See What Your Last Three Jobs Really Made

GGS runs job-costed books for East Valley contractors every month, so get a Free Profit Review and we will show you the true profit hiding in your last three jobs.

Back to all posts
Get a Free Profit Review