Forms / IRS
Fill Form 8832 programmatically
Form 8832 — Entity Classification Election. Official IRS PDF, 8 pages, 70 fields read automatically.
An LLC that wants to be taxed as a corporation files an 8832, and formation and accounting platforms produce them steadily — same structure every time, different entity. The form is short but branchy: which election, what effective date, who signs, all of it derivable from answers the platform already has.
What you send
Real field names, straight from the PDF — the excerpt shows the first 5 of 70. The full list is in the table below, and the template hands you the complete JSON schema to copy.
{
"data": {
"topmostSubform[0].Page1[0].p1-t1[0]": "string",
"topmostSubform[0].Page1[0].p1-t2[0]": "string",
"topmostSubform[0].Page1[0].p1-t4[0]": "string",
"topmostSubform[0].Page1[0].p1-t5[0]": "string",
"topmostSubform[0].Page1[0].c1_01_0_[0]": true
}
}
// …plus 65 more fields, all listed belowWhat you get back
The completed Form 8832, streamed back as the response — or delivered to your webhook, HMAC-signed.
curl -X POST https://www.doc2api.co/api/v1/templates/<ID>/fill \ -H "X-Api-Key: d2a_live_…" \ -H "Content-Type: application/json" \ -d @payload.json -o filled.pdf # → the completed Form 8832 as a PDF. # With a webhook configured, the reply is JSON and the # document arrives at your endpoint as a signed URL.
Or skip the mapping entirely: embed the actual form on your site and let the person it belongs to fill and sign it — you receive the values as JSON and the finished PDF.
Every field on Form 8832
Extracted automatically from the official PDF — this table is generated by the same code that reads your uploads. In the editor, each of these is highlighted on the page itself, so you never map a name blind.
| Field name | Type | Notes |
|---|---|---|
| topmostSubform[0].Page1[0].p1-t1[0] | text | |
| topmostSubform[0].Page1[0].p1-t2[0] | text | max 10 chars |
| topmostSubform[0].Page1[0].p1-t4[0] | text | |
| topmostSubform[0].Page1[0].p1-t5[0] | text | |
| topmostSubform[0].Page1[0].c1_01_0_[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_06_0_[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_07[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_02_0_[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_02_0_[1] | checkbox | |
| topmostSubform[0].Page1[0].c1_03_0_[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_03_0_[1] | checkbox | |
| topmostSubform[0].Page1[0].c1_04_0_[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_04_0_[1] | checkbox | |
| topmostSubform[0].Page1[0].c1_05_0_[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_05_0_[1] | checkbox | |
| topmostSubform[0].Page1[0].p1-t6[0] | text | |
| topmostSubform[0].Page1[0].p1-t7[0] | text | |
| topmostSubform[0].Page1[0].p1-t8[0] | text | |
| topmostSubform[0].Page1[0].p1-t9[0] | text | |
| topmostSubform[0].Page2[0].c2_01_0_[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_01_0_[1] | checkbox | |
| topmostSubform[0].Page2[0].c2_01_0_[2] | checkbox | |
| topmostSubform[0].Page2[0].c2_01_0_[3] | checkbox | |
| topmostSubform[0].Page2[0].c2_01_0_[4] | checkbox | |
| topmostSubform[0].Page2[0].c2_01_0_[5] | checkbox | |
| topmostSubform[0].Page2[0].p2-t1[0] | text | |
| topmostSubform[0].Page2[0].p2-t2[0] | text | max 10 chars |
| topmostSubform[0].Page2[0].p2-t5[0] | text (multiline) | |
| topmostSubform[0].Page2[0].p2-t7[0] | text | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow1[0].p2-t9[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow2[0].p2-t11[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow3[0].p2-t13[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow4[0].p2-t15[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow5[0].p2-t17[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow6[0].p2-t19[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow7[0].p2-t21[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow8[0].p2-t23[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow9[0].p2-t25[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow10[0].p2-t27[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow11[0].p2-t29[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow12[0].p2-t31[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow13[0].p2-t33[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow14[0].p2-t35[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow15[0].p2-t37[0] | text (multiline) | |
| topmostSubform[0].Page2[0].Pg2Table[0].BodyRow16[0].p2-t39[0] | text (multiline) | |
| topmostSubform[0].Page3[0].f3_001[0] | text | |
| topmostSubform[0].Page3[0].f3_002[0] | text | |
| topmostSubform[0].Page3[0].f3_003[0] | text | |
| topmostSubform[0].Page3[0].f3_004[0] | text | |
| topmostSubform[0].Page3[0].f3_005[0] | text | |
| topmostSubform[0].Page3[0].f3_006[0] | text | |
| topmostSubform[0].Page3[0].f3_007[0] | text | |
| topmostSubform[0].Page3[0].f3_008[0] | text | |
| topmostSubform[0].Page3[0].f3_009[0] | text | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow1[0].f3_010[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow2[0].f3_011[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow3[0].f3_012[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow4[0].f3_013[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow5[0].f3_014[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow6[0].f3_015[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow7[0].f3_016[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow8[0].f3_017[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow9[0].f3_018[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow10[0].f3_019[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow11[0].f3_020[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow12[0].f3_021[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow13[0].f3_022[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow14[0].f3_023[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow15[0].f3_024[0] | text (multiline) | |
| topmostSubform[0].Page3[0].Pg3Table[0].BodyRow16[0].f3_025[0] | text (multiline) |
An election with a window
The 8832's effective date can reach back no more than 75 days and forward no more than 12 months from filing. That's a rule your fill can enforce: a per-field validation on the date catches an out-of-window election before it becomes a filed mistake, instead of after the IRS notices.
Questions people ask
- 8832 or 2553?
- An S-corporation election is made on Form 2553, and for most LLCs electing S status the 2553 alone is enough. The 8832 is for the other classifications — C-corporation, partnership, disregarded entity. We host pages for both; the right one is a tax question for the filer.
- Can I validate the effective date?
- Yes — attach a validation rule to the date field and the API refuses an out-of-window value with a clear error rather than printing it.
See your Form 8832 pipeline working in the next five minutes
The button uploads the official PDF into the editor as a live template with an API key — no account, nothing to cancel. Trial documents are watermarked and kept for 24 hours; sign up to keep your work.
Doc2api is not affiliated with the Internal Revenue Service. Form 8832 is a public government work; the copy here is the official revision, refreshed from irs.gov. Nothing on this page is tax or legal advice — how a completed form may be signed, filed or retained is defined by the issuing agency.