Key takeaways
What this article covers, in order:
- The kitchen remodel that "made money"
- Two numbers every contractor needs
- Recording progress payments, step by step
- Retainage: the money you're owed but can't collect yet
- Change orders: bill them or lose them
- Monthly checklist for contractors
Bookkeeping for contractors has two jobs most other businesses don't: knowing what each job actually cost you, and recording money that arrives before the work is done. Get those two right (job costs tagged consistently, deposits treated as a liability until earned) and your bank reconciliation, your profit numbers and your next bid all get more accurate.
The kitchen remodel that "made money"
Tony runs a three-person remodeling crew outside Denver. In Jul 2026 he signed a $48,000 kitchen job. The homeowner paid a $9,600 deposit up front, then progress payments as the work went along. By the end of Sep 2026 Tony had $33,600 in the bank from that customer and the job was about 70% done.
His bank balance looked great. His gut said the job was profitable. But when his bookkeeper finally lined up costs against that one job, the picture shifted. Cabinets ran $2,100 over the estimate. A change order for a moved sink was done but never billed. And two weeks of a subcontractor's time had been recorded against a different job entirely.
That's the contractor's version of messy books. The money's real, but you can't tell which jobs earned it.
Two numbers every contractor needs
What each job cost
Every dollar you spend on materials, subcontractors, equipment rental, permits and labor should carry a job name or number. That's it. You don't need special software to start. You need discipline about tagging costs when they happen.
The simplest ways to do it:
- Put the job name in the memo of every bill, card charge and check
- Use a supplier account per job where your supplier allows it, so statements arrive sorted
- Keep one business card for materials, so personal purchases don't mix in
- Record subcontractor bills promptly with the job named on the bill
Then, at least monthly, total costs by job and compare them to the estimate. A simple spreadsheet works. So does a report filtered by memo or customer, depending on what your software supports. Some contractors use dedicated job-costing tools; if you run many jobs at once, that may be worth it.
What's been earned versus what's been paid
This is where contractors' books most often go wrong, and it matters for your bank reconciliation too.
When Tony's homeowner paid that $9,600 deposit, Tony hadn't done any work yet. That money isn't revenue. It's a customer deposit, which is a liability: Tony owes either the work or the money back. As work is done and billed, the deposit gets applied and becomes revenue.
If you record every customer payment as income the day it lands, you'll overstate profit in the months you collect deposits and understate it in the months you finish jobs. Over a year it can even out. Month to month, it makes your numbers useless for decisions.
Recording progress payments, step by step
Here's how a typical progress-billed job flows through the books. Numbers are from Tony's illustrative $48,000 kitchen.
| Date | Event | Entry |
|---|---|---|
| Jul 6, 2026 | $9,600 deposit received | Debit bank $9,600 / Credit customer deposits (liability) $9,600 |
| Aug 3, 2026 | Invoice: demo and rough-in complete, $14,400 | Debit accounts receivable $14,400 / Credit revenue $14,400 |
| Aug 3, 2026 | Apply part of deposit to invoice, $4,800 | Debit customer deposits $4,800 / Credit accounts receivable $4,800 |
| Aug 12, 2026 | Customer pays balance of invoice, $9,600 | Debit bank $9,600 / Credit accounts receivable $9,600 |
| Sep 8, 2026 | Invoice: cabinets and counters installed, $19,200 | Debit accounts receivable $19,200 / Credit revenue $19,200 |
| Sep 8, 2026 | Apply remaining deposit, $4,800 | Debit customer deposits $4,800 / Credit accounts receivable $4,800 |
| Sep 19, 2026 | Customer pays $14,400 | Debit bank $14,400 / Credit accounts receivable $14,400 |
Add it up. The bank received $9,600 + $9,600 + $14,400 = $33,600 so far on these entries. Revenue recognized is $33,600. Customer deposits are back to zero. Nothing is double counted, and every bank deposit matches a specific entry.
Some contractors split the deposit across invoices like this. Others apply it all to the final invoice. Either can work. Pick one per contract and write it into your estimate so the homeowner sees the same math you do.
Retainage: the money you're owed but can't collect yet
On commercial jobs, customers often hold back a percentage of each progress payment (retainage) until the project is done. If you bill $20,000 and the contract holds back 10%, you'll receive $18,000. The other $2,000 is still yours. It's just not due yet.
Record it as retainage receivable, separate from normal receivables. That way your AR aging doesn't show $2,000 as "overdue" for months, and you won't forget to chase it at closeout. When it's finally paid, it clears against retainage receivable and matches the bank deposit.
If you subcontract and hold retainage from your subs, the mirror image applies: record it as retainage payable.
Change orders: bill them or lose them
Tony's moved sink is a classic. Work done, cost incurred, never invoiced. Change orders slip because they're agreed on site, verbally, with dirty hands.
A simple rule: no change order work starts until it's written down with a price, even in a text message the customer replies "OK" to. Then it goes on the next progress invoice as its own line. Your job cost totals will thank you.
Monthly checklist for contractors
- [ ] Every bill and card charge for the month tagged to a job (or marked overhead)
- [ ] Customer deposits recorded as liabilities, not income
- [ ] Deposits applied to invoices as work was billed
- [ ] Retainage receivable and payable listed by job
- [ ] Change orders from the month invoiced
- [ ] Bank and card accounts reconciled to statements
- [ ] Costs to date compared with estimate for each open job
- [ ] AR aging reviewed; follow-ups sent
Where reconciliation catches contractor mistakes
Bank reconciliation won't tell you a job is over budget. But it catches the mistakes that make job numbers wrong in the first place:
- A supplier payment recorded twice (once from the bill, once from the bank feed)
- A customer deposit recorded as revenue and applied to an invoice later, which double counts it
- An equipment rental charged to the personal card and never recorded at all
- A progress payment deposited into the wrong account
When your bank account reconciles cleanly each month, you can trust the cost totals built on top of it.
Construction accounting has real complexity once jobs get bigger: percentage-of-completion revenue, bonding requirements, certified payroll on public jobs. If any of those apply to you, bring in a CPA who works with contractors. It's money well spent.
How HelloBooks helps
To set expectations clearly: HelloBooks isn't a job-costing system. It doesn't assign costs to jobs or produce job profitability reports for you. What it does give contractors is a clean base to build on. You can connect most US banks and credit cards for a live feed (or import CSV statements), send quotes and invoices, record bills, and track who owes you with AR aging and unlimited email payment reminders. Use memos and your own job names consistently, and you'll have the data to total costs per job in a spreadsheet.
Free covers one live bank feed and up to 200 transactions a year, which fits a one-person trade business just starting out. Starter at $14.99/month adds three bank connections and AI auto-categorization. Pro at $39.99/month adds bills and approvals, unlimited bank connections and unlimited users with roles, so your office manager and your bookkeeper can both work in the same books. Read more on our construction page and our invoicing features.
FAQs
Is a customer deposit income?
Not when you receive it. It's a liability until you've done the work it pays for. Apply it to invoices as the work is billed, and it becomes revenue then.
How do I record retainage?
Record the held-back amount as retainage receivable, separate from regular receivables. Clear it when the customer pays it at the end of the project.
Do I need job-costing software?
Not necessarily. Many small contractors do fine tagging every cost with a job name and totaling monthly. As job count grows, dedicated job-costing tools can save time.
What counts as job cost versus overhead?
Job costs are tied to a specific job: materials, subs, permits, equipment rented for that job, crew time on site. Overhead keeps the business running across all jobs: truck insurance, office rent, software, your phone.
How do I avoid double counting a deposit?
Record it once as a liability. When you invoice, apply the deposit against the invoice instead of recording a new payment. The bank deposit should match only the original deposit entry.
Tag the costs, park the deposits, and the jobs will tell you the truth.
Start free, no credit card. Try HelloBooks Free