Why bookkeeping for subcontractors breaks where ordinary business books don't

You finished the rough-in in March. The GC signed off in April. It's August, and $12,400 of your money is still sitting in his retainage account — retainage being the slice of every invoice the general holds back until the whole project closes out, not just your scope.

That gap between work performed and money in hand is the reason bookkeeping for subcontractors falls apart when you run it like a retail shop's books. A shop sells something, gets paid, done. You perform, bill on someone else's schedule, get deducted from, and collect the last piece six months later.

Here's how to set the books up so the gap is visible instead of a surprise.

Before the job: contract value, cost codes, and W-9s in that order

Open the job in your books the day you sign, not the day the first invoice hits. Enter the contract amount and the schedule of values — the line-by-line breakdown of your scope the GC pays against — as the job's budget.

Then set cost codes. A cost code is just a bucket you tag every dollar to: material, labor, equipment, subbed-out work, permits. Five or six real codes beat thirty you'll never use consistently.

Labor goes in burdened, not at the wage on the check. Burdened rate means the wage plus your employer payroll taxes, workers' comp, and liability — the real number. Say you pay a lead installer $30 an hour and your comp and taxes add $9; you code that hour at $39, not $30. Bid at $30 and you're bidding a loss you won't see until closeout.

And collect the W-9 from any sub or 1099 helper before their first check clears, not in January. Chasing a taxpayer ID from a guy who left for another market in October is a losing game.

During the job: bill on their schedule, track retainage as an asset

Every progress billing you send has three parts in your books: revenue earned, cash you'll actually receive, and retainage held. Post retainage to its own receivable account. If it sits inside regular AR, it ages past 90 days, your aging report looks like a collections disaster, and you stop trusting the report.

Watch the pay-when-paid clause too — that's the contract language saying the GC pays you after the owner pays him. It doesn't change the accounting, but it tells you which jobs to expect slow money from, and that belongs in your cash forecast.

Backcharges are the other live wire. A backcharge is money the GC deducts from your payment for something he says you caused — a damaged door, a cleanup crew, a missed inspection. My position: don't net it out of revenue. Post the full billed amount as revenue and put the deduction into a backcharge cost code on that job. Net it and the job looks fine while the same mistake repeats on the next three.

Closeout: what the job made, step by step

Say a fencing and decking sub closes a commercial run for a GC. Base contract is $86,000. Two signed change orders add $7,400, so contract value is $93,400.

Costs, coded as they hit:

  • Material (posts, panels, hardware): $31,200
  • Burdened labor: $34,000
  • Subbed-out concrete: $6,800
  • Equipment and fuel: $2,500

That's $74,500 in direct job cost. Gross profit reads $93,400 − $74,500 = $18,900.

Then the GC backcharges $1,600 for a section his crew had to re-set. Total cost becomes $76,100, and the job's real gross profit is $93,400 − $76,100 = $17,300.

Now the cash part. The GC is holding $4,670 in retainage. So on paper you earned $17,300, but $4,670 of it is still on his balance sheet — meaning the cash that job actually delivered is $17,300 − $4,670 = $12,630 until that retainage releases.

That last line is the number a sub should write down. It's the difference between "good job" and "good job I can make payroll on."

Cash basis or accrual: which set of books tells a subcontractor the truth

Cash basis records income when the check clears and expenses when you pay them. Simple, cheap, and it matches your bank. The problem is timing: buy $40,000 of material in December for a January job and the books say you lost money in a year you didn't.

Accrual matches revenue to the period you earned it and costs to the job that caused them. It's more work, it needs discipline on unbilled costs, and it doesn't match your bank balance on any given day.

Verdict: run accrual-style job reporting internally, whatever method your return uses. A sub with retainage outstanding and work in progress cannot see margin on cash basis — the money and the work are never in the same month. Keep a separate cash forecast for payroll decisions.

1099 season runs in both directions for subcontractors

You're a payer and a payee. On the paying side, for tax year 2026, nonemployee compensation is reportable on Form 1099-NEC at $2,000 and up — and the payee copy and the IRS filing are both due January 31. If your vendor list isn't clean by Thanksgiving, that deadline hurts.

On the receiving side, reconcile every 1099-NEC a GC sends you against your job revenue. Mismatches are routine: he may report gross including retainage he hasn't released, or report the full billing while you netted a backcharge. Find the difference before you file, not when a notice shows up.

This is the whole reason specialty trade contractors need books built around jobs and contracts instead of one lump P&L.

If you want a fixed monthly number for books that carry retainage, backcharges, and job-level margin correctly, get pricing and we'll put a quote together.