Lien Waivers for Small Contractors: Track Conditional and Final Releases

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Lien Waivers for Small Contractors: Track Conditional and Final Releases.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Lien Waivers for Small Contractors: Track Conditional and Final Releases.

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.

Follow me on Instagram@sagnikteaches

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.

Connect on LinkedInSagnik Bhattacharya

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.

Subscribe on YouTube@sagnikteaches

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 itTakes effectWhat it releases
Conditional, progress payment (CP)With the pay application, or any time before paymentOnly when the payment is receivedRights for the period or through date stated
Unconditional, progress payment (UP)After the payment has clearedAt once, on signingRights through the stated date, for the amount received
Conditional, final payment (CF)With the final pay applicationOnly when the final payment is receivedAll remaining rights on the job
Unconditional, final payment (UF)After the final payment has clearedAt once, on signingAll 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 thumbnail

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 now

A 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:

ColHeaderWhat goes in
AJobA short job code, identical on every tab
BPay app no.1, 2, 3 and so on; the final application takes the next number
CThrough dateThe period end shown on the application, as a real date
DBilled this periodWork completed in the period, before retainage
ERetainage held backThe amount withheld on this application
FRetainage releasedZero until a release is billed, usually with the final application
GNet dueFormula: billed minus held plus released
HDate submittedThe day the application went to the customer
I, JAmount and date receivedFrom the remittance advice, not from what you billed
KFunds clearedThe day the money was usable; leave blank until then
L, MWaiver checksFormulas 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.

ColHeaderWhat goes in
A, B, CWaiver ID, Job, Pay app no.The link back to the application the waiver covers
DForm codeCP, UP, CF or UF
E, FThrough date and amount on the formCopied from the signed form itself, not from the application
GDate signedBlank until signed; a drafted waiver is not a signed one
HNotary neededYes or no, from your lawyer's form notes
I to LLookups from PayAppsThrough date, net due, amount received and cleared date for the same application
M to PFlagsUnconditional signed before funds cleared; through date mismatch; amount mismatch; earlier payments on the job still short (final forms)
Q, RStatus and file linkOK, CHECK or Unsigned draft; a link to the signed PDF

Third, Collected, with one row for each subcontractor or supplier, for each pay application:

ColHeaderWhat goes in
A, B, CJob, Pay app no., PartyWho is waiving, and on which application
DAmount they billed youFor this application
EConditional receivedThe date their conditional waiver arrived
FYou paid themThe date the payment cleared
GUnconditional receivedThe date their unconditional waiver arrived
HFlagFormula 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 appThroughBilledHeld backNet dueReceivedClearedWhat the tracker says
131 Jan$46,000$4,600$41,400$41,40017 FebCP signed 1 Feb, UP signed 17 Feb: OK
228 Feb$62,000$6,200$55,800$55,80017 MarCP signed 1 Mar, UP signed 17 Mar: OK
331 Mar$50,000$5,000$45,000$42,90018 AprCP signed 1 Apr; UP drafted for $45,000: CHECK
4 (final)30 Apr$26,000none; $15,800 released$41,800$41,80023 MayCF 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 appPartyBilled youConditional receivedYou paidUnconditional receivedFlag
1Sheet-metal supplier$9,80028 Jan20 Feb24 Febnone
2Sheet-metal supplier$14,20026 Feb21 MarblankMISSING unconditional after you paid
2Controls subcontractor$8,000blankblankblankMISSING 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.

  1. Put the waiver requirement in each subcontract and purchase order, with your lawyer's form attached as the one to use.
  2. Ask for the conditional waiver with every invoice, for the amount billed. Log the date it arrives on the Collected tab.
  3. Submit your own pay application only when every conditional is in, or when you have written down why one is not.
  4. Pay, then wait for the funds to clear on your side.
  5. Within three working days of payment, ask for the unconditional waiver. Log it when it arrives.
  6. 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

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.

Want lien waivers tracked before the next pay app?

On a 1:1 call we'll walk through your pay application routine, set up the three tabs and flags, and decide which paperwork AI can read into the sheet for you.

Book a 1:1 call with me