A commercial GC client came to us at the end of his second quarter with what he thought was a working capital problem.
Revenue was up 18% year over year. Backlog was strong. Margins were holding. But he was tapping his line of credit every other week and couldn't figure out why.
We pulled his receivables aging and his retainage receivable schedule.
He had $1.6 million sitting in retainage. Across 14 jobs. Some of it was 11 months past the project's substantial completion date.
He didn't have a working capital problem. He had a $1.6 million accounts receivable problem and his accounting team had stopped chasing it because it was "just retainage." That's $1.6 million of his money, sitting in a customer's bank account, earning the customer's interest, on jobs that were finished.
That story is the most common cash flow issue we see in $10M-$70M construction companies. And almost none of them are tracking it the way they need to.
Let's dive in.
Retainage (sometimes called retention) is the portion of a contractor's payment that the customer holds back on every progress invoice until the project is complete. Standard practice is 5%-10% of each billing. Public works projects often have it written into the contract by statute. Commercial private projects almost always negotiate some form of it.
The theory: the customer holds back 5%-10% as a guarantee that the contractor finishes the work, completes the punch list, and delivers a finished project. Once the project hits substantial completion and the punch list closes, retainage releases.
The practice: retainage release is one of the most administratively friction-loaded events in construction billing, and most contractors are losing 60-180 days of cash on every job because nobody is actively chasing it.
A $25M commercial GC with 5% retainage on every job is, at any given moment, sitting on roughly $1.25M of retainage receivable assuming a normal revenue mix and project duration.
If that retainage takes 90 days post-completion to release on average instead of 30 days, the contractor is funding an extra 60 days of carrying cost on the full $1.25M balance. Run the numbers: 60 days out of 365 against $1.25M is roughly $205K of working capital tied up on average, every single day, on a permanent basis.
At 8% borrowing cost on the line of credit, that's $16K per year in interest the contractor is paying to fund the customer's cash position. On a $25M business at 3% net, $16K is 2% of the year's profit. Wiped out by administrative friction.
That's the small number. The bigger one is what happens when retainage stretches past 6 months on multiple jobs at once, which is what happened to the GC above. That's when retainage stops being an interest cost and starts being a liquidity event.
We covered the broader cash flow picture in our construction cash flow management post. Retainage is one of the four largest cash levers in any construction business. And it's the one almost nobody actively manages.
Most contractors blame customers for slow retainage release. Sometimes that's right. More often, it isn't.
We've worked retainage release across hundreds of jobs at this point. The same five issues account for most of the delay, and four of them are inside your business.
The contract says retainage releases "upon project completion" or "upon final acceptance." Those are not events. They're concepts. Real triggers are: substantial completion certificate signed, punch list closed and signed off, final lien waivers submitted, as-builts delivered, O&M manuals handed over, training complete.
If the contract doesn't define which event triggers release, your client gets to define it. They will define it generously to themselves.
Six months after substantial completion there's still a door latch and a paint touch-up on the punch list. They cost you $400 of subcontractor time to fix. They're stopping $80K of retainage from releasing. Nobody on your team has prioritized closing them because they're not interesting.
Final lien waivers from every subcontractor and supplier. Conditional and unconditional waivers, sometimes both. Final affidavits. As-builts. Closeout documents. Each one has to be in hand on the customer's terms before they cut the retainage check. Half-finished closeout packages sit on a PM's desk for weeks.
The PM is on the next job. The accounting team isn't tracking retainage release dates because the system doesn't surface them. The owner is focused on backlog. Three months after substantial completion the retainage hasn't been requested, much less paid.
This is the one most owners assume is the whole story. Sometimes it is, especially with developers or general contractors who are themselves cash-stretched. They have your retainage in their account. They don't want to release it. They'll find paperwork reasons not to.
Of the five, the fifth is the only one outside your control. The other four are your business. Fix those and you'll release retainage two to four months faster on average.
This is the system we install with every Civil CFO client in the first 90 days of an engagement. None of it is complicated. Most contractors just don't do it.
Stop letting retainage hide in your A/R aging like it's a normal invoice. Move it to a separate retainage receivable account in your GL. Track it by job, by retainage percentage, by substantial completion date, by expected release date.
Most contractors have retainage on their balance sheet as a single number. We want it as a schedule with one line per job. Without the schedule, you can't manage it. Without managing it, you don't release it.
This is where the actual money is made. Before the contract gets signed, you (or your team, or your construction attorney) writes in specific, measurable release triggers. Examples:
This level of specificity makes retainage release a checklist, not a negotiation. The customer can't drag it out indefinitely because the contract is unambiguous about what triggers what.
Substantial completion happens. The PM's instinct is to leave the punch list open and move to the next job. That's the discipline failure that costs $200K-$500K across a portfolio.
Build a closeout protocol. Punch list closure has a deadline. Closeout package assembly is on the PM's job. As-builts and O&M manuals are non-negotiable.
We've seen contractors with detailed mobilization protocols and zero demobilization protocol. That's where retainage dies.
The owner or controller pulls the retainage receivable schedule weekly. Any retainage older than the contract trigger date gets a follow-up email that day. Anything 60 days past trigger gets a phone call. Anything 120 days past gets escalated.
Just doing this on a schedule, with no system change beyond a calendar reminder, will pull $200K-$500K of cash forward for most $10M-$70M contractors in the first quarter we install it.
There's a second reason to manage retainage actively: it directly affects your bonding capacity.
Sureties look at retainage receivable as part of your working capital position. Retainage that's released on schedule looks like a healthy receivable. Retainage that's aged 180+ days looks like a collection risk and starts getting discounted in the surety's analysis.
A $25M civil contractor with $1.6M in retainage where $600K is over 180 days old will lose some portion of that $600K from the surety's working capital calculation. That's $300K-$600K of bonding capacity lost on a $5M-$10M single-job limit. Not because the contractor lost money. Because the contractor lost the receivable position.
We covered the bonding capacity math in detail in our bonding capacity post. Retainage discipline is one of the five biggest levers there.
Retainage shows up on the WIP schedule in two places: as a portion of billings to date (since you've billed it but it's been retained), and as a portion of receivables (since the customer owes it to you).
The most common WIP mistake we see around retainage: contractors who are technically overbilled on a job but who don't realize that 5%-10% of the "billings" are retainage that won't actually be collected for months. They're showing a healthy overbilled position that's masking an actual cash problem.
A clean WIP schedule separates the retainage portion of billings from the collectible portion. So does a clean A/R aging.
A specialty trade contractor we work with came to us with $1.1M in retainage receivable across 18 jobs. About $400K of it was over 120 days old. We installed the four-step system in their first 60 days of the engagement.
Twelve months later: retainage receivable was $620K across 16 jobs. The dollar amount on the balance sheet dropped because they were collecting it faster, not because revenue dropped. Working capital improved by $500K with zero change to revenue, margin, or financing. Bonding capacity went up at the next surety review for the same reason.
It wasn't a new system. It wasn't software. It was a schedule, a discipline, and somebody owning it.
In every engagement, retainage is one of the line items we review on the Monthly Sales and Operations Update Call. The retainage receivable schedule is part of the standard monthly CFO report. We track the age of every dollar of retainage by job. We chase release with you (and sometimes for you) the same way we'd chase any other receivable.
We've had clients pull $400K-$800K out of stale retainage in the first six months of an engagement just by paying attention to it. That's not consulting magic. It's money that was already theirs.
Civil CFO is the construction-pure Fractional CFO firm. Every CFO on our team has actually sat in the CFO seat at an 8 or 9-figure contractor. We work exclusively with $10M-$70M construction companies, single-owner and family-owned, trying to move from 1-3% net margin to 10%+ and build enterprise value that compounds.
Retainage is rarely the most exciting topic in a CFO conversation. It's almost always one of the most lucrative.