Retainage accounting is how you keep held-back progress payments honest on the books — receivable when someone holds your money, payable when you hold a sub's, release tracked by job, and cash planning that doesn't pretend the holdback is spendable. On most commercial jobs a slice of every pay app (often 5% or 10%) sits until contractual release. You've earned it, you've usually spent the cost to earn it, and you still can't touch it. Without a clean process it ages into mystery AR, poisons the WIP schedule, and quietly starves cash.
Below: retainage receivable vs payable, recording it in QuickBooks Online, tracking release by job, how retainage shows on the WIP and balance sheet, and a collection follow-up process that treats release like revenue. Want a monthly close that tracks retainage by job? Start with a DIG Diagnostic, then talk Foundation.
Retainage (also called retention) is a percentage of each progress payment that the owner or GC holds back until completion conditions are met — punch list, closeout docs, final acceptance, sometimes a warranty period. It exists to keep leverage on the table.
The catch for the contractor: that money is often your entire job profit until release. On a $1M contract at 10% retainage, $100,000 of your working capital is financing someone else's project. Multiply across active jobs and retainage is frequently the largest "asset" you own that pays zero interest — and it only turns into cash if someone tracks it and chases it.
Blackline Financial is construction-only bookkeeping and advisory for contractors and specialty trades (roughly $1M–$30M). We do not prepare tax returns — tax timing and long-term contract elections are something we coordinate with your CPA. Monthly close, job-cost hygiene, and retainage-by-job tracking sit in Foundation / Frame on services. Every engagement starts with a DIG Diagnostic; every package is custom-quoted.
Numbers below are illustrative — not industry averages or client results. Use them to see how retainage stacks, not as a bid rule.
| Pay app | Work completed | Retainage (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 progress) | $50,000 | $5,000 | $45,000 |
| Held until release | — | $60,000 | — |
On a $600,000 job at 10% retainage you carry $60,000 until release. If the job was bid near a 10% margin, the held retainage is roughly the whole profit — you don't spend the profit until closeout is accepted and the release funds. Every dollar before that was mostly reimbursement for costs.
That is why retainage belongs in cash planning and in a separate receivable — not buried in trade AR that ages past 90 days until nobody remembers what it is.
These are opposite sides of the same idea. Both matter — especially if you are a GC.
| Side | Who you are | What it is | Books seat |
|---|---|---|---|
| Retainage receivable | Sub or GC owed by owner/GC | Money held from you on your billings | Asset — usually current or other receivable, by job |
| Retainage payable | GC (or CM) holding from subs | Money you hold from sub pay apps | Liability — by job / by sub |
Receivable (you are owed). Bill the full amount earned on the pay app; show retainage as a deduction so revenue and WIP stay accurate; park the held slice in retainage receivable, not ordinary trade AR. When release funds, clear the retainage balance — don't leave a ghost that ages forever.
Payable (you hold from subs). When you pay a sub less retainage, the unpaid slice is retainage payable, not "free cash." It is someone else's money with a release clock. Track it by job and sub the same way you track what you are owed. GCs who mix sub retainage into generic AP lose the plot at closeout and create lien / waiver fights they didn't need.
Both on one company. A GC often has both on the same job. Netting them away on the books is how one side gets forgotten — keep both visible. The draw package and pay-app columns should agree with both seats.
| Habit | Result |
|---|---|
| Receivable and payable both by job | Release and closeout are operational, not forensic |
| Everything in trade AR / AP | Aging lies; "past due" that nobody can collect yet |
| GC tracks only what they are owed | Sub retainage surprises at closeout |
| Payable treated as spendable cash | Working capital story is fake |
QuickBooks Online does not have a magic "retainage button" that replaces process. What works is a clear chart of accounts, consistent invoicing, and job tracking — the same discipline as job costing in QuickBooks Online.
Practical pattern many contractors use
What not to invent: a future QBO feature that fixes messy AR; booking full cash as if retainage already funded; leaving retainage in trade AR "because it's easier." Easier this month is expensive at closeout.
| QBO habit | Pass | Fail |
|---|---|---|
| Chart of accounts | Distinct retainage receivable / payable | Retainage mixed into trade AR/AP |
| Job / project | Every retainage balance tagged to a job | Company-level blob with no job |
| Period discipline | Split booked when the pay app posts | "We'll clean it up at year-end" |
| Release | Clears the retainage balance on that job | New income / orphan credit / ghost AR |
If your AR aging is full of old balances you can't explain, retainage buried in trade AR is a common root cause. A month-end close that includes a retainage-by-job tie-out stops the pile-up.
Retainage without a release schedule is a wish list. Track by job (and for GCs, by sub on the payable side).
Minimum fields on a release schedule
| Field | Why |
|---|---|
| Job name / number | Everything ties to WIP and AR |
| Contract retainage % (and any step-downs) | Math source of truth |
| Retainage held to date | Balance that should match the books |
| Trigger for release | Substantial completion, final acceptance, punch complete, docs in, etc. — per contract |
| Expected / target release date | Feeds 13-week cash flow |
| What's blocking | Punch list, closeout package, waiver chain, owner paperwork |
| Owner / GC contact | Who actually releases funds |
| Payable side (if GC) | Sub, amount held, same trigger discipline |
Update the schedule in the same cycle you update WIP — usually monthly close, and again at substantial completion. "We'll figure it out at the end" is how five-figure balances fall off the radar.
Step-downs and partial releases. When a partial release funds, reduce retainage receivable (or payable) for that job and update the schedule. Leaving the old full-hold balance after a partial release drifts WIP billed columns and cash forecasts.
Retainage is not only an AR problem. It sits at the intersection of billing, earned revenue, and the balance sheet.
On the WIP. Billed-to-date should include amounts billed including retainage held — because you did bill it; the cash just hasn't arrived. The held piece lives in retainage receivable, not as if it were never billed. Confusing "cash received" with "billed" is how over/under billing gets misread. Earned revenue under percentage of completion follows cost-to-cost (or your contract method) — retainage does not mean you haven't earned; it means you haven't collected.
On the balance sheet.
| Seat | Typical presentation | Watch-out |
|---|---|---|
| Retainage receivable | Asset (often broken out from trade AR) | Buried in trade AR → fake "past due" |
| Retainage payable | Liability | Treated as cash available to spend |
| Contract assets / liabilities | Per your WIP / POC presentation | Must stay consistent with billed vs earned |
Tie-out every close. Retainage receivable by job (sum) should equal the release schedule and should reconcile to pay-app retention columns. Retainage payable by job/sub should equal what you are still holding. If WIP "billed" and retainage receivable tell different stories, stop and fix before you trust the owner package.
Approved change orders usually follow the same retainage rules as the base contract unless the CO says otherwise — update SOV and retainage math when COs are approved, not only at closeout.
Retainage release is a collections process with a completion trigger. Treat it like revenue, because it is.
| Follow-up habit | Result |
|---|---|
| Trigger + docs known early | Release is a project, not a surprise |
| Closeout package complete | Faster funding; fewer kickbacks |
| Calendar + owner of the chase | Balances don't age into oblivion |
| Deposit clears retainage AR | Books and cash forecast stay honest |
| Sub retainage paid on schedule | Payable clears; fewer disputes |
Retainage is one of the most predictable cash drains in construction. Growth rarely helps: each finished job's release is often outweighed by new holdbacks on bigger jobs. The faster you grow, the more working capital sits in retainage receivable.
Retainage rules vary by state — caps on public (and sometimes private) work, release timing, and prompt-payment consequences. We will not summarize fifty states or quote Arizona statutes. Contractors who know their contract and state framework — with their construction attorney when it matters — collect faster than ones who wait politely.
This page is bookkeeping and cash-process hygiene, not legal advice. Disputes and notices belong with your construction attorney. Tax treatment of long-term contracts and retainage timing belongs with your CPA — Blackline coordinates; we do not prepare tax returns.
Retainage accounting is how you record and track the portion of progress billings held until contractual release — as retainage receivable (money held from you), retainage payable (money you hold from subs), release by job, and the related WIP and balance-sheet presentation — so cash plans and AR aging tell the truth.
Receivable is what the owner or GC is still holding from your billings. Payable is what you are still holding from subcontractors. GCs often have both on the same job; both should be visible by job on the books.
Use separate retainage receivable (and payable, if needed) accounts, bill the full earned amount on the pay app with retainage shown, tag everything to the job/project, and clear the retainage balance when release funds. QBO does not replace a release schedule or monthly tie-out.
Billed-to-date generally includes amounts billed that are still held as retainage. The held cash sits in retainage receivable. Mixing "cash collected" with "billed" warps over/under billing and cash forecasts.
As soon as contractual triggers are near — build the closeout package early, calendar follow-up at substantial completion (or your contract's trigger), and treat open retainage like a large receivable until it clears.
Yes. Retainage-by-job tie-out belongs in a construction month-end close. Ongoing close sits in Foundation (deeper WIP / job-cost work in Frame) after a DIG Diagnostic. Fractional CFO cash packaging is Blueprint. All custom-quoted — call (480) 617-2664 or contact. Blackline does not prepare tax returns; coordinate tax questions with your CPA.
Blackline Financial · 4320 E Brown Rd Suite 103, Mesa, AZ 85205 · (480) 617-2664