Forms / IRS
Fill Form 4506-C programmatically
Form 4506-C — IVES Request for Transcript of Tax Return. Official IRS PDF, 2 pages, 72 fields read automatically.
Income verification through IVES starts with a 4506-C that must be exactly right — the IRS rejects requests over stray marks and mismatched lines, and every rejection is days added to a loan. Origination systems hold all the data; what they need is a way to produce a clean, consistently formatted 4506-C and get it signed without a print-sign-scan loop.
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": {
"form1[0].page_1[0].name_shown[0].first_name[0]": "string",
"form1[0].page_1[0].name_shown[0].middle_initial[0]": "string",
"form1[0].page_1[0].name_shown[0].last_name[0]": "string",
"form1[0].page_1[0].name_shown[0].first_ssn[0]": "string",
"form1[0].page_1[0].name_shown[0].previous_first_name[0]": "string"
}
}
// …plus 65 more fields, all listed belowWhat you get back
The completed Form 4506-C, 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 4506-C 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 4506-C
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 |
|---|---|---|
| form1[0].page_1[0].name_shown[0].first_name[0] | text | max 12 chars |
| form1[0].page_1[0].name_shown[0].middle_initial[0] | text | max 1 char |
| form1[0].page_1[0].name_shown[0].last_name[0] | text | max 22 chars |
| form1[0].page_1[0].name_shown[0].first_ssn[0] | text | max 11 chars |
| form1[0].page_1[0].name_shown[0].previous_first_name[0] | text | max 12 chars |
| form1[0].page_1[0].name_shown[0].previous_middle_initial[0] | text | max 1 char |
| form1[0].page_1[0].name_shown[0].previous_last_name[0] | text | max 22 chars |
| form1[0].page_1[0].if_a_joint[0].first_name[0] | text | max 12 chars |
| form1[0].page_1[0].if_a_joint[0].middle_initial[0] | text | max 1 char |
| form1[0].page_1[0].if_a_joint[0].last_name[0] | text | max 22 chars |
| form1[0].page_1[0].if_a_joint[0].second_ssn[0] | text | max 11 chars |
| form1[0].page_1[0].if_a_joint[0].previous_first_name[0] | text | max 12 chars |
| form1[0].page_1[0].if_a_joint[0].previous_middle_initial[0] | text | max 1 char |
| form1[0].page_1[0].if_a_joint[0].previous_last_name[0] | text | max 22 chars |
| form1[0].page_1[0].current_name_address[0].street_address[0] | text | max 35 chars |
| form1[0].page_1[0].current_name_address[0].city[0] | text | max 20 chars |
| form1[0].page_1[0].current_name_address[0].state[0] | text | max 2 chars |
| form1[0].page_1[0].current_name_address[0].zip_code[0] | text | max 5 chars |
| form1[0].page_1[0].previous_address_shown[0].street_address[0] | text | max 35 chars |
| form1[0].page_1[0].previous_address_shown[0].city[0] | text | max 20 chars |
| form1[0].page_1[0].previous_address_shown[0].state[0] | text | max 2 chars |
| form1[0].page_1[0].previous_address_shown[0].zip_code[0] | text | max 5 chars |
| form1[0].page_1[0].ives_participant_name[0].ives_participant_name[0] | text | max 35 chars |
| form1[0].page_1[0].ives_participant_name[0].ives_participant_id[0] | text | max 10 chars |
| form1[0].page_1[0].ives_participant_name[0].sor_mailbox_id[0] | text | max 20 chars |
| form1[0].page_1[0].ives_participant_name[0].street_address[0] | text | max 35 chars |
| form1[0].page_1[0].ives_participant_name[0].city[0] | text | max 20 chars |
| form1[0].page_1[0].ives_participant_name[0].state[0] | text | max 2 chars |
| form1[0].page_1[0].ives_participant_name[0].zip_code[0] | text | max 5 chars |
| form1[0].page_1[0].customer_file_number[0] | text | max 10 chars |
| form1[0].page_1[0].unique_identifer[0] | text | max 10 chars |
| form1[0].page_1[0].client_info[0].first_name[0] | text | max 35 chars |
| form1[0].page_1[0].client_info[0].telephone_number[0] | text | |
| form1[0].page_1[0].client_info[0].street_address[0] | text | max 35 chars |
| form1[0].page_1[0].client_info[0].city[0] | text | max 20 chars |
| form1[0].page_1[0].client_info[0].state[0] | text | max 2 chars |
| form1[0].page_1[0].client_info[0].zip_code[0] | text | max 5 chars |
| form1[0].page_1[0].transcript_reqeust[0] | text | max 35 chars |
| form1[0].page_1[0].transcript_type[0].return_transcript[0] | checkbox | |
| form1[0].page_1[0].transcript_type[0].account_transcript[0] | checkbox | |
| form1[0].page_1[0].transcript_type[0].record_of_account[0] | checkbox | |
| form1[0].page_1[0].question_7[0] | checkbox | |
| form1[0].page_1[0].#subform[9].form_number1[0] | text | max 10 chars |
| form1[0].page_1[0].#subform[9].form_number2[0] | text | max 10 chars |
| form1[0].page_1[0].#subform[9].form_number3[0] | text | max 10 chars |
| form1[0].page_1[0].taxpayer_requesting[0].line_1a[0] | checkbox | |
| form1[0].page_1[0].taxpayer_requesting[0].line_2a[0] | checkbox | |
| form1[0].page_1[0].question_8[0].f1_15[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_16[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_17[0] | text | max 4 chars |
| form1[0].page_1[0].question_8[0].f1_18[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_19[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_20[0] | text | max 4 chars |
| form1[0].page_1[0].question_8[0].f1_21[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_22[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_23[0] | text | max 4 chars |
| form1[0].page_1[0].question_8[0].f1_24[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_25[0] | text | max 2 chars |
| form1[0].page_1[0].question_8[0].f1_26[0] | text | max 4 chars |
| form1[0].page_1[0].signature_attests[0] | checkbox | |
| form1[0].page_1[0].signature[0] | text | read-only |
| form1[0].page_1[0].date[0] | text | |
| form1[0].page_1[0].phone_number[0] | text | |
| form1[0].page_1[0].form_4506c[0] | checkbox | |
| form1[0].page_1[0].signatory_confirms[0] | checkbox | |
| form1[0].page_1[0].print_type_name[0] | text | |
| form1[0].page_1[0].title[0] | text | max 35 chars |
| form1[0].page_1[0].spouses_signature[0] | text | read-only |
| form1[0].page_1[0].spouses_form_4506c[0] | checkbox | |
| form1[0].page_1[0].spouses_signatory_confirms[0] | checkbox | |
| form1[0].page_1[0].date[1] | text | |
| form1[0].page_1[0].print_type_name[1] | text |
Rejections are a formatting problem
IVES participants learn quickly that the 4506-C is graded by machines: names must match the return, only the requested lines filled, nothing bleeding outside its box. Filling by API makes the output deterministic — the same payload produces the same pixels — and per-field validation catches a malformed year or SSN before it becomes a rejected request.
Questions people ask
- Can the borrower e-sign the 4506-C?
- The IRS accepts electronic signatures on 4506-C forms submitted through IVES participants that meet its e-signature requirements. The embedded form collects a drawn signature and stamps it into the PDF; the audit-trail obligations of your IVES agreement remain yours.
- How does the finished form reach my processor?
- Configure a webhook and every completed fill or submission is delivered to your endpoint, HMAC-signed, with your own metadata attached — loan ID, branch, whatever you sent as params.
See your Form 4506-C 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 4506-C 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.