Contractor Guide

Retainage: the revenue
you can't spend yet.

On most commercial jobs, 5–10% of every invoice is held back until the work is done — sometimes long after. What retainage is, how to book it, and how to stop it from quietly starving your cash flow.

The short answer

Retainage (or "retention") is a percentage of each progress payment — typically 5% or 10% — that the owner or GC holds back until the job reaches completion. It exists to keep leverage on the table: finish the punch list, deliver the closeout documents, and the held money gets released.

The catch: you've earned that money, spent the cost to earn it, and can't touch it — often for months after your crews have moved on. On a $1M contract at 10% retainage, that's $100,000 of your money financing someone else's project. Multiply across every active job and retainage is frequently the single largest "asset" a contractor owns that pays zero interest.

The math on a real job

Pay AppWork CompletedRetainage (10%)Cash You Receive
Month 1$150,000$15,000$135,000
Month 2$220,000$22,000$198,000
Month 3$180,000$18,000$162,000
Month 4 (final)$50,000$5,000$45,000
Held until release$60,000

A $600,000 job where you carry $60,000 — roughly your entire profit — until closeout is accepted.

Notice what that last row means: on a job bid at a 10% margin, the retainage held equals your entire profit. You don't make money on the job until retainage is released. Every dollar before that was reimbursement for costs.

How it should show up in your books

Retainage receivable is real money owed to you — but it doesn't behave like a normal invoice, and booking it like one causes two problems: your AR aging fills up with "past due" amounts nobody can collect yet, and you lose track of what's actually collectible now versus later.

Red flag we see constantly: retainage buried inside regular AR, aging past 90 days, until nobody remembers which balances are retainage and which are genuinely uncollected billings. Cleanups routinely find five figures of collectible retainage that simply fell off everyone's radar. If your AR aging has old balances you can't explain, start there.

Why it wrecks cash flow — and how to plan for it

Retainage is one of the six culprits we cover in Why Profitable Contractors Run Out of Cash, and it's the most predictable one. A growing contractor never gets relief: each finished job's released retainage is immediately outweighed by new holdbacks on the bigger jobs replacing it. The faster you grow, the more of your working capital is locked up.

Planning for it is straightforward once it's visible:

  1. Bid knowing your real cash margin. If retainage is 10% and your margin is 10%, the job produces no spendable profit until release — price and plan accordingly.
  2. Put retainage releases in your cash forecast as their own line, tied to realistic completion dates — not invoice dates. (This is exactly what a 13-week cash flow forecast is for.)
  3. Negotiate where you can. Reduced retainage after 50% completion is common in many contracts; retainage on stored materials and on subcontractor line items is often negotiable too. You get none of it if you don't ask.
  4. Chase release like it's revenue — because it is. Closeout paperwork, lien waivers, and punch lists are the usual holdup. The contractor who submits complete closeout packages gets paid months before the one who doesn't.

Know your state's rules

Retainage is regulated, and the rules vary widely by state: many cap retainage on public work (often at 5%), some cap private work, and most set deadlines for release after completion with interest penalties for late payment. Prompt-payment statutes may also apply. We won't pretend to summarize fifty states here — the point is that the money often has a legal clock on it, and contractors who know their state's rules collect faster than ones who wait politely.

Know exactly what's held, where, and when it's due.

Blackline tracks retainage by job as part of your monthly close — separate from trade AR, with a release schedule your cash forecast can actually use.

Get a Custom Quote