Forms / IRS
Fill Form 9465 programmatically
Form 9465 — Installment Agreement Request. Official IRS PDF, 2 pages, 66 fields read automatically.
A resolution engagement that ends in a payment plan ends in a 9465, and everything on it — the balance, the proposed monthly payment, the bank details for direct debit — came out of the conversation your intake system already recorded. Retyping it into the PDF is where transposed account digits come from.
What you send
Real field names, straight from the PDF — the excerpt shows the first 5 of 66. The full list is in the table below, and the template hands you the complete JSON schema to copy.
{
"data": {
"topmostSubform[0].Page1[0].f1_1[0]": "string",
"topmostSubform[0].Page1[0].f1_2[0]": "string",
"topmostSubform[0].Page1[0].f1_3[0]": "string",
"topmostSubform[0].Page1[0].f1_4[0]": "string",
"topmostSubform[0].Page1[0].f1_5[0]": "string"
}
}
// …plus 61 more fields, all listed belowWhat you get back
The completed Form 9465, 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 9465 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 9465
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].f1_1[0] | text | |
| topmostSubform[0].Page1[0].f1_2[0] | text | |
| topmostSubform[0].Page1[0].f1_3[0] | text | |
| topmostSubform[0].Page1[0].f1_4[0] | text | |
| topmostSubform[0].Page1[0].f1_5[0] | text | max 11 chars |
| topmostSubform[0].Page1[0].f1_6[0] | text | |
| topmostSubform[0].Page1[0].f1_7[0] | text | |
| topmostSubform[0].Page1[0].f1_8[0] | text | max 11 chars |
| topmostSubform[0].Page1[0].f1_9[0] | text | |
| topmostSubform[0].Page1[0].f1_10[0] | text | |
| topmostSubform[0].Page1[0].f1_11[0] | text | |
| topmostSubform[0].Page1[0].f1_12[0] | text | |
| topmostSubform[0].Page1[0].f1_13[0] | text | |
| topmostSubform[0].Page1[0].f1_14[0] | text | |
| topmostSubform[0].Page1[0].c1_1[0] | checkbox | |
| topmostSubform[0].Page1[0].f1_15[0] | text | |
| topmostSubform[0].Page1[0].f1_16[0] | text | max 10 chars |
| topmostSubform[0].Page1[0].f1_17[0] | text | |
| topmostSubform[0].Page1[0].f1_18[0] | text | |
| topmostSubform[0].Page1[0].f1_19[0] | text | |
| topmostSubform[0].Page1[0].f1_20[0] | text | |
| topmostSubform[0].Page1[0].f1_21[0] | text | |
| topmostSubform[0].Page1[0].f1_22[0] | text | |
| topmostSubform[0].Page1[0].f1_23[0] | text | |
| topmostSubform[0].Page1[0].f1_24[0] | text | |
| topmostSubform[0].Page1[0].f1_25[0] | text | |
| topmostSubform[0].Page1[0].f1_26[0] | text | |
| topmostSubform[0].Page1[0].f1_27[0] | text | |
| topmostSubform[0].Page1[0].f1_28[0] | text | |
| topmostSubform[0].Page1[0].f1_29[0] | text | |
| topmostSubform[0].Page1[0].BulletedList[0].Bullet1[0].c1_2[0] | checkbox | |
| topmostSubform[0].Page1[0].f1_30[0] | text | |
| topmostSubform[0].Page1[0].f1_31[0] | text | max 9 chars |
| topmostSubform[0].Page1[0].f1_32[0] | text | max 17 chars |
| topmostSubform[0].Page1[0].c1_3[0] | checkbox | |
| topmostSubform[0].Page1[0].c1_4[0] | checkbox | |
| topmostSubform[0].Page2[0].f2_1[0] | text | |
| topmostSubform[0].Page2[0].c2_1[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_1[1] | checkbox | |
| topmostSubform[0].Page2[0].c2_2[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_2[1] | checkbox | |
| topmostSubform[0].Page2[0].f2_2[0] | text | |
| topmostSubform[0].Page2[0].f2_3[0] | text | |
| topmostSubform[0].Page2[0].c2_3[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_3[1] | checkbox | |
| topmostSubform[0].Page2[0].c2_3[2] | checkbox | |
| topmostSubform[0].Page2[0].c2_3[3] | checkbox | |
| topmostSubform[0].Page2[0].f2_4[0] | text | |
| topmostSubform[0].Page2[0].c2_4[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_4[1] | checkbox | |
| topmostSubform[0].Page2[0].c2_4[2] | checkbox | |
| topmostSubform[0].Page2[0].c2_4[3] | checkbox | |
| topmostSubform[0].Page2[0].f2_5[0] | text | |
| topmostSubform[0].Page2[0].f2_6[0] | text | |
| topmostSubform[0].Page2[0].f2_7[0] | text | |
| topmostSubform[0].Page2[0].c2_5[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_5[1] | checkbox | |
| topmostSubform[0].Page2[0].c2_6[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_6[1] | checkbox | |
| topmostSubform[0].Page2[0].f2_8[0] | text | |
| topmostSubform[0].Page2[0].c2_7[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_7[1] | checkbox | |
| topmostSubform[0].Page2[0].c2_8[0] | checkbox | |
| topmostSubform[0].Page2[0].c2_8[1] | checkbox | |
| topmostSubform[0].Page2[0].f2_9[0] | text | |
| topmostSubform[0].Page2[0].f2_10[0] | text |
Bank details deserve better than an email thread
The direct-debit lines want a routing and account number, which is exactly the data nobody should be sending back and forth in attachments. Collect them through the embedded form instead: the client types their own digits into fields with their own length limits, and the completed values arrive on your webhook — signed, structured, and never sitting in an inbox.
Questions people ask
- Doesn't the IRS have an online payment agreement?
- It does, and for taxpayers who qualify it's often the faster path. The paper 9465 remains the route when the request rides with a filed return, when thresholds require a collection statement alongside it, or when a practice files on the client's behalf — which is where generating it from data pays off.
- What goes with it on larger balances?
- Usually a collection information statement — see our Form 433-F page. Both templates run off the same intake data.
See your Form 9465 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 9465 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.