Skip to content

My Blog

Retainage Accounting for Contractors: The Practical Guide

Hands managing contractor project ledger

Retainage is a receivable only when your right to that money is unconditional, meaning nothing stands between you and collection except the passage of time. If the owner can still withhold payment pending punch-list completion, a milestone, or final acceptance, that balance belongs in contract assets or contract liabilities under ASC 606. Take three steps right now: (1) pull every active contract and identify the exact triggers that release retainage, (2) classify each retained balance as a receivable or contract asset based on those triggers, and (3) post the amounts to separate GL accounts and start aging them by project.

  • Step 1 — Review contract triggers: Read the retainage release clause. “Substantial completion” or “owner acceptance” means the balance is still conditional. “30 days after invoice” with no performance condition means it is unconditional.
  • Step 2 — Classify per ASC 606: Unconditional retained amounts go to Retainage Receivable. Conditional amounts stay in Contract Assets (or offset Contract Liabilities if you are in an overbilled position on that contract).
  • Step 3 — Record and age separately: Never fold retainage into your general accounts receivable bucket. Separate GL accounts and a project-level aging report are the minimum.

Pro Tip: Set up dedicated GL accounts named “Retainage Receivable” and “Retainage Payable” from day one. Age them by project every month. Lenders and sureties read your balance sheet differently when retained dollars are visible and organized rather than buried in a general AR line.


Key Takeaways

Retainage classified correctly under ASC 606, posted to separate GL accounts, and aged monthly by project is the difference between a cash-flow surprise and a managed, predictable receivable.

Point Details
Classification drives everything Retainage is a receivable only when unconditional; otherwise it belongs in contract assets or liabilities under ASC 606.
Separate GL accounts are non-negotiable Post Retainage Receivable and Retainage Payable as distinct accounts and age them by project every month.
Retainage commonly falls within a percentage range that is typically negotiated within construction contracts, impacting progress payment amounts. Industry practice holds 5% to 10% per progress payment, accumulating to material working-capital exposure across active jobs.
Cash-flow forecasting must include retainage Map expected release dates and probability-weighted collection amounts in your monthly forecast to avoid payroll shortfalls.
Truemeasureaccounting manages the full workflow From GL setup and pay-app posting to monthly aging and release checklists, Truemeasureaccounting handles retainage accounting for contractors nationwide.

Table of Contents

What is retainage and how does it work in construction contracts?

Retainage, sometimes called “retention,” is the portion of each progress payment that an owner withholds from a contractor until the project reaches a defined completion milestone. Owners use it as a performance incentive and a financial backstop against defective work or incomplete punch lists. For contractors, it is earned revenue sitting in someone else’s bank account.

Industry practice typically holds retainage between 5% and 10% of each progress payment. For example, in a contract billed in multiple draws with retainage applied, a significant cumulative amount may be withheld before any retained funds are released, impacting cash flow. That accumulation materially affects working capital and cash collection timing on every project you run simultaneously.

Common contract structures you will encounter:

  • Flat retainage: A fixed percentage withheld on every pay application through final completion.
  • Step-down retainage: Starts at 10%, drops to 5% once the project reaches 50% completion. This is worth negotiating on every contract.
  • Milestone release: Retained funds released in tranches tied to defined milestones such as rough-in inspection, substantial completion, and final closeout.
  • Escrow or trust accounts: Some contracts and state statutes require retained funds to be held in a separate interest-bearing account.

Worked pay-application example:

  1. Contract amount: $500,000
  2. Work completed this period: $100,000
  3. Retainage withheld (10%): $10,000
  4. Net cash collectible this period: $90,000
  5. Cumulative retainage held after this draw: $10,000 (grows with each application)

State law matters here. Public and private contracts carry different retainage caps, and many states have moved toward lower statutory limits and mandatory prompt-release windows. Always verify the rules in your project’s jurisdiction before signing, because a contract clause that exceeds a state cap may be unenforceable.


How ASC 606 classifies retainage as a receivable or contract asset

The classification decision under ASC 606 is binary and it hinges on one question: is your right to the retained amount unconditional?

Per FASB Topic 606, a receivable is an entity’s right to consideration that is unconditional, meaning only the passage of time is required before payment is due. Retainage is a receivable only when the contract language confirms that nothing other than time stands between you and collection. If the owner can still withhold payment pending punch-list completion, a milestone, or final acceptance, that balance belongs in contract assets or contract liabilities.

Step-by-step classification checklist:

  1. Identify the payment trigger in the contract. Read the exact retainage release clause. Does it say “30 days after substantial completion” or “upon owner’s written acceptance”?
  2. Determine whether the trigger is a performance condition. If the owner’s acceptance or punch-list sign-off is required, that is a performance condition. The balance is a contract asset.
  3. Check the net position at the contract level. Under ASC 606, you net all contract-related balances at the contract level, not the performance-obligation level. A contract where you have overbilled relative to revenue recognized produces a contract liability, even if retainage is embedded in that balance.
  4. Test for unconditional status. If the only remaining condition is calendar time (e.g., a 30-day payment window after a milestone already achieved), reclassify to Retainage Receivable.
  5. Evaluate significant financing component. If retainage is held for an extended period after the unconditional test is met, ASC 606 requires you to evaluate whether the payment terms create a significant financing component and disclose accordingly.

CFMA guidance reinforces that retainage is often conditional on milestones or punch-list completion, so most retainage balances on active projects should sit in contract assets, not receivables. The classification must be made at the contract level, and net contract asset and liability positions are presented on a contract-by-contract basis.

Statistic callout: Industry data shows retainage typically ranges from 5% to 10% per progress payment. On a $5,000,000 project, that is up to $500,000 in earned but uncollected revenue sitting in contract asset balances, often for 12 months or longer.


How to record retainage in your accounting records

Correct journal entries are where classification becomes real. The goal is to recognize full revenue earned, segregate the retained portion, and keep the aging clean.

Progress billing with retainage withheld

Revenue is recognized at the full $100,000 earned. The $90,000 hits regular AR and is collectible on normal terms. The $10,000 goes to a separate Retainage Receivable account and ages independently.

When retainage becomes unconditional

Once the contract triggers are satisfied (substantial completion accepted, lien waivers exchanged), reclassify the retained balance.

Now the full amount is in AR and collectible on standard payment terms. When cash arrives:

Retainage payable to a subcontractor

When you withhold retainage from a subcontractor, the mirror entry creates a liability.

When you release the sub’s retainage after their work is accepted:

Before-and-after balance summary for a sample contract:

Separate GL accounts for Retainage Receivable and Retainage Payable are the foundation of clean retainage accounting. Mixing retained amounts into general AR produces misleading cash forecasts and overstates near-term collectibility.

Pro Tip: At month-end close, net your contract asset and contract liability positions at the contract level before presenting them on the balance sheet. A contract where you are overbilled should not show a contract asset even if retainage is embedded in the balance. Run this netting calculation by job, not by company.


Where retainage appears on the balance sheet and what to disclose

Presentation choices signal financial sophistication to lenders and sureties. Getting this right is not just a GAAP requirement; it directly affects your bonding capacity.

Three presentation options for retainage on the balance sheet:

  • Parenthetical disclosure: Present retainage within the Contract Assets or Accounts Receivable line and add a parenthetical note showing the retained amount included. Example: “Contract Assets $450,000 (including retainage of $85,000).”
  • Subtotal within a caption: Break the balance sheet line into two subtotals, one for billed amounts and one for retainage, under a single caption.
  • Separate line item: Present Retainage Receivable as its own line on the balance sheet, distinct from Contract Assets and Accounts Receivable.

FASB staff and CFMA both recommend voluntary disclosures that call out the amount of retainage included in contract asset and liability balances. This gives lenders and sureties decision-useful information they cannot easily derive from a combined line.

Current vs. noncurrent classification: Most construction businesses classify all contract-related balances as current, given that the operating cycle in construction typically exceeds 12 months. This is consistent with CFMA guidance and is the dominant practice. If a specific retained balance will clearly not be collected within the operating cycle, noncurrent classification is appropriate.

Sample footnote disclosure contractors can adapt:

Topic 606 disclosure requirements under paragraphs 606-10-50-8 through 50-10 require you to explain opening and closing balances of receivables, contract assets, and contract liabilities, and how the timing of your performance relates to payment timing. Never mix retainage into general AR or AP on the face of the balance sheet; doing so obscures the true collectibility picture.


How retainage affects your cash flow and which KPIs to watch

Revenue recognition and cash collection are two different events in construction. You can show a profitable job on paper while the cash is sitting in the owner’s account for another six months.

The timing gap is structural. You earn revenue as you complete work, but retained amounts do not convert to cash until the release conditions are met. That gap has to be funded from somewhere.

Retainage KPIs every contractor should track monthly:

  1. Retainage as a percentage of total billed: (Total Retainage Held / Total Billed to Date) × 100. A rising percentage signals accumulating exposure.
  2. Average retainage days outstanding: (Total Retainage Balance / Average Monthly Revenue) × 30. Tracks how long retained dollars sit before collection.
  3. Retained dollars by project: A simple aging column in your retainage register showing how long each project’s retained balance has been outstanding.
  4. Collection lag: Days from substantial completion to retainage cash receipt. Track this by project and average it across your portfolio.
  5. Working-capital ratio adjusted for retainage: (Current Assets excluding Retainage Receivable) / Current Liabilities. This tells you your true liquid working capital, not the inflated version that includes uncollected retained funds.

A 12-month cash-flow forecast should include a dedicated retainage release column. Map each project’s expected release date, the dollar amount, and the probability of on-time collection. Retainage that slips past its expected release date by 60 days is a collection problem, not a timing issue.

Track it as a separate line in your cash-flow model. If a project stalls or an owner disputes the punch list, that reserve is the buffer between you and a payroll shortfall.*


Operational best practices for managing retainage risk

Good retainage management starts at contract signing, not at project closeout. The controls you put in place before the first pay application determine how smoothly retained funds flow back to you.

Contract clauses worth negotiating before you sign:

  • Step-down retainage from 10% to 5% at 50% completion
  • Defined milestone release dates tied to measurable events, not subjective owner satisfaction
  • Prompt-release windows (30 days after substantial completion is standard in many states)
  • Escrow or trust account requirements for retained funds on large projects
  • Clear lien-waiver exchange triggers that do not create circular dependencies

Internal controls that prevent retainage from going dark:

  • Maintain a retainage register updated with every pay application
  • Reconcile the register to the job-cost ledger monthly
  • Require delegated approval for retainage releases and match every release to a signed lien waiver
  • Flag any retained balance outstanding more than 90 days past the expected release date for escalation

Passing retainage down to subcontractors requires mirror language. Mismatched retainage terms create a cash-flow mismatch where you release sub retainage before you collect from the owner.

Sample retainage register columns:

Tracking retainage separately and aging it by project is the single most effective way to prevent retained balances from disappearing into the background noise of a busy job schedule. Failing to do so often results in underreporting of retained balances until the final invoice, at which point collection becomes a scramble.

Hands aging retainage accounts sheet


How to set up retainage tracking in QuickBooks and common ERPs

The accounting structure only works if your software mirrors it. Here is a practical setup for QuickBooks Online and the principles that apply to most construction ERPs.

QuickBooks Online setup checklist:

  1. Create two new accounts in your Chart of Accounts: “Retainage Receivable” (Other Current Asset) and “Retainage Payable” (Other Current Liability).
  2. Create a retainage line item: Add a non-inventory item called “Retainage Withheld” mapped to the Retainage Receivable account. Use a negative amount on invoices to reduce the net collectible.
  3. Record each pay application as two line items: One for the full earned amount (mapped to revenue), one negative retainage line (mapped to Retainage Receivable). The invoice total equals the net cash collectible.
  4. Track by job: Assign every retainage transaction to the correct customer/job so your job-level reports show retained balances by project.
  5. Run a monthly Retainage Receivable aging report: Filter by job and sort by invoice date. Any balance older than 90 days past expected release needs a follow-up action.
  6. Transfer to AR at release: When retainage is released, create a journal entry debiting Accounts Receivable and crediting Retainage Receivable. Then apply the incoming payment to the AR balance.

For subcontractor retainage payable, reverse the logic. Enter bills with a negative retainage line mapped to Retainage Payable. When you release the sub’s retainage, pay the Retainage Payable balance directly.

ERP best practices follow the same logic at greater scale. Use job-costing sub-ledgers to maintain contract-level detail. Configure contract-level netting so your WIP schedule automatically nets contract asset and liability positions by job. Set up automated aging alerts for retained balances that exceed your statutory release windows.

Hands setting job costing records

Pro Tip: Automate an alert in your accounting system for any Retainage Receivable balance that is 30 days past its expected release date. A simple aging threshold alert costs nothing to set up and prevents the common scenario where a $40,000 retained balance sits uncollected for six months because no one flagged it.


When does retainage become unconditional? A reclassification checklist

Reclassifying retainage from a contract asset to a receivable is a judgment call that needs documentation. Auditors, lenders, and sureties will ask for the support.

Yes/no reclassification checklist:

  1. Have all contractual performance triggers been satisfied? (Substantial completion, punch-list sign-off, final inspection)
  2. Has the owner provided written acceptance or a certificate of substantial completion?
  3. Have all required lien waivers been obtained from subcontractors and suppliers?
  4. Has the statutory release period elapsed (if applicable in your state)?
  5. Are there any open disputes, claims, or back-charges from the owner that could reduce the retained amount?
  6. Is the remaining condition purely the passage of time (a payment window), with no performance obligation outstanding?

If you answered yes to questions 1 through 4 and no to question 5, the balance qualifies for reclassification to Retainage Receivable.

Supporting documents to retain in the project file:

  • Signed certificate of substantial completion or owner acceptance letter
  • Final conditional and unconditional lien waivers from all subcontractors and suppliers
  • Correspondence confirming milestone completion (emails, inspection reports, punch-list sign-offs)
  • Payment schedule or retainage release schedule from the contract
  • Any change orders affecting the retained amount

When to escalate to legal review: CFMA guidance notes that when retainage is believed to be unconditional, contractors should document the analysis and consider whether a legal opinion is necessary to support classification as a receivable, particularly for audit or lender and surety review. If the owner is disputing acceptance, if there are unresolved claims, or if the contract language is ambiguous, get a legal opinion before reclassifying. The cost of that opinion is far less than a misstatement on a bonded project.


How Truemeasureaccounting implements retainage workflows for contractors

The workflow Truemeasureaccounting uses with contractor clients is built around one principle: retainage should never be invisible. Every retained dollar should have a project name, an expected release date, and an owner responsible for collecting it.

The Truemeasureaccounting retainage workflow, step by step:

  • Contract review at bid stage: Review retainage clauses before signing. Flag step-down opportunities, escrow requirements, and release trigger language.
  • GL setup: Configure Retainage Receivable and Retainage Payable accounts at onboarding. Map them to job-level items in QuickBooks or the client’s ERP.
  • Monthly pay-app posting: Post each pay application with full revenue recognition and segregated retainage entries. No mixing into general AR.
  • Monthly retainage aging: Produce a project-level retainage aging report every month-end. Flag balances past expected release dates.
  • Cash-flow forecasting: Include a retainage release column in the monthly cash-flow forecast with probability-weighted collection dates.
  • Release checklist at substantial completion: Run through the reclassification checklist above before posting the transfer from Retainage Receivable to AR.

Templates the team uses (available on request):

  • Retainage register (project-level, with aging and status columns)
  • Monthly billing checklist (pay-app to GL posting steps)
  • 12-month cash-flow forecast with retainage release column
  • Month-end close checklist for construction clients

The before-and-after picture for contractors who implement this workflow is consistent: retained balances that were previously buried in general AR become visible, collectible, and tracked. Collection lags shorten because someone is watching the aging every month instead of discovering a $75,000 retained balance at year-end.

This workflow is most impactful for HVAC contractors, plumbing companies, electrical contractors, and general contractors running multiple simultaneous projects, where retainage accumulation across jobs can represent a significant portion of working capital. It also applies directly to trucking and transportation businesses that operate under contract terms with holdback provisions.


What running contractor finance teams taught me about retainage

The most expensive retainage lesson is the one you learn at payroll time. A contractor with $200,000 in outstanding retainage across six projects is not cash-rich. That money is real, but it is not liquid, and the gap between those two facts has caused more than a few otherwise profitable businesses to scramble for a line of credit in the final weeks of a project.

The fix is not complicated. Make retainage visible every single month. Put it on a report that the owner sees, not just the bookkeeper. When retained dollars are on a dashboard with expected release dates, owners make different decisions: they follow up on punch lists faster, they push back on vague acceptance language, and they stop treating retainage as a pleasant surprise at project end.

Three things I would tell every contractor owner right now: insist on clear, written release triggers in every contract before you sign, treat every dollar of outstanding retainage as working-capital risk (not guaranteed revenue), and build the retainage release schedule into your cash-flow forecast from day one. Operational finance, not just bookkeeping, is what turns retainage from a cash-flow hazard into a managed, predictable receivable.


Retainage accounting and cash-flow clarity, handled for you

Contractors running $500,000 to $5,000,000 in annual revenue often have the most retainage exposure relative to their working capital, and the least infrastructure to manage it. That is exactly the gap Truemeasureaccounting fills.

Truemeasureaccounting

Truemeasureaccounting provides bookkeeping services built specifically for contractors, including retainage tracking by project, QuickBooks cleanup and GL restructuring, fractional CFO retainage workflows, job-cost reporting, and monthly cash-flow forecasting with retainage release columns. Clients get clearer working-capital visibility, faster subcontractor pass-through, and fewer end-of-project cash surprises. The firm serves HVAC companies, plumbing contractors, electrical contractors, and general contractors across Georgia, Florida, South Carolina, Alabama, Tennessee, and nationwide through virtual services. To request a retainage register template or schedule a consultation, visit Truemeasureaccounting and connect with the team directly.


Sources

The sources below back the technical and practical claims in this guide. Use the FASB and CFMA materials for audit and lender conversations; use the industry guides for day-to-day implementation.

This article is general information, not a substitute for advice from a qualified financial advisor. Consult a qualified financial professional about your own circumstances before acting on anything here.

Share this post: