Registry

Form IT-2104 — programmatic fill compatibility

Employee's Withholding Allowance Certificate · New York State Department of Taxation and Finance · 2026. Tested 2026-08-07 on the unmodified upstream blank — every number below comes from a recorded run, not from documentation.

Verdict at a glance

ToolVersionResultDetail
pdfops APIhosted, tested 2026-08-07verified + deterministic flatten25/25 supported fields landed; flatten=true byte-deterministic (sha256 bd00f11519cf…)
pdf-lib1.17.1verified (25/25)25 fields filled in-process
@cantoo/pdf-lib (fork)2.6.5verified (25/25)25 fields filled in-process
pypdf6.15.0text fields verified (19/19)19 text fields written and re-read (text fields only)
pdftk-java3.3.3verified (23/23)23 fields filled via FDF and re-dumped
qpdf --check11.9.0structurally cleanerrors that qpdf cannot detect
poppler render check24.02.0values render (19/19)19/19 filled text values present in pdftotext output of the pdf-lib-filled file; page-1 raster sha256 9e9861480ea0…

File facts

Quirks & limitations

Tested request

This exact shape ran against the live API during the recorded test (values here shortened to two fields; the test filled all 25 supported fields). With flatten=true, two identical runs produced byte-identical output — sha256 bd00f11519cf26262ac4edfc3d0444b5dbb76a48177e3a944f4373811bd06e45.

curl -X POST https://pdfops.dev/api/fill-form \
  -F "pdf=@ny-it-2104.pdf" \
  -F 'fields={"First name and middle initial":"PDFops","Last name":"PDFops"}' \
  -F "flatten=true" \
  -o filled.pdf

Enumerate all 25 field names first with the inspector or POST /api/inspect.

Field schema

All 25 fields (name, type, maxLength, options)
Field nameTypemaxLengthOptions
First name and middle initialTextField40
Last nameTextField30
Permanent mailing addressTextField55
Apartment numberTextField10
City, village or post officeTextField40
StateTextField2
ZIP codeTextField10
Your SSNTextField9
StatusCheckBox
ResidentCheckBox
Resident of YonkersCheckBox
line 1TextField2
line 2TextField2
line 3TextField8
line 4TextField8
line 5TextField8
DateTextField10
employee is a new hireCheckBox
employee claims more than 14 exemptionCheckBox
Employer's name and addressTextField75
Employer's name and address-2TextField75
EINTextField9
insurance benefitsCheckBox
empl qualify dateTextField10
service dateTextField10

Frequently asked

Can I fill the Form IT-2104 programmatically?

Yes — the blank 2026 Form IT-2104 is a fillable AcroForm with 25 fields. In our tested run, all 25 supported fields were filled through the pdfops API and verified by re-inspecting the output; upstream pdf-lib also round-trips it, and pypdf handled its text fields. Field names are listed in the schema on this page.