Contractor Guide

Retainage is earned money you still have to collect

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.

The short answer

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.

The math on a job (illustrative)

Numbers below are illustrative — not industry averages or client results. Use them to see how retainage stacks, not as a bid rule.

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 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.

Retainage receivable vs payable

These are opposite sides of the same idea. Both matter — especially if you are a GC.

SideWho you areWhat it isBooks 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.

HabitResult
Receivable and payable both by jobRelease and closeout are operational, not forensic
Everything in trade AR / APAging lies; "past due" that nobody can collect yet
GC tracks only what they are owedSub retainage surprises at closeout
Payable treated as spendable cashWorking capital story is fake

Recording retainage in QuickBooks Online

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

  1. Separate GL accounts. e.g. Retainage receivable (asset) and, if you hold from subs, Retainage payable (liability). Do not dump retainage into Undeposited Funds or a miscellaneous clearing account.
  2. Invoice / pay-app for the full earned amount, with retainage shown as a line or deduction so billed-to-date on the job matches the pay application.
  3. Move or code the held slice into retainage receivable (and, on the sub side, retainage payable) in the same period — not "later when we have time."
  4. Use Customers / Projects (jobs) so every retainage balance is attributable to a job. Without job tags, release tracking dies.
  5. When retainage is released, record the receipt (or the sub payment) against the retainage balance for that job — not as new income and not as a random AR credit with no trail.

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 habitPassFail
Chart of accountsDistinct retainage receivable / payableRetainage mixed into trade AR/AP
Job / projectEvery retainage balance tagged to a jobCompany-level blob with no job
Period disciplineSplit booked when the pay app posts"We'll clean it up at year-end"
ReleaseClears the retainage balance on that jobNew 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.

Tracking release by job

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

FieldWhy
Job name / numberEverything ties to WIP and AR
Contract retainage % (and any step-downs)Math source of truth
Retainage held to dateBalance that should match the books
Trigger for releaseSubstantial completion, final acceptance, punch complete, docs in, etc. — per contract
Expected / target release dateFeeds 13-week cash flow
What's blockingPunch list, closeout package, waiver chain, owner paperwork
Owner / GC contactWho 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 on the WIP and balance sheet

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.

SeatTypical presentationWatch-out
Retainage receivableAsset (often broken out from trade AR)Buried in trade AR → fake "past due"
Retainage payableLiabilityTreated as cash available to spend
Contract assets / liabilitiesPer your WIP / POC presentationMust 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.

Collection follow-up process

Retainage release is a collections process with a completion trigger. Treat it like revenue, because it is.

  1. Know the trigger before you need it. At job start (or at first pay app), note what the contract says releases retainage — and what documents you will need. Put the expected window on the release schedule and on the cash forecast as its own line (not "AR whenever").
  2. Build the closeout package early. Punch lists, as-builts, O&M manuals, warranties, final lien waivers, and whatever else the contract or lender wants. The contractor who submits a complete package gets paid months before the one who dribbles docs. Lien-waiver tie-out to payments and pay-app periods is bookkeeping hygiene; questions about legal effect or statutory forms are for your construction attorney — educational only here, not legal advice.
  3. Calendar the chase. When the job hits substantial completion (or your contract's trigger), open a retainage follow-up: who owes the release, what was submitted, what is still open, next touch date. Weekly until funded — same seriousness as a large past-due invoice.
  4. Match the deposit to retainage, not generic income. When release funds, clear retainage receivable for that job. Wrong coding recreates the ghost balance you just collected.
  5. GCs: release subs when you should. Retainage payable is not a rainy-day fund. When conditions are met (and your own receipt timing per contract), pay the sub retainage and clear the liability. Holding subs loosely while complaining about your own holdback is how relationships and waiver chains break.
Follow-up habitResult
Trigger + docs known earlyRelease is a project, not a surprise
Closeout package completeFaster funding; fewer kickbacks
Calendar + owner of the chaseBalances don't age into oblivion
Deposit clears retainage ARBooks and cash forecast stay honest
Sub retainage paid on schedulePayable clears; fewer disputes

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

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.

  1. Bid knowing your real cash margin. If retainage is 10% and your margin is ~10%, spendable profit waits on release — price accordingly (markup vs margin).
  2. Put retainage releases on the 13-week cash flow as their own lines, tied to realistic closeout dates — not invoice dates.
  3. Negotiate where the contract allows. Step-downs, stored materials, and sub-line retainage are often discussable at bid or buyout. (Business judgment — not legal advice.)
  4. Chase release like it's revenue — process above beats waiting politely.

Know your state's rules (high level)

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.

FAQ

What is retainage accounting?

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.

What is the difference between retainage receivable and retainage payable?

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.

How do you record retainage in QuickBooks Online?

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.

How does retainage show on the WIP schedule?

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.

When should we chase retainage release?

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.

Can Blackline track retainage by job in our monthly close?

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.

Want a monthly close that tracks retainage by job?

Get a custom quote →

Services and packages

(480) 617-2664

Blackline Financial · 4320 E Brown Rd Suite 103, Mesa, AZ 85205 · (480) 617-2664