Retainage release

Retainage is the percentage of each progress payment the GC withholds to assure project completion. On most California private projects it's 5%; many public projects allow 5–10%. The full retainage balance is not yours until specific milestones are met — and the calendar runs longer than most contractors track.

The standard flow

TriggerRetainage event
Each pay appWithhold contract retainage % from the period's earned value
Substantial completion (SC)Partial release — usually drops withholding from 10% to 0% on future billing; sometimes releases a portion of accrued retainage too
Notice of Completion recordedStarts the lien window (subs: 30 days; directs: 60 days); affects timing of pursuing lien if final retainage isn't paid
Punch list cleared + closeout docs deliveredTriggers the contractual final retainage release window
Final retainage paidProject AR closes

The "trigger → release" lag is contractual, not statutory. California Civil Code §8810 caps the time between contractor request and payment of retention at 45 days on private projects (longer on public), but the clock only starts when you formally request release per your contract.

How STrOp tracks it

Each project's billing page maintains a retainage ledger with:

  • Cumulative retainage withheld (sum of all pay app withholdings)
  • Substantial completion date (set in Closeout when SC is issued)
  • Notice of Completion recording date (manual entry from the recorded copy)
  • Final retainage request date + amount
  • Payment date + amount when received

The dashboard shows retainage aging so you can see retainage that's eligible for release but unreleased.

Common failure modes

  • Not requesting release. Retainage doesn't auto-pay on most contracts — you have to submit a formal request. Subs especially default to "wait for the GC to figure it out." Don't.
  • Missing closeout deliverables. O&M manuals, as-builts, warranty letters, training sign-offs — the GC's punch list for release. STrOp's closeout checklist tracks these per project; everything green means request the release today.
  • Sub-tier withholding their own retainage on you. If you're billing your sub-tier with retainage, you need to release theirs when yours is released. Forgetting to flow it down is a §8810 violation against you.
  • Pay app continues to withhold past SC. SC should drop new-period withholding to 0% (or whatever the contract says). If your last 3 pay apps still withheld at 10% after SC, you're owed corrective billing.
  • Project gets "paid in full" but retainage was never billed. Final pay app should include a separate "retainage release" line; if it didn't, file a corrective pay app or an invoice referencing §8810.

When the GC stalls

The contract's dispute clause and Civil Code §8810 are your tools. Steps that usually move the conversation:

  1. Formal written request citing the contract's retainage release clause and §8810.
  2. Pre-claim notice if your contract has one (most public-works contracts do).
  3. Lien-rights preservation — if the NOC was recorded, you have a hard deadline (see California lien deadlines).
  4. Mediation per the dispute clause.

If retainage release is overdue and a lien deadline is approaching, mark a help ticket Urgent — blocking. The window doesn't extend just because the GC is "still reviewing."

See also

This is how STrOp works

The data flows you read about here are how the platform threads bid, execution, billing, and closeout. Single pipeline. No re-keying.

Request beta access →

Last updated 2026-05-29.