Tax · Internal Revenue Service

Fill IRS Form 1099 programmatically for every contractor.

Your platform already knows what each contractor was paid. Hand SimplyFill the payment totals and payee details and get back a correctly-filled 1099-NEC for each recipient — flattened and ready to distribute.

What is Form 1099-NEC?

Form 1099-NEC, Nonemployee Compensation, reports payments of $600 or more made to independent contractors during the year. The payer files it with the IRS and sends a copy to each contractor.

Who files it?

Any business that paid a nonemployee $600+ in a year. Platforms, marketplaces, and accounting tools generate them in bulk every January.

Why filling Form 1099-NEC by hand hurts

A 1099 looks trivial until you need 4,000 of them by January 31. Each one is the same IRS AcroForm with names like `topmostSubform[0].CopyB[0].RightCol[0].f2_07[0]`, copy variants (A, B, C), and per-digit TIN boxes. Looping that by hand is exactly the repetitive batch job an API should own.

Fill Form 1099-NEC in one call

Bulk-generate 1099-NEC PDFs for every contractor

fill-1099.ts
Node.js
const contractors = await db.contractors.withPayments(taxYear)

const res = await fetch('https://api.simplyfill.app/v1/generate/bulk', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SIMPLYFILL_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    template: '1099_nec_2025',
    records: contractors.map((c) => ({
      payer_name: 'Acme, Inc.',
      payer_tin: '12-3456789',
      recipient_name: c.legalName,
      recipient_tin: c.tin,
      box1_nonemployee_comp: c.totalPaidCents / 100,
    })),
  }),
})

const { envelope_id, documents } = await res.json()

Fields on Form 1099-NEC

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].Copy1[0].LeftCol[0].f1_01[0]Payer name and address
topmostSubform[0].Copy1[0].LeftCol[0].f1_05[0]Payer TIN
topmostSubform[0].Copy1[0].LeftCol[0].f1_07[0]Recipient TIN
topmostSubform[0].Copy1[0].LeftCol[0].f1_08[0]Recipient name
topmostSubform[0].Copy1[0].RightCol[0].f1_12[0]Box 1 — nonemployee compensation
topmostSubform[0].Copy1[0].RightCol[0].f1_14[0]Box 4 — federal income tax withheld

Frequently asked questions

Can SimplyFill generate thousands of 1099s in one request?

Yes — the bulk endpoint accepts an array of recipient records against one template and returns a download per recipient plus a combined envelope. It is built for the January batch run.

Do you support the different copies (A, B, C)?

Yes. Copy A is the IRS scannable copy (note the IRS requires the official red-ink Copy A for paper filing); Copies B and C are for the recipient and payer. You select which copy to render in the payload.

Where does the W-9 data come from?

Typically you collect each contractor’s TIN and legal name on a W-9 (which SimplyFill can also generate), store it, then feed those values into the 1099 run at year end.

Does SimplyFill e-file the 1099 with the IRS?

No — SimplyFill renders the PDF. Transmission to the IRS (FIRE / IRIS) or a filing partner is handled by your system; we produce the documents you distribute and archive.

Stop hand-filling Form 1099-NEC.

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