A lien waiver is a signed release of your right to file a mechanic's lien for work or materials up to a stated date or amount. Track each one against the payment it covers: send the conditional form with the pay application, sign the unconditional form only after the funds clear, and flag any mismatch in date or amount.
Mechanic's lien rights, and the waivers that release them, are set state by state, so every form described here is a pattern for your tracker and not text to sign. A number of states prescribe exact wording. Have a construction lawyer confirm the forms for each state you work in, once, then lock them as templates. If your jobs fall under a different system, the tracking idea carries over but the forms and deadlines will not.
Most explanations stop at the definition. The money is lost later, in three places: an unconditional waiver signed before the funds clear, a through date or amount that does not match what was billed and paid, and a final waiver that releases retainage you have not received. All three are tracking failures, not knowledge failures, which is why a sheet fixes them.
The sheet below suits any small trade. The worked example is a six-person HVAC contractor on a tenant fit-out; a signage company, a security installer or a solar installer would use the same columns with different job names.
Four forms, one rule: the form must match the payment
There are four standard waivers, and the sheet needs a code for each. Progress forms cover one payment on a job that continues. Final forms close the job. Conditional forms take effect only when you are paid. Unconditional forms take effect the moment you sign.
| Form (code) | Sign it | Takes effect | What it releases |
|---|---|---|---|
| Conditional, progress payment (CP) | With the pay application, or any time before payment | Only when the payment is received | Rights for the period or through date stated |
| Unconditional, progress payment (UP) | After the payment has cleared | At once, on signing | Rights through the stated date, for the amount received |
| Conditional, final payment (CF) | With the final pay application | Only when the final payment is received | All remaining rights on the job |
| Unconditional, final payment (UF) | After the final payment has cleared | At once, on signing | All remaining rights on the job |
Underneath all four sits one rule: conditional forms rely on a promise of payment, and unconditional forms rely on money already in your account. Levelset's guide calls unconditional waivers more dangerous than conditional ones and says the safest habit is to use conditional forms until payment has actually cleared. "Cleared" means the funds are yours to spend. A cheque in your hand is a promise; a settled deposit or received transfer is money.
Two blanks cause most of the trouble: the through date, which says how far back the release reaches, and the amount, which must match the payment the form covers. One state's statutory conditional progress form asks for the claimant, the customer, the job location, the owner, the through date, and the maker, amount and payee of the cheque. It then lists what the form does not release: retentions, extras not yet paid, earlier progress payments that were waived but remain unpaid, and contract rights. Other states' progress forms described in the guides I read also carve out retention, in different words. A final form works differently: it releases whatever remains, and the progress form's carve-outs do not carry over by themselves, so ask your lawyer how your state's final form handles a disputed amount.
Counts of how many states prescribe wording change with legislation. The Levelset guide, for one, says 12 states require specific forms and three require notarisation, and it calls the notarisation rule explicit in only one of those three. Treat a count like that as a reason to ask your lawyer which rules apply to you, not as a map. Each waiver in the tracker gets exactly one form code (CP, UP, CF or UF), and the code decides which checks run on it.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowA tracker with three tabs
One flat list cannot do this job, because a waiver is not the same thing as a payment. A pay application produces one payment, which should produce one conditional and one unconditional waiver from you. It also produces waivers coming the other way, from the subcontractors and suppliers you pay. Three tabs keep those relationships visible: PayApps for what you bill and receive, Given for the waivers you sign, and Collected for the waivers you gather.
Name the tabs exactly that, with no spaces, so the formulas below work as written. First, PayApps, with one row for each pay application including the final one:
| Col | Header | What goes in |
|---|---|---|
| A | Job | A short job code, identical on every tab |
| B | Pay app no. | 1, 2, 3 and so on; the final application takes the next number |
| C | Through date | The period end shown on the application, as a real date |
| D | Billed this period | Work completed in the period, before retainage |
| E | Retainage held back | The amount withheld on this application |
| F | Retainage released | Zero until a release is billed, usually with the final application |
| G | Net due | Formula: billed minus held plus released |
| H | Date submitted | The day the application went to the customer |
| I, J | Amount and date received | From the remittance advice, not from what you billed |
| K | Funds cleared | The day the money was usable; leave blank until then |
| L, M | Waiver checks | Formulas that show a missing conditional waiver or a due unconditional one |
Second, Given, with one row for each waiver you sign. The form code (CP, UP, CF or UF) belongs in a drop-down list so nobody types "Cond. prog." and breaks the formulas.
| Col | Header | What goes in |
|---|---|---|
| A, B, C | Waiver ID, Job, Pay app no. | The link back to the application the waiver covers |
| D | Form code | CP, UP, CF or UF |
| E, F | Through date and amount on the form | Copied from the signed form itself, not from the application |
| G | Date signed | Blank until signed; a drafted waiver is not a signed one |
| H | Notary needed | Yes or no, from your lawyer's form notes |
| I to L | Lookups from PayApps | Through date, net due, amount received and cleared date for the same application |
| M to P | Flags | Unconditional signed before funds cleared; through date mismatch; amount mismatch; earlier payments on the job still short (final forms) |
| Q, R | Status and file link | OK, CHECK or Unsigned draft; a link to the signed PDF |
Third, Collected, with one row for each subcontractor or supplier, for each pay application:
| Col | Header | What goes in |
|---|---|---|
| A, B, C | Job, Pay app no., Party | Who is waiving, and on which application |
| D | Amount they billed you | For this application |
| E | Conditional received | The date their conditional waiver arrived |
| F | You paid them | The date the payment cleared |
| G | Unconditional received | The date their unconditional waiver arrived |
| H | Flag | Formula showing what is missing |
That is nearly 40 columns across three tabs, which sounds heavy and takes about an hour to set up. After that, each pay application costs a few minutes: add one row on PayApps, one or two on Given, and a row per sub on Collected. The checks run themselves.
One job, four pay applications, tracked end to end
The job is a $184,000 subcontract held by a six-person HVAC contractor on a tenant fit-out for a general contractor, with 10% retainage, a sheet-metal supplier and a controls subcontractor. Every figure is made up. This is how the tracker reads once the final payment has cleared.
| Pay app | Through | Billed | Held back | Net due | Received | Cleared | What the tracker says |
|---|---|---|---|---|---|---|---|
| 1 | 31 Jan | $46,000 | $4,600 | $41,400 | $41,400 | 17 Feb | CP signed 1 Feb, UP signed 17 Feb: OK |
| 2 | 28 Feb | $62,000 | $6,200 | $55,800 | $55,800 | 17 Mar | CP signed 1 Mar, UP signed 17 Mar: OK |
| 3 | 31 Mar | $50,000 | $5,000 | $45,000 | $42,900 | 18 Apr | CP signed 1 Apr; UP drafted for $45,000: CHECK |
| 4 (final) | 30 Apr | $26,000 | none; $15,800 released | $41,800 | $41,800 | 23 May | CF signed 1 May: CHECK; UF drafted: CHECK |
Applications 1 and 2 are the routine. The conditional waiver goes out with the application, so the customer can release funds without chasing paperwork. The unconditional waiver is signed on the day the funds clear, not before. On the PayApps tab the "unconditional due" column switches on at the cleared date, which means signing waits for money, not for a feeling that the cheque must be in the post.
Application 3 is where the tracker earns its keep. The general contractor paid $42,900 against $45,000 due and sent its standard unconditional waiver for $45,000 with the remittance. The amount flag lights up: the form says $45,000, the money received says $42,900. Signing would have released the right to claim the missing $2,100, which the customer was holding for a disputed back-charge. The sensible move is to sign nothing for more than you received, and to ask your lawyer how your state's form records an amount in dispute, because the wording rules vary. In this example the firm signs for $42,900 only, in wording the lawyer has approved.
The final application shows a quieter trap. Retainage of $15,800 was released with it, and the conditional final waiver matched the net due of $41,800, so the amount check passed. The fourth flag did not: earlier payments are still short on this job, because $2,100 from application 3 remains unpaid. A final waiver releases all remaining rights, so the unconditional final form stays unsigned until that $2,100 is settled or a lawyer has approved wording that preserves the claim. Without a tracker, the final form is the one that gets signed on the last afternoon because someone in the customer's accounts team wants the file closed. If retainage is a large part of your cash, tracking retainage and chasing its release is the companion job.
Now the Collected tab for the same job. Each row is a sub or supplier on one application, and the flag column does the checking.
| Pay app | Party | Billed you | Conditional received | You paid | Unconditional received | Flag |
|---|---|---|---|---|---|---|
| 1 | Sheet-metal supplier | $9,800 | 28 Jan | 20 Feb | 24 Feb | none |
| 2 | Sheet-metal supplier | $14,200 | 26 Feb | 21 Mar | blank | MISSING unconditional after you paid |
| 2 | Controls subcontractor | $8,000 | blank | blank | blank | MISSING conditional |
The second row is a chase for a document you are owed after paying. The third is more urgent: application 2 went out on 1 March without the controls subcontractor's conditional waiver, which a customer may refuse to accept, and a sub-tier party who is unpaid and unwaived keeps whatever rights they have. Collect these before you submit, not after the customer asks. The paperwork side of onboarding is covered in tracking subcontractor insurance and onboarding.
Formulas that raise the red flags
These are ordinary spreadsheet formulas, written for row 2 and filled down only as far as you have data. They work in Google Sheets and in Excel 2019 or later, and they use MAXIFS, SUMIFS and COUNTIFS for that reason. Each formula is split across lines here only so it fits on the page; join the lines into one before pasting it into the formula bar. Keep the flag logic in plain formulas: Excel's =COPILOT() worksheet function was retired on 14 September 2026, and in any case a flag you rely on should give the same answer every time. Start with the PayApps tab.
G2 Net due:
=D2-E2+F2
L2 Conditional waiver on file?
=IF(H2="","",IF(COUNTIFS(Given!$B:$B,$A2,Given!$C:$C,$B2,
Given!$D:$D,"C*",Given!$G:$G,"<>")>0,"Yes","MISSING"))
M2 Unconditional due?
=IF(K2="","",IF(COUNTIFS(Given!$B:$B,$A2,Given!$C:$C,$B2,
Given!$D:$D,"U*",Given!$G:$G,"<>")>0,"Done","DUE: funds cleared"))
L2 stays blank until you submit the application, then reads MISSING until a signed conditional waiver exists for that application. M2 stays blank until the funds clear, then reads DUE until a signed unconditional waiver exists. Now the lookups on the Given tab, which pull the facts about the application each waiver belongs to:
I2 Through date on the application:
=MAXIFS(PayApps!$C:$C,PayApps!$A:$A,$B2,PayApps!$B:$B,$C2)
J2 Net due:
=SUMIFS(PayApps!$G:$G,PayApps!$A:$A,$B2,PayApps!$B:$B,$C2)
K2 Amount received:
=SUMIFS(PayApps!$I:$I,PayApps!$A:$A,$B2,PayApps!$B:$B,$C2)
L2 Funds cleared (0 means not yet):
=MAXIFS(PayApps!$K:$K,PayApps!$A:$A,$B2,PayApps!$B:$B,$C2)
Then the four flags and the status, each of which catches one expensive mistake:
M2 Unconditional signed before the funds cleared:
=IF(AND(LEFT($D2,1)="U",$G2<>"",OR($L2=0,$G2<$L2)),
"STOP: signed before funds cleared","")
N2 Through date differs from the application:
=IF($E2<>$I2,"Through date differs from pay app","")
O2 Amount differs (conditional against net due, unconditional against cash):
=IF(AND(LEFT($D2,1)="C",$F2<>$J2),"Amount differs from net due",
IF(AND(LEFT($D2,1)="U",$F2<>$K2),
"Amount differs from payment received",""))
P2 Final form while earlier payments are still short:
=IF(RIGHT($D2,1)="F",IF(SUMIFS(PayApps!$G:$G,PayApps!$A:$A,$B2,
PayApps!$B:$B,"<"&$C2)-SUMIFS(PayApps!$I:$I,PayApps!$A:$A,$B2,
PayApps!$B:$B,"<"&$C2)>0,"Earlier payments still short on this job",""),"")
Q2 Status:
=IF(M2&N2&O2&P2<>"","CHECK",IF($G2="","Unsigned draft","OK"))
Collected needs only one formula, in H2:
=IF(E2="","MISSING conditional",IF(AND(F2<>"",G2=""),
"MISSING unconditional after you paid",""))
Three setup habits make the sheet trustworthy. Store every date as a real date, never as text, or the comparisons silently fail. Put a drop-down on the form code so only CP, UP, CF and UF are possible. And add conditional formatting that turns any cell containing STOP, MISSING, DUE or CHECK red, then sort by it once a week. Notice that the amount and date flags also evaluate unsigned drafts. That is deliberate: an unconditional form drafted before the money arrives shows CHECK, which tells you to wait, and a draft for the wrong amount shows CHECK before anyone signs it.
Collect your subs' and suppliers' waivers before you ask for yours
A general contractor will often want waivers from the people below you as well as from you, for a plain reason: anyone in the chain who goes unpaid may have rights against the job. If a supplier's conditional waiver is missing when you submit, expect questions, delays or a withheld payment. The cure is a fixed rhythm, built into the paperwork you already send.
- Put the waiver requirement in each subcontract and purchase order, with your lawyer's form attached as the one to use.
- Ask for the conditional waiver with every invoice, for the amount billed. Log the date it arrives on the Collected tab.
- Submit your own pay application only when every conditional is in, or when you have written down why one is not.
- Pay, then wait for the funds to clear on your side.
- Within three working days of payment, ask for the unconditional waiver. Log it when it arrives.
- Review the Collected tab's flag column every Friday.
Three short messages cover most of the chasing. Here they are, in a plain tone. Replace the bracketed parts, and keep any sentence about withholding payment identical to what your subcontract says; if you are unsure whether you may hold payment for a missing waiver, ask your lawyer before you send the third one.
With the invoice request. Hi [first name], thanks for invoice [number] for $[amount]. Please send a signed conditional waiver for that amount, on the form attached, with the through date [date]. We submit our application on [date], so we need it by [day]. [your name]
After payment clears. Hi [first name], payment of $[amount] for invoice [number] cleared on [date]. Please send the signed unconditional waiver for that amount on the attached form. Reply with the PDF when you have it and I will tick it off. [your name]
When it is overdue. Hi [first name], I still do not have the [conditional or unconditional] waiver for application [number]. Under section [number] of our agreement we cannot release the next payment until it is in. If something about the form is a problem, call me and we will sort it out. [your name]
AI can draft all three in your voice in seconds and can fill them from the Collected tab, so a Friday review turns into three ready-to-send messages. For the broader job of chasing subcontractors on more than waivers, see subcontractor paperwork chasing.
Let AI read the paperwork into the sheet, not decide what it means
AI is useful here in four ways: turning a messy remittance email or pay application into a PayApps row, comparing the face of a waiver with a tracker row, drafting chasers and summarising open items. It is not useful for deciding which form your state requires, rewording statutory text, interpreting your subcontract or signing anything. Those stay with you and your lawyer.
Start with extraction. Paste the remittance text and ask for one row in your column order.
Read the remittance below and return one row for my PayApps tab in this
order: job, pay app no., through date, billed, retainage held, retainage
released, amount received, date payment was released. Use only figures
that appear in the text. Do not calculate or guess. If the text does not
say whether the funds have cleared, leave "funds cleared" blank and say so.
List any deduction separately with the wording used.
An illustrative remittance says: "Payment released 14 April for application 3 through 31 March: gross $50,000, retainage held $5,000, back-charge deduction $2,100, net payment $42,900." A typical result returns billed $50,000, held $5,000, received $42,900 and the deduction listed as "back-charge, $2,100". The error to watch for is a model writing "cleared 14 April" because the remittance said "released". The release date is the customer's; the cleared date is your bank's. Leave that cell blank until your own statement shows the money.
Then comparison. Paste the waiver text and the tracker row, and let the AI list mismatches. A scanned waiver is easy to misread, so the AI's job is to point, and yours is to look.
Compare the WAIVER text with the TRACKER ROW. List each item in a table:
item | on the waiver | on the tracker | match (yes/no): claimant name, customer,
job address, form type, through date, amount, signature date. Do not
comment on the legal wording and do not suggest changes to it.
On the application 3 example, the table matches the job address, the form type and the through date of 31 March, but shows the amount as $45,000 on the waiver against $42,900 on the tracker, and a claimant name that reads "[company] Heating and Cooling" where the sheet has "[company] HVAC". The second mismatch is easy to miss and matters, because a waiver that names the wrong legal entity can be rejected by the customer or leave everyone unsure who has actually released what. Check the amounts visually against the PDF anyway, since digits transpose on scans. If you also want the application itself checked before it goes out, see checking a payment application with AI, and for the schedule of values behind each one, pay applications for subcontractors.
Once a week, paste the rows that carry a flag and ask for a one-page list ordered by the money at risk, with a draft chaser beside each. Redact bank account numbers and customers' personal details before any paste, and use a business plan, not a free consumer chat with training left on.
What stays with a construction lawyer
A tracker prevents mistakes of timing and arithmetic. It cannot tell you whether a form is valid where you work. Take these to a construction lawyer once, and then lock the answers into your templates.
- Which states you work in prescribe waiver wording, and the exact forms to use for each. Keep them as locked templates and never retype them.
- Whether any of those states require notarisation, and how that is recorded.
- How the form should record an amount in dispute, extras not yet paid and retainage still held.
- Whether waiving rights in advance of payment, or signing a form that releases more than the payment, is allowed or enforceable where you work.
- Whether waiver clauses in your subcontracts, and any "pay when paid" terms, change what you may withhold from your own subs.
- The deadlines for preliminary notices and for filing a lien. They run separately from waivers, and a perfect tracker does not extend them.
- Whether public jobs follow different rules, such as payment bond claims in place of liens.
An hour with a lawyer covering that list is cheap insurance against a mistake in a six-figure job. For the clause side, a subcontractor's check on pay-when-paid clauses explains what to ask before signing.
Questions contractors ask about signing lien waivers
Can a general contractor make me sign an unconditional waiver before paying me?
Some try, usually through a clause in the subcontract or a form sent with the payment notice. An unconditional waiver takes effect when you sign it, whether or not the money arrives, so it deserves a pause. Offer the conditional form, or ask for payment first, and take any contract clause that demands otherwise to a construction lawyer before you sign anything.
How long should I keep signed lien waivers?
Keep them with the job file for at least as long as you keep the job's financial records, and ask your lawyer or accountant whether any statute or contract sets a longer period. Store the signed PDF, the date it was sent and the proof that the payment cleared together, because that bundle answers most later disputes.
Should I use one waiver to cover several payments?
Use one waiver per payment. A progress waiver covers a stated period and amount, and combining several periods makes every mismatch harder to see. The final waiver is the exception because it closes the job. If a general contractor's form asks you to release more than the payment covers, show it to your lawyer first.
Do small jobs need lien waivers at all?
Requirements come from the contract, the lender and the general contractor, not from a rule of thumb, so read what each job asks for. If anyone asks you for a waiver, treat it like any other: conditional until the payment clears. Whether to offer one unprompted is a business decision, and your lawyer can say whether it affects your lien rights.
Further reads
- Construction Cash Flow Forecast: Build One in a Spreadsheet With AI — Forecast when pay applications turn into cleared cash.
- General Contractor AI: Turn Site Messages Into Change Orders — Extras and change orders are a common source of unpaid balances.
- AI for Building Contractors: Chasing Subcontractors and Progress Updates — Chase subcontractors for progress and paperwork.
- Builder Invoice Template: Stage Payment Requests Written With AI — Write stage payment requests that match your schedule.
- AI in Construction Accounting: Job Costs, WIP and Retainage Checks — Link job costs, work in progress and retainage checks.
- Can ChatGPT Draft a Subcontractor Agreement? Clauses to Check — Clauses to check before drafting a subcontract with AI.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: a construction-payments vendor's lien waiver guide (Levelset) for the four waiver types and its state counts; the text of one state's statutory conditional progress form as published on a public law site; Microsoft Support's notice retiring the =COPILOT() worksheet function; checked October and 1 November 2026. This is practical guidance, not legal advice.