Esc

↑↓ move↵ openIndex · Pagefind

Retainage, lien waivers and pay apps on one record

A pay app, the retainage it withholds and the lien waivers that release it are one transaction. Most contractors track them in three places. Here's how each piece works and why they belong together.

os.construction team5 min readBillingAccounting
On this page
  1. The pay app: G702 and G703
  2. Retainage: the money you’ve earned but can’t touch
  3. Lien waivers: the paperwork that moves money
  4. Where three systems break
  5. What one record looks like

Pay app day has a rhythm. The PM marks up the schedule of values. The project accountant builds the AIA G702 and G703, calculates retainage, gathers backup and chases lien waivers from every sub paid last month. Somebody uploads it all to the owner’s portal and hopes nothing gets kicked back.

Look closely and those are not three tasks. They’re one transaction viewed from three angles: what you earned this period, what the owner is holding back, and the legal paperwork that lets money move. When they live in three systems, the pay app goes out late or wrong, and you get paid late.

Sample dataRiverside Medical Center, Job #24-118. Pay App #9: $2,310,400 of work this period, 10% retainage ($231,040). Lien waivers missing from Apex Steel and CoreDry. All illustrative.

The pay app: G702 and G703

Most commercial pay apps follow the AIA format, or a close cousin of it.

The G703 continuation sheet is the detail. Each row is a line from the schedule of values, and the columns walk across:

Column What it holds
A, B Item number and description
C Scheduled value
D Work completed from previous applications
E Work completed this period
F Materials presently stored, not in D or E
G Total completed and stored to date (D + E + F), with % (G ÷ C)
H Balance to finish (C − G)
I Retainage, when it varies by line

The G702 application is the summary on top: original contract sum, net change by change orders, contract sum to date, total completed and stored to date, retainage, total earned less retainage, less previous certificates for payment, current payment due, and balance to finish including retainage.

For Pay App #9, $2,310,400 of work this period at 10% retainage means $231,040 is withheld and $2,079,360 of this period’s work is actually payable. Every approved change order needs its own line on the G703 before it can be billed, which is where re-keyed change orders cause trouble.

Retainage: the money you’ve earned but can’t touch

Retainage is a percentage of each payment the owner holds back until the work is complete, as security that the contractor finishes and fixes what’s wrong. It’s commonly somewhere between 5 and 10 percent. Many contracts reduce it after the job reaches a milestone, often 50% complete, and many states limit retainage rates, especially on public work. The rules vary a lot by state and by contract, so read yours.

Two things make retainage harder than it looks:

  • It runs in both directions. The owner holds retainage from you (retainage receivable), and you hold retainage from your subs (retainage payable). Sub agreements usually mirror the prime contract, and the timing of releases needs to line up so you’re not paying out retainage you haven’t collected.
  • It’s tracked at the line level, but booked at the job level. The G703 can carry different retainage on different lines (stored materials, a sub that’s finished early, a reduced rate after a milestone). Accounting often carries one retainage receivable balance per job. Over months, the two drift apart.

At substantial or final completion, retainage is usually billed as its own application, along with closeout documents, punch list completion and final lien waivers.

Lien waivers: the paperwork that moves money

A lien waiver is a document in which a contractor, sub or supplier gives up some or all of its lien rights in exchange for payment. Owners and lenders want them because an unpaid sub can file a lien on the property even when the owner paid the GC in full.

There are four common types:

Type Use it when Takes effect
Conditional progress Requesting a progress payment Only once payment is received
Unconditional progress A progress payment has been received Immediately
Conditional final Requesting the final payment Only once payment is received
Unconditional final Final payment has been received Immediately

A typical exchange: with Pay App #9, the owner asks for your conditional progress waiver for this period, plus unconditional progress waivers from you and your subs for the money paid on Pay App #8. If Apex Steel and CoreDry haven’t returned theirs, the owner can hold the whole payment, not just their share.

Not legal adviceSeveral states require specific statutory waiver forms, and an unconditional waiver signed before payment clears can give up rights even if the payment never arrives. Have a construction attorney review your forms and process.

Where three systems break

In a typical stack, the pay app lives in a billing spreadsheet or the PM platform, retainage lives in the accounting system, and waivers live in email and a shared folder. The failures are predictable:

  • Retainage that doesn’t tie. The total retainage on the latest G703 doesn’t match the retainage receivable balance in the ledger, and nobody notices until the release.
  • Releasing sub retainage too early. A sub’s retainage gets paid before the owner releases yours, and you’re funding the gap.
  • Wrong waiver, wrong amount. A waiver comes back for the wrong amount or the wrong through-date, and it’s caught by the owner’s lender instead of by you.
  • Missing waivers discovered on submission day. The pay app is ready, the waivers aren’t, and it slips a cycle.
  • Change orders billed late. An approved CO isn’t on the SOV yet, so it waits another month.
PAY APP #9one recordSOV · CO lines · paymentsG702 / G703RETAINAGE LEDGERLIEN WAIVERS$2,310,400 this period$231,040 held at 10%2 missing
Three outputs, one source. Illustrative numbers.

What one record looks like

The fix isn’t a better spreadsheet. It’s making these three things views of the same data. Here’s how we’re designing it in os.construction (pre-launch, built with founding contractors):

  • The schedule of values is the contract. Each SOV line is the same line on the prime contract and the G703. Approved change orders add their line automatically, so they’re billable the day they’re approved.
  • Retainage is calculated per line and posted as it’s billed. Retainage receivable in the ledger is the sum of the G703 retainage, always, because it’s the same number. Retainage payable sits on each sub’s commitment and is linked to the billing period it came from, so releases can follow the owner’s release.
  • Waiver requirements are generated from payments. Every payment made to a vendor creates a requirement for the matching unconditional waiver, for that amount and through-date. Every pay app creates a requirement for your conditional waiver. The pay app checklist shows what’s missing before you submit, not after.
  • One audit trail. Who changed a scheduled value, who approved the pay app, when each waiver arrived and who accepted it.
Monthly tie-out, whatever system you useG703 retainage total equals the retainage receivable balance for the job. Sub retainage payable is tracked against what the owner is holding. Every waiver received matches a payment made, by amount and through-date.

Pay apps are where field progress turns into cash. They deserve better than three systems and a checklist taped to a monitor. If yours run on spreadsheets and email, get early access and tell us what your owners ask for.

Share this article

Written by

os.construction team

We're building the operating system for construction: projects, accounting, analytics and AI agents on one data core. We write about how money and data actually move on a job, and we build in public with founding contractors.

Join the founding cohort →