Tax · Internal Revenue Service

Fill IRS Form W-9 programmatically for every vendor.

Collect contractor and vendor details in your own UI, then have SimplyFill render a perfectly-filled W-9 from that data — pre-filled and ready for the payee to certify and sign.

What is Form W-9?

Form W-9, Request for Taxpayer Identification Number and Certification, is how a U.S. payer collects a payee’s legal name, tax classification, and TIN so it can issue a 1099 at year end.

Who files it?

Any business that pays an independent contractor, freelancer, or vendor $600+ in a year requests a W-9 from that payee before issuing payment or a 1099.

Why filling Form W-9 by hand hurts

The W-9 packs a federal tax-classification radio group, conditional LLC sub-type, and split SSN/EIN boxes onto one page — all behind IRS AcroForm names like `topmostSubform[0].Page1[0].f1_01[0]`. Pre-filling it for thousands of vendors by hand is exactly the kind of repetitive work an API should erase.

Fill Form W-9 in one call

Pre-fill a W-9 from a vendor record

fill-w-9.ts
Node.js
const res = await fetch('https://api.simplyfill.app/v1/generate', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SIMPLYFILL_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    template: 'w9_rev2024',
    data: {
      legal_name: 'Ada Lovelace Consulting LLC',
      tax_classification: 'llc_s_corp',
      address: '1 Market St, San Francisco, CA 94105',
      ein: '12-3456789',
    },
  }),
})

const { url } = await res.json()
// Send url to the vendor to review, certify, and sign

Fields on Form W-9

Real form fields are named for the PDF spec, not for humans — so a single value can hide behind something like topmostSubform[0].Page1[0].f1_02[0]. SimplyFill lets you map your own readable keys to these once, then forget they exist.

Raw PDF field nameWhat it means
topmostSubform[0].Page1[0].f1_01[0]Name (as shown on tax return)
topmostSubform[0].Page1[0].f1_02[0]Business name / disregarded entity name
topmostSubform[0].Page1[0].FederalClassification[0].c1_1[0]Federal tax classification (radio group)
topmostSubform[0].Page1[0].f1_05[0]Address (number, street, apt/suite)
topmostSubform[0].Page1[0].SSN[0].f1_11[0]Social security number
topmostSubform[0].Page1[0].EmployerID[0].f1_14[0]Employer identification number (EIN)

Frequently asked questions

How does SimplyFill handle the SSN vs EIN boxes?

The W-9 splits the TIN across per-digit SSN boxes and per-digit EIN boxes. You send a single `ssn` or `ein` string and SimplyFill distributes the digits into the correct boxes and leaves the other set blank.

Can the payee still sign after I pre-fill it?

Yes — pre-fill the identifying fields and leave the certification signature/date for the payee. Pass the generated PDF to your e-sign provider, or deliver it for a wet signature.

Which tax-classification options are supported?

All of them: individual/sole proprietor, C corporation, S corporation, partnership, trust/estate, and LLC with its sub-classification. You pass one value and SimplyFill resolves the radio group and any conditional LLC field.

Do you keep up with W-9 revisions?

The template is versioned to the IRS revision (e.g. `w9_rev2024`). New revisions are added as new versions so your integration upgrades deliberately, never silently.

Stop hand-filling Form W-9.

Start with a 14-day free trial. Define the template once, then fill Form W-9 from your data with a single API call.