There’s a quiet failure mode in construction accounting that almost every finance leader recognizes—but very few systems actually model well.
It doesn’t usually show up as an error.
It shows up as confusion.
What this looks like in real life
Most of us have lived some version of this:
-
An invoice shows as “current” in AP
-
Cash forecast looks fine
-
Day 61: the vendor calls asking why they haven’t been paid
-
AP responds: “We’re still waiting on the owner”
No system clearly shows this tension.
It usually lives in someone’s head—or a spreadsheet.
Why this happens
Most accounting systems track invoice age, not conditional liability.
“Pay-when-paid” is:
Once an invoice is entered, the ERP treats it like any other payable—even if it cannot legally be paid yet.
A real conversation with a GC CFO
One CFO explained it better than any whitepaper:
“Not every invoice is pay-when-paid.
Some subs file an NTO on one job but not another.
That means this invoice is conditional—this other one isn’t.
Before I pay, I need to:
– know whether an NTO exists
– confirm I’ve been paid by the owner
– collect lien releases
But once the invoice is entered, every system ages it the same way.”
The result: two mental ledgers
Most teams end up running two parallel realities:
-
What’s owed
-
What’s actually payable
And no report cleanly separates the two.
Where systems usually break down
-
Conditional invoices look identical to normal invoices
-
Aging reports overstate true obligations
-
Cash planning assumes invoices are payable when they’re not
-
Finance and project teams operate off different mental models
The workarounds teams rely on
To cope, teams invent shadow systems:
-
Excel trackers for “conditional AP”
-
Notes like “PWP – do not pay”
-
PM verbal confirmation loops
-
Manual lien-release chasing
These work… until:
-
someone goes on vacation
-
a PM leaves
-
audit season hits
Why this never quite gets fixed
A few structural reasons:
-
ERPs are built for posting, not contract enforcement
-
Contract terms aren’t machine-readable
-
Finance wants certainty; operations need flexibility
-
Everyone agrees it’s a problem—no one clearly owns it
What automation can realistically help with
Automation won’t solve everything—but it can help by:
-
Flagging invoices tied to conditional terms
-
Separating “owed” vs “payable” views
-
Adding service-date and job context to conditional AP
-
Surfacing hidden aging risk before vendors escalate
What automation cannot fix
-
Poorly written contracts
-
Missing lien releases
-
Owner payment delays
But simply making pay-when-paid visible—instead of tribal knowledge—already changes how teams forecast cash, manage risk, and sleep at night.
Curious:
How does your team track pay-when-paid today—system, spreadsheet, or memory?