Retainage is the 5–15% of contract value withheld by an owner or GC until your roofing job is fully complete and accepted. It's money you've earned — but without a proper tracking system in QuickBooks, it disappears from your books the moment you invoice at 90% and never shows up again. Roofing contractors at $2M revenue commonly have $40,000–$120,000 sitting in uncollected retainage. Here's how to fix that.

What Is Retainage and Why Does It Go Uncollected?

Retainage is a contractual holdback — typically 5–10% on residential work and 10% on commercial — that the owner or GC withholds from every progress payment until the job reaches substantial or final completion. It's designed to protect the owner from incomplete work or defects.

It goes uncollected for one reason: it's invisible. When a roofing contractor invoices for $45,000 on a $50,000 job and the owner pays $45,000, the $5,000 retainage is often never entered into QuickBooks as a receivable. It's not in AR, not on the balance sheet, and not on anyone's follow-up list. When the job wraps up, everyone moves to the next one and the retainage invoice never gets sent.

⚠ Real example: A roofing contractor onboarded with JobCostBooks was carrying $87,000 in retainage on jobs completed 60–180 days prior. None of it was in QuickBooks. After setup, $61,000 was collected within 30 days by sending completion invoices they had never sent.

Step 1: Set Up Retainage Receivable in QuickBooks

Retainage is not regular accounts receivable — it has a different collection timeline and is released separately. It needs its own account.

  1. Go to Chart of Accounts → New
  2. Account Type: Other Current Assets
  3. Detail Type: Other Current Assets
  4. Name: Retainage Receivable
  5. Save

Also create a Retainage Revenue income account if you want to track retainage collections separately from regular job revenue — useful for seeing how much retainage you're releasing each month.

Step 2: Invoice Correctly to Capture Retainage

The correct method uses a two-line invoice:

  1. Line 1: Full service description — amount = full contract price (e.g., $50,000)
  2. Line 2: "Retainage withheld (10%)" — amount = negative retainage (e.g., -$5,000)
  3. Invoice total = $45,000 (what the customer pays now)
  4. The $5,000 is posted to Retainage Receivable as a debit — it now exists as an asset on your balance sheet
Invoice LineAmountAccount
Roofing services — 44 Maple St$50,000Roofing Revenue
Retainage withheld (10%)-$5,000Retainage Receivable
Invoice total (due now)$45,000

Now the $5,000 is visible on your balance sheet under Other Current Assets — not hidden in a drawer.

Step 3: Invoice for Retainage When the Job Completes

When the job reaches final completion, submit documentation to the owner (signed completion certificate, final photos, lien waiver) and immediately create a retainage release invoice:

  1. Create a new invoice for the same customer and Project
  2. Line item: "Retainage release — [job address]" — amount: $5,000
  3. Account: Retainage Receivable (this clears the asset balance) or Retainage Revenue
  4. Send the invoice and follow up in 14 days if unpaid
💡 Timing tip: Send the retainage release invoice the same day you submit completion documentation — not after you receive payment. Getting the invoice in front of the customer while the job is fresh reduces the follow-up cycle significantly.

Step 4: Monthly Retainage Review

On the first of every month, run a Balance Sheet report in QuickBooks and look at the Retainage Receivable balance. Then run a custom report or export to see which jobs make up that balance and how old each is.

Age of RetainageAction
0–30 days after completionInvoice sent, awaiting payment — normal
31–60 days after completionFollow-up call or email — remind owner
61–90 days after completionUrgent follow-up — escalate to owner directly
90+ days after completionFormal demand letter — consider lien rights

JobCostBooks includes this monthly retainage aging review as standard for all clients — flagging any balance over 60 days past job completion in the monthly report. See our roofing bookkeeping services for details.