Industry
Contractor bookkeeping best practices: job costing, apps, and cash flow
The best bookkeeping practice for a contracting business is tracking materials and labor to specific jobs before money leaves the bank. Whether you run dispatch software like Jobber or keep it simple in QuickBooks Projects, every supply receipt, subcontractor invoice, and payroll run must map to a project.
Contractors, electricians, plumbers, roofers, and HVAC owners work long hours on the job site. When the tools get put away, the paperwork begins: supply house receipts under the truck dashboard, subcontractor invoices arriving by text at 9pm, and progress billings waiting to be sent.
Here are the 5 core bookkeeping best practices Dave Platzer uses to help trade owners protect project margins, stay current on receivables, and get their weekends back.
1. Connect trade apps without cluttering your general ledger
Many trade businesses use field service management software like Jobber, Housecall Pro, ServiceTitan, or Buildertrend. These platforms are excellent for scheduling crews, tracking technician time, and collecting payments in the field.
The mistake happens when contractors turn on full automated syncs that dump every detail into QuickBooks. Your accounting software does not need every equipment serial number or technician dispatch note. That level of detail creates duplicate customers, misapplied sales tax, and bloated ledgers.
The best practice:
- Field apps handle operations. Let Jobber or Housecall Pro manage job dispatching, technician scheduling, customer quotes, and field credit card processing.
- QuickBooks handles accounting. Keep your general ledger focused on job costing, vendor bills, payroll expenses, and reconciled bank accounts.
- Clean batch deposits. Match daily merchant processor batches and customer payments directly to bank deposits, ensuring your revenue records reflect cash cleared.
2. Track project margins with job costing
Contractors often look at a busy monthly schedule and wonder why their bank account feels empty. The answer usually hides in blended numbers. When all revenue and materials dump into one big pile, a wildly profitable kitchen remodel subsidizes two commercial jobs that went over budget.
Real job costing separates 3 components per job:
- Direct materials: Lumber, pipe, wiring, fixtures, and supply house runs purchased specifically for the project.
- Direct labor: Wages, payroll taxes, and burden paid to technicians and carpenters working on that job site.
- Subcontractor costs: Payments to specialty trades like drywallers, roofers, or excavators.
When costs are tied to specific projects inside QuickBooks Projects or your trade tool, you see your real gross margin on every invoice. You stop guessing on estimates and start bidding based on real historical data.
3. Match purchase orders to invoices to stop double payments
Subcontractors and supply houses generate a huge volume of paper. An invoice gets handed through the truck window, another arrives by email, and a duplicate comes through text when payment is a few days out.
Without a systematic process, duplicate invoices get paid twice. That is pure cash walking out the door.
The fix is simple:
- Purchase order matching. Match every incoming vendor bill against the agreed job estimate or purchase order before approving payment.
- Payment verification. Check payment history to ensure a resent invoice is marked as a duplicate rather than entered as a fresh liability.
- W-9 compliance upfront. Collect a Form W-9 from every subcontractor before writing their first check. Chasing W-9s in January for 1099 filings is stressful and expensive.
4. Treat customer deposits as liabilities, not income
When a homeowner hands you a $15,000 deposit to start a roof replacement next month, that money is not earned income yet. It is cash you hold against future work and materials.
If you record client deposits directly as income, your books show inflated revenue in month 1 and distorted losses in month 2 when materials and labor hit. That causes erratic profit and loss swings that confuse lenders and inflate tax estimates.
The proper practice is recording client deposits into an unearned revenue liability account. As project milestones finish and progress invoices go out, the deposit converts into earned income matching actual project costs.
5. Deliver clean, CPA-ready books every February
Dave Platzer does not file business tax returns. Instead, he serves as the bridge between day-to-day job-site operations and your year-end tax preparer.
When February rolls around, your CPA should receive a fully reconciled balance sheet, a clean profit and loss statement with proper job costing, and a verified 1099 vendor report. For New Jersey trades, that also includes keeping signed capital improvement certificates organized; see Dave’s guide to NJ contractor sales tax and Form ST-8.
When your books arrive in pristine order, your CPA spends their time finding deductions rather than cleaning up messy spreadsheets. That single handoff routinely saves contractors thousands in accounting cleanup fees.
Breathing room on Friday afternoon
Dave’s first rule of bookkeeping is simple: if you don’t take care of your books, your books will take care of you. And not in a good way.
You do not need to do your bookkeeping at midnight at the kitchen table. If you want to see where your trade business stands, read more about Dave’s bookkeeping for contractors and trades or book a free consultation. Dave will look over your books, tell you plainly what you need, and help you get your evenings back.
Quick answers
How should trade apps like Jobber or Housecall Pro connect to QuickBooks?
Keep your dispatch app focused on scheduling and field invoicing, and let QuickBooks handle financial reporting and bank reconciliations. Auto-syncing every granular line item can clutter your general ledger. Connecting high-level payments and matching deposits against your bank feed maintains clean books without duplicate entries.
What is the most effective way to handle job costing for contractors?
Assign every supply invoice, subcontractor bill, and direct labor hour to a specific project. Setting up job costing inside QuickBooks Projects or your trade software ensures you know the gross margin of each project before moving on to the next estimate.
How can contractors prevent paying subcontractors twice?
Implement purchase order to invoice matching. Never pay a subcontractor from a text message or resent invoice without verifying against the original agreement and past bank disbursements. Requiring a W-9 before the first payment also keeps your year-end 1099 reporting painless.
How should client deposits and progress payments be recorded?
Initial client deposits are unearned revenue and should sit as a current liability until work begins. As project phases reach completion, progress invoices convert those deposits into earned revenue, keeping your cash flow and tax liability accurate.
What makes a contractor's books CPA-ready in February?
Fully reconciled bank feeds, an accurate accounts receivable ledger, verified 1099 vendor lists, and project-level costs categorized cleanly apart from general overhead. That level of preparation saves contractors thousands in CPA cleanup fees.
