Construction Bookkeeping for Contractors: Job Costing, Retainage & Taxes (2026)
How small construction and trade contractors should run their books — job costing, retainage, change orders, 1099 subcontractors, WIP reporting, and the tax rules that decide your accounting method.
By Jennifer Liu · · 14 min read
Construction Bookkeeping for Contractors: Job Costing, Retainage & Taxes (2026)
Most trade businesses do not fail because the work was bad. They fail because a profitable-looking year was actually three good jobs subsidizing four losing ones, and nobody knew which was which until the cash ran out.
Construction bookkeeping exists to answer one question your bank balance cannot: which jobs make money? This guide covers how to set that up for a small general contractor, remodeler, or specialty trade — electrical, plumbing, HVAC, roofing, concrete, landscaping — running anywhere from one crew to a dozen.
Why your bank balance lies to you
In a service business, revenue and cost land in the same month. In construction they do not.
- You collect a deposit in March for framing you will do in May.
- You pay for material in April that gets installed in June.
- The general contractor holds 10% retainage until the project closes out in October.
- A change order gets verbally approved in July and invoiced in September.
That means a month can show a large positive balance while you are actually underwater on the work in progress, or show a loss in a month where you performed excellent, profitable work. Job-level tracking is the fix — not a bigger spreadsheet.
The three numbers that run a contracting business
| Number | What it tells you | Where it comes from |
|---|---|---|
| Job cost to date | What a specific job has consumed | Every transaction tagged to a job |
| Contract value + approved change orders | What you are entitled to bill | Signed contract and signed change orders |
| Billed to date vs cost to date | Whether you are over- or under-billed | Invoices compared with job cost |
If you can produce those three per job, you can run the business. If you cannot, no amount of tidy categorization will save you.
Set up a chart of accounts that separates direct cost from overhead
The single most common mistake in contractor books is dumping everything into "Supplies" and "Subcontractors." You need direct job costs split by type, because that split is what makes estimates get better.
| Type | Account | What belongs here |
|---|---|---|
| Income | Contract revenue | Progress billings and fixed-price contract billings |
| Income | Time & materials revenue | T&M and service-call work |
| Income | Change order revenue | Approved changes, billed separately |
| Direct cost | Materials | Lumber, wire, pipe, fixtures, concrete |
| Direct cost | Subcontractor labor | 1099 subs and specialty trades |
| Direct cost | Direct labor & burden | Field wages, payroll taxes, workers' comp on field crew |
| Direct cost | Equipment rental | Lifts, dumpsters, excavators, per-job rentals |
| Direct cost | Permits & inspection fees | Anything billed to a specific job |
| Direct cost | Other job costs | Job-site fuel, disposal, small tools consumed |
| Overhead | Vehicles & fuel (non-job) | Trucks, insurance, maintenance |
| Overhead | Tools & equipment (owned) | Purchases you will use across many jobs |
| Overhead | General liability & bonding | Policy premiums, bond fees |
| Overhead | Office, software, admin | Estimating software, phone, accounting, office staff |
| Liability | Customer deposits | Money collected before work is performed |
| Asset | Retainage receivable | Withheld amounts you have billed but cannot collect yet |
Two rules make this work:
- A cost is a direct cost only if you can name the job it belongs to. Everything else is overhead. Do not "allocate" overhead into jobs in your bookkeeping — do it in your estimating markup instead.
- Owned tools and vehicles are overhead, not job cost. Rented-for-a-job equipment is job cost. That distinction alone changes how your gross margin reads.
For a broader walkthrough of building the account list itself, see Chart of Accounts Explained: A Setup Guide.
Job costing without an enterprise system
You do not need Procore to job cost. You need discipline in three places.
At the supply house. Have the crew give the job name at the counter, or take a photo of the receipt with the job written on it. A material purchase with no job attached is a guess forever.
In the bank feed. Every imported transaction gets a job tag before it is closed out. A weekly 20-minute pass beats a quarterly four-hour reconstruction.
On labor. Field hours must be captured per job, daily. Weekly totals with no job split make labor — usually your largest cost — invisible. Add payroll burden: employer taxes, workers' comp, and any benefits typically add roughly 20–35% on top of the hourly wage, and ignoring that is why jobs that "looked fine" lose money.
A minimal job cost report
| Job | Contract + COs | Cost to date | Billed to date | Est. cost to complete | Projected margin |
|---|---|---|---|---|---|
| Ellis kitchen | $48,500 | $31,200 | $34,000 | $6,000 | 23.3% |
| Harper reroof | $19,800 | $17,900 | $19,800 | $1,400 | 2.5% |
| Bay St. duplex | $126,000 | $58,400 | $50,000 | $54,000 | 10.8% |
The Harper job is the one that matters. It looks complete and paid, but it is going to finish near break-even. Without job costing you would have seen only a healthy deposit balance.
Retainage, deposits, and progress billings
These three items cause most contractor bookkeeping errors.
Customer deposits are a liability, not income. When a homeowner pays $10,000 up front, you owe them work. Record it to Customer deposits and move it to revenue as you bill against it. Booking it straight to income overstates a good month and creates a tax surprise.
Retainage withheld from you is still receivable. If you bill $50,000 and the GC withholds 10%, you have $45,000 collectible now and $5,000 in retainage receivable. Track it in its own account so it does not sit in your aging report looking like a delinquent invoice — and so you actually chase it at closeout. Contractors routinely leave five figures of retainage uncollected because nobody was watching the account.
Retainage you withhold from subs is a payable. Same logic, opposite direction. It is not profit.
Progress billings should follow a schedule of values. Bill by defined milestone or percent complete, not by whatever the customer will tolerate. It reduces disputes and makes over/under billing measurable.
Change orders: get them in writing, then get them in the books
An unsigned change order is a donation. The bookkeeping rule is simple: a change order enters your job's contract value only when it is approved in writing, and its costs are tagged to the same job from the moment work begins.
Track approved-but-unbilled change orders as their own line. On a busy job, forgetting to bill two changes is a five-figure mistake that surfaces months later.
Subcontractors: classification and 1099s
If you pay subcontractors, two obligations follow you.
Collect a Form W-9 before the first payment. Not after. Chasing a tax ID in January from a sub who has moved on is miserable, and you cannot file accurately without it.
File Form 1099-NEC for unincorporated subs you paid $600 or more during the calendar year for services. The general filing deadline is January 31 for both the recipient copy and the IRS copy. Payments made by credit card or through a third-party payment network are generally reported by the processor instead, so exclude those to avoid double reporting.
Also verify each sub's insurance and workers' comp certificate. In many states, if an uninsured sub is injured on your job, you can end up treated as the employer for workers' comp purposes — a far more expensive problem than a missing 1099.
Worker classification is a genuine risk area in construction, and the tests vary by state and by agency. If you control the schedule, supply the tools, and direct how the work gets done, you are looking at an employee relationship regardless of what the invoice says.
Which accounting method are you allowed to use?
This is where contractors get the most conflicting advice, because there are two separate questions: your overall method, and your method for long-term contracts.
| Situation | Typical treatment |
|---|---|
| Small contractor, short jobs finished within the tax year | Cash or accrual overall; contract accounting rarely an issue |
| Long-term contracts spanning a year-end, small business | May qualify for an exempt method such as completed-contract, subject to the gross receipts test |
| Larger contractors above the gross receipts threshold | Percentage-of-completion generally required for long-term contracts |
| Home construction contracts | Special rules may allow exempt methods regardless of size |
The gross receipts threshold is indexed for inflation and changes, so confirm the current figure for your tax year rather than relying on a number you remember. Two practical points hold regardless:
- Cash basis is the right default for day-to-day management in a small shop, and it is what most contractors under the threshold use for tax. Our take on the tradeoff is in Cash vs Accrual Accounting: Which Should You Use?.
- Your management reporting can differ from your tax method. Job costing and WIP reporting are management tools. You can run cash-basis books for taxes and still produce an accurate WIP schedule.
The WIP schedule, explained without jargon
A work-in-progress schedule compares, for every open job, what you have earned to what you have billed.
Earned revenue = contract value × (cost to date ÷ total estimated cost)
- Earned more than you billed → underbilled. You have financed the customer. Cash is tight and profit is understated.
- Billed more than you earned → overbilled. Cash looks great, but part of it is not yours yet.
| Job | Contract | Est. total cost | Cost to date | % complete | Earned | Billed | Position |
|---|---|---|---|---|---|---|---|
| Ellis kitchen | $48,500 | $37,200 | $31,200 | 83.9% | $40,691 | $34,000 | Underbilled $6,691 |
| Bay St. duplex | $126,000 | $112,400 | $58,400 | 52.0% | $65,494 | $50,000 | Underbilled $15,494 |
Two underbilled jobs totaling $22,000 explain a cash squeeze completely — and the fix is billing, not borrowing. If you need bonding or a line of credit, expect the WIP schedule to be the first document requested.
Sales tax and use tax: the trap nobody warns you about
Construction sales tax rules are state-specific and genuinely inconsistent. In some states a contractor is a retailer of materials and charges tax to the customer; in others the contractor is the consumer and pays tax at purchase, with the cost embedded in the bid. Real property improvements are often treated differently from repairs, and resale certificates may or may not apply.
The practical guidance: get your treatment confirmed once by a professional in your state, write it into your estimating template, and keep the answer consistent. Guessing job by job creates liability that compounds silently for years.
A weekly and monthly rhythm that actually gets done
Weekly (30 minutes)
- Tag every new bank and card transaction to a job or overhead
- Enter field hours by job
- Send progress billings that are due; log approved change orders
Monthly (60–90 minutes)
- Reconcile every bank, card, and loan account
- Review the job cost report for jobs trending over estimate
- Update estimated cost to complete on open jobs and refresh WIP
- Review retainage receivable and chase anything past closeout
Quarterly
- Pay estimated taxes — see Quarterly Estimated Taxes: The Complete Guide for Freelancers
- Compare estimated versus actual cost by cost type and adjust your markup
Do the weekly pass and the monthly close stops being an event. Skip it, and every month is an archaeology project.
Documentation contractors specifically need to keep
- Signed contracts, change orders, and schedules of values
- Supply house invoices with job identification, not just card statements
- Subcontractor W-9s, insurance certificates, and lien waivers
- Vehicle mileage logs if you deduct actual or standard mileage
- Equipment purchase records for depreciation
Card statements alone are weak support in an audit. For the general rules on what to retain and for how long, see What Receipts to Keep for Taxes: The IRS Rules.
Five mistakes that cost contractors real money
- No job tagging on material purchases. Your gross margin becomes an average with no signal.
- Treating deposits as income. Inflates good months, creates tax surprises, hides the obligation.
- Excluding labor burden from job cost. Understates cost by 20–35% on your largest cost line.
- Ignoring retainage. Cash you earned and never collected.
- Estimating from memory instead of actuals. Job costing only pays off if last quarter's numbers feed next quarter's bids.
How LedgerFlow helps
LedgerFlow is built for owner-operators who do not want to run construction ERP software:
- Bank and card feeds import automatically, and the AI learns your cost categories — materials versus subcontractor versus owned tools — from your first corrections.
- Reconciliation runs continuously and flags missing or duplicated transactions instead of making you hunt for them.
- Customer deposits and retainage can be tracked in their own accounts so profit is not overstated.
- Owner draws are treated as transfers, not expenses, so margins stay honest.
- Every workspace starts on cash basis by default, which is what most small contractors should be on.
The Solo plan at $20/month suits a one-crew operation, with a 30-day free trial — card required, $0 due today. Business at $45/month adds multi-user access for an office manager and accrual-basis reporting when a bonding agent or lender asks for it. Guided at $149/month adds accountant review if you want a professional checking the work each quarter.
Related reading
- Chart of Accounts Explained: A Setup Guide
- Cash vs Accrual Accounting: Which Should You Use?
- Year-End Bookkeeping Checklist for Small Business
This content is for educational purposes only and does not constitute tax, legal, or accounting advice. Construction sales tax, licensing, worker classification, and workers' compensation rules vary significantly by state, and contract accounting thresholds change with inflation adjustments. Confirm your situation with a qualified tax professional.
Frequently Asked Questions
Do small contractors have to use percentage-of-completion accounting?
Not necessarily. Contractors under the inflation-indexed gross receipts test can generally use an exempt method for long-term contracts, such as the completed-contract method, and home construction contracts have their own relief. Larger contractors above the threshold generally must use percentage-of-completion for long-term contracts. Because the threshold changes annually, confirm the current figure for your tax year with your CPA — and note that jobs which start and finish inside the same tax year usually avoid the question entirely.
How should I record a customer deposit on a construction job?
Record it as a liability in a Customer deposits account, not as income. You owe the customer work, so the money is not earned yet. As you issue progress billings against the job, move the deposit into revenue. Booking deposits straight to income overstates profit in the month collected, understates it later, and can create a tax bill on money you still have to work off.
Where does retainage belong in my books?
Retainage withheld from you belongs in its own Retainage receivable asset account, separate from regular accounts receivable, so it does not distort your aging report and so you remember to collect it at closeout. Retainage you withhold from subcontractors is a payable, not profit. Contractors commonly leave five figures of retainage uncollected simply because it was buried in AR.
Do I need to send 1099s to my subcontractors?
Generally yes — file Form 1099-NEC for each unincorporated subcontractor you paid $600 or more for services during the calendar year, with a January 31 deadline for both the recipient and IRS copies. Collect a W-9 before the first payment rather than chasing it in January. Payments made by credit card or through a third-party payment network are usually reported by the processor, so exclude those to avoid double reporting.
What is a WIP schedule and do I need one?
A work-in-progress schedule compares earned revenue (contract value multiplied by cost to date divided by total estimated cost) against what you have billed on each open job. Jobs where you have earned more than you billed are underbilled and are quietly draining cash; jobs billed ahead of work are holding money that is not yet yours. If you carry jobs across month-ends, or want bonding or a bank line, you need one.
Are my tools and truck job costs or overhead?
Equipment you rent for a specific job — a lift, a dumpster, an excavator for one week — is a direct job cost. Tools, trucks, and equipment you own and use across many jobs are overhead, recovered through the markup in your bids rather than charged to one customer. Mixing the two makes gross margin unreliable and hides which jobs actually performed.