CleanFile Ops

Resources · Guide · Updated Sep 2, 2026

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:

  1. 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).
  2. 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.
  3. 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):

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:

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:

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:

  1. Sub is ready to bill, COI looks current, waiver is signed, and W-9 still missing.
  2. W-9 arrived Tuesday under a different entity name than the invoice.
  3. Full TIN sits on a sheet the whole office can open.

A weekly rhythm that works without new software:

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:

  1. Completed W-9 for the same legal entity as your subcontract
  2. Current certificate of insurance (ACORD 25)
  3. [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.

Get a pilot quote

How CleanFile Ops works · More resources

Related