W-9 collection workflow for small GCs
If your office still hunts W-9s the week 1099s are due, this is the boring fix: collect the form before first pay, track who is still missing, and keep full TINs off the shared pay-app sheet.
This guide is for US general contractors and remodelers (roughly 5–50 people) who run subs through email and a spreadsheet. It is admin process, not tax advice.
Important disclaimer
CleanFile Ops provides administrative document collection and tracking only. We are not a CPA firm, not your attorney, and not your broker. We do not resolve name/TIN mismatches, give tax advice, or tell you whether a vendor should be paid as a 1099 or W-2. Your controller and CPA own tax identity questions. Your PM / controller owns pay and hold decisions.
Why W-9 before first pay app
A W-9 is the IRS request-for-taxpayer-identification form most GCs need on file before they pay a sub as an independent contractor. Waiting until year-end means you are chasing people who already cashed checks and stopped answering email.
The practical rule for a small GC office:
- No first payment until a complete W-9 is on file for the same legal name you have on the subcontract (or a controller-approved exception is logged).
- Treat W-9 chase as part of the same Day-0 ask as the ACORD 25 and the state lien waiver: one thread, not three.
- Keep status visible before pay-app Friday so the controller is not opening PDFs at 4:50 p.m.
That rule does not promise any IRS outcome. It just stops the scramble.
Before-first-pay cadence (what to do, when)
Use the same ladder you use for COIs and waivers. Clock starts when the sub hits the roster (contract signed or first work authorized; pick one and stick to it).
| Day | Action |
|---|---|
| 0 | Request W-9 with COI + waiver. Name the project, the entity name you expect, the return email, and the first pay-app date. |
| 3 | Nudge #1: restate “W-9 still missing” or list incomplete fields. |
| 7 | Nudge #2 + CC your GC contact so the sub hears pressure from the job, not only from admin. |
| 14 | Mark Block Pay candidate on the weekly report. GC decides whether to hold first pay or escalate themselves. |
New sub mid-project: start Day 0 within two business days of the list add. Do not wait for the next monthly close.
What “complete” means on intake (admin check only):
- Name (individual or business) filled
- Business name / DBA if used on invoices
- Tax classification box checked
- Address
- TIN present (SSN or EIN; see privacy below)
- Signature and date (wet or e-sign per your process)
If any of those are blank, status is Incomplete, not “good enough for now.”
Tracking receipt status
Keep one register column for W-9. Four statuses are enough:
| Status | Meaning | Typical next action |
|---|---|---|
| On file | Complete form received; entity roughly matches sub list / COI named insured | None until vendor change |
| Missing | No usable PDF yet | Stay on chase ladder |
| Incomplete | PDF arrived but fields blank, unsigned, or wrong entity name on face of form | Deficiency note to sub; re-request |
| Flag: controller/CPA | Name/TIN mismatch or entity conflict you cannot admin-resolve | Hand off; stop “fixing” |
Optional notes field: received date, last chase date, file path, who may open the full PDF.
Pair this with your COI and waiver columns so Monday’s Clean File / Block Pay view answers: Can we pay this sub this cycle? Your people still make the call.
For the insurance side of the same Friday pack, see the sibling guide: Subcontractor COI checklist for GCs.
Name / TIN mismatch: flag, don’t fix
Admin chase desks (including CleanFile Ops) do not decide tax identity.
Flag for your controller or CPA when you see things like:
- W-9 legal name does not match the subcontract entity or the named insured on the ACORD 25
- Sub invoices under a DBA that never appears on the W-9
- Two TINs across versions of the form
- Sub says “use my personal SSN” while the contract is with an LLC (or the reverse)
What you can do as admin: attach both PDFs, note the mismatch in the register, ask the sub for a corrected W-9 if your controller wants a re-pull, and hold the status at Flag: controller/CPA until they clear it.
What you must not do: rewrite the W-9, guess the “right” TIN, or tell the sub how to classify themselves for tax purposes. That is outside admin collection.
Privacy: who sees the full W-9
TINs are sensitive. Treat the full W-9 like payroll data, not like a COI you can forward to the whole job folder.
Practical defaults:
- Mask TIN on wide-share views (PM sheet, weekly report PDF that goes to field staff). Show last four only, or “On file (restricted).”
- Full W-9 access: controller, bookkeeper, and whoever your SOW names. Not every PM, not the job WhatsApp, not “anyone with the Drive link.”
- Store originals in a restricted folder; link from the register, don’t paste TIN into cell comments.
- When you email a sub about a missing W-9, don’t attach someone else’s form “as an example.”
CleanFile Ops follows the same rule on client work: mask on shared reports; keep full forms in a locked path.
How this ties to pay-app Friday
Pay-app week fails in predictable ways:
- Sub is ready to bill, COI looks current, waiver is signed, and W-9 still missing.
- W-9 arrived Tuesday under a different entity name than the invoice.
- Full TIN sits on a sheet the whole office can open.
A weekly rhythm that works without new software:
- Early week: nudge Missing / Incomplete W-9s with the same chase as ACORD 25 and waivers.
- Before draw: publish Clean / Block / Watch by receipt status vs your checklist. “Block” here means docs not on file per your rules, not a legal finding and not a tax conclusion.
- After pay: only chase renewals and roster adds; don’t reopen closed On-file rows unless the vendor entity changes.
The point is timing. Collect before first check. Report before Friday. Let controller and CPA own anything that smells like tax identity.
Sample Day-0 ask (paste and edit)
Subject: Documents needed for [Project]: W-9 / COI / waiver
Please return:
- Completed W-9 for the same legal entity as your subcontract
- Current certificate of insurance (ACORD 25)
- [State] lien waiver (form / e-sign link attached)
Needed by [date] for first pay app. Reply with PDFs to this thread.
Questions about tax classification or TIN issues: reply and we’ll route to our controller. We collect and track forms; we don’t give tax advice.
Want this chased weekly?
If your office manager is already buried in COI nudges, CleanFile Ops can run the W-9 (and COI / waiver) chase and put receipt status on a weekly Clean File / Block Pay report. You still own pay decisions and any CPA handoff.
- Intake / questions: [email protected]
- How it works: https://vynlith.com
- More guides: /resources.html
Related
- Home: CleanFile Ops overview
- Resources: guide index
- Subcontractor COI checklist for GCs
- What a weekly Clean File / Block Pay report should show