Compliance checklist
Subcontractor Compliance Checklist: COIs, W-9s, Lien Waivers, and Renewal Dates
What you need to collect from every subcontractor, which fields actually matter, and how to know at a glance whether a sub is ready to work, needs follow-up, or is blocked.
Why compliance paperwork keeps slipping
The problem is not that GC offices do not know what they need. Most project managers can recite the list: certificate of insurance, W-9, license if the trade requires it, lien waivers on the payment cycle. The problem is that "collected" and "current" are two different things, and nobody has a clean way to see which is which.
A certificate arrives as a PDF attachment. Someone saves it. The row in the spreadsheet gets updated. Six months later the policy expired and nobody set a reminder. A W-9 was collected at onboarding three years ago and the sub's address changed twice. A lien waiver is sitting in someone's email waiting to be countersigned.
The checklist below is not about collecting more paperwork. It is about knowing the status of the paperwork you already asked for.
The core compliance documents โ what to track for each
Certificate of Insurance (COI)
This is the highest-urgency document because it expires, and an expired COI is a job-site liability. For each subcontractor, track:
| Field | What to record | Why it matters |
|---|---|---|
| GL expiration date | MM/DD/YYYY from the certificate | Drives renewal reminders |
| WC expiration date | MM/DD/YYYY or "exempt" with reason | Often different from GL |
| Umbrella expiration date | MM/DD/YYYY or "not required" | Required on many larger jobs |
| GL limit on file | $1M/$2M or whatever the cert shows | Must meet contract minimums |
| Certificate holder | Your company name as listed on cert | Wrong name = not your cert |
| Additional insured | Yes / No / Per contract | Required for most GC contracts |
| Status | Current / Expiring <60 days / Expired / Missing / Needs review | Action at a glance |
| Certificate file location | Link or folder path to saved PDF | Instant retrieval when owner asks |
| Last reviewed by | Name or initials and date | Accountability and audit trail |
| Next reminder date | 60 days before earliest expiration | Triggers follow-up before it lapses |
W-9
The W-9 is a one-time collection for most subs, but it has a way of going stale. An address change, a business name change, or a change in tax classification should prompt a new request.
| Field | What to record |
|---|---|
| W-9 received | Yes โ date received / No โ request pending |
| Business name on W-9 | Must match name on checks and contracts |
| TIN type | SSN or EIN |
| Date received | MM/DD/YYYY |
| Needs update | Flag if sub's info has changed since last W-9 |
| File location | Path or link to signed PDF |
For 1099 purposes, your accounting team will need the W-9 on file before payment. If it is missing, payment should be held or backup withholding applies. That is a strong motivator to collect W-9s at onboarding, not after a problem surfaces.
Contractor's License
Not every sub in every state requires a license, but where they do, an unlicensed sub working on your job is your exposure too. Track:
| Field | What to record |
|---|---|
| License required | Yes / No โ based on trade and jurisdiction |
| License number | As issued |
| Issuing authority | State, county, or city |
| Expiration date | MM/DD/YYYY |
| Status | Active / Expired / Pending renewal |
Lien Waivers
Lien waivers are project-specific and payment-cycle-specific, which makes them harder to track in a single-row-per-sub format. Track them by project and payment event:
| Field | What to record |
|---|---|
| Project name / number | Ties to specific job |
| Waiver type | Conditional / Unconditional, Partial / Final |
| Payment amount covered | Dollar amount from the pay app |
| Date requested | When you sent the request |
| Date received | When signed waiver came back |
| Status | Requested / Received / Countersigned / Filed |
| File location | Path or link |
Most GC offices manage lien waivers through their accounting or project management system rather than a COI tracker. The important thing is that they are tracked somewhere with a clear status, not floating in email.
Safety and Prequalification Documents
OSHA training records, safety plans, or prequalification forms are only required on certain job types โ owner requirements, public jobs, or larger commercial work. If your jobs require them, add a simple row to your compliance file:
| Field | What to record |
|---|---|
| Document type | OSHA 10, OSHA 30, safety plan, prequalification form, etc. |
| Required for this job | Yes / No |
| Received | Yes / No โ date |
| Expiration if applicable | Training certificates expire; plans typically do not |
The status system that keeps the checklist usable
Every document type should have a status your team can read without opening the file:
- Current โ received, reviewed, not expiring in the next 60 days
- Expiring soon โ less than 60 days to expiration, renewal request sent or pending
- Expired โ past expiration date, work may be blocked
- Requested โ asked for but not received yet
- Missing โ required document, no request sent or no response
- Needs review โ received but something does not match requirements
- Not required โ document type does not apply to this sub or job
The "not required" status matters. If it is blank, you cannot tell whether the document was never needed or was never collected.
Assigning ownership and follow-up responsibility
Compliance fails when every document is "the team's job." For each document category, name one person who owns the request, review, and follow-up. That does not mean they do all the work โ it means they are accountable for knowing the status.
For most small and mid-size GC offices, the office manager or project coordinator owns COIs and W-9s. Project managers own lien waivers by job. Safety documents may fall to a superintendent or a dedicated safety coordinator if one exists.
Write the owner into the checklist. "Who's handling this?" answered in a cell means one less conversation per renewal cycle.
A first-pass checklist for this week
You do not need to build a perfect compliance system in one sitting. Start with three columns on your active sub list:
- Latest COI expiration date (or "missing" if you cannot find one)
- W-9 on file (yes / no)
- Biggest open gap for each sub (lien waiver outstanding, license expired, etc.)
If assembling that list takes more than a day or reveals more missing documents than you expected, the compliance workflow has more gaps than the current system is surfacing. That is useful to know. Fixing it starts with knowing where the holes are, not with building a new process before you understand the old one.
A good compliance checklist does not require perfection. It requires honest status. "Missing" and "needs review" are acceptable answers โ "I'm not sure" is the problem.
Track subcontractor COIs, expiration dates, and renewal reminders in one place.
CertKeeper helps general contractors keep subcontractor certificates of insurance, expiration dates, and renewal reminders organized without a full platform rollout. If your team is still chasing COIs from email and spreadsheets, request early access and we'll help you see whether CertKeeper fits your workflow.
Request early access