Migrate a Legacy Publication 1220 (FIRE) File into IRIS CSV
Skill: Convert a Publication 1220 fixed-width FIRE file into IRIS Taxpayer Portal CSV files
Region: United States Category: Information Returns (FIRE → IRIS migration) Does: Takes an existing IRS Publication 1220 fixed-width information-return file (the format the retiring FIRE system accepted) and converts each payee record into the corresponding IRIS Taxpayer Portal CSV row — un-imputing the implied-decimal money fields, mapping each A-record "Type of Return" to its own per-form IRIS CSV, and dropping the records IRIS no longer uses. System: IRIS (Information Returns Intake System) — replaces FIRE
FIRE shuts down after tax year 2026; IRIS does not accept Publication 1220 fixed-width files. Beginning with TY2026 filings (filing season 2027) the only intake paths are IRIS Taxpayer Portal CSV or IRIS A2A XML. This skill migrates an existing 1220 file you already generate — it does not file it. The 1220 byte positions below are representative: positions shift by tax year and form. Always confirm the exact record layout against the current Publication 1220 and map onto the official IRIS CSV template for each form and tax year.
Why a straight copy does not work
A Publication 1220 file and an IRIS CSV differ in four ways that the conversion must reconcile:
| Aspect | Publication 1220 (FIRE) | IRIS Taxpayer Portal CSV |
|---|---|---|
| Layout | One 750-byte fixed-width record per line, positional | Comma-delimited, one row per return, header-named columns |
| Money fields | Right-justified, zero-filled, implied 2 decimals, no point (000001500000 = 15000.00) |
Decimal dollars-and-cents (15000.00), no $, no thousands separators |
| Multiple forms | Many form types in one file, separated by A (Payer) records carrying a "Type of Return" code | One CSV per form type — the file must be split by form |
| Control/structure records | T (Transmitter), C (payer totals), K (state totals), F (end) records carry counts | IRIS computes its own totals; only issuer + payee data is uploaded (state via the CF/SF columns) |
1220 record types and what happens to each
| 1220 record | Meaning | In the IRIS CSV |
|---|---|---|
| T | Transmitter | Dropped — IRIS identifies the transmitter by TCC at upload, not in the file |
| A | Payer / Issuer + "Type of Return" + "Amount Codes" | Becomes the issuer columns; its Type of Return selects which form's CSV the following B records go to; its Amount Codes say which payment-amount slots map to which numbered box |
| B | Payee return (the data) | One IRIS CSV row |
| C | End-of-payer control totals | Dropped — IRIS recomputes totals |
| K | State totals (CF/SF) | Dropped as a record; per-payee state values come from the B record into the CSV state columns |
| F | End of transmission | Dropped |
Conversion procedure
- Read the source. Accept the raw 1220 file as fixed-width text (each record 750 positions). Parse by record-type code in position 1 (
T,A,B,C,K,F). IgnoreT,C,K,Ffor row data. - Group by payer/form. Each
Arecord opens a block ofBrecords. Read the A record's Type of Return (form code) and Amount Codes (which of the 16 payment-amount fields are used, and their box meaning for that form). Start a new IRIS CSV per distinct form type. - Extract issuer fields from the
Arecord (and the payer name/address that 1220 carries) → the issuer columns. - Extract each payee from every
Brecord: TIN type, TIN, name, address, the populated payment-amount fields, and the corrected/indicator flags. - Normalize. Un-imply the decimals on every amount (integer value ÷ 100 → 2-decimal string); strip name-control and office-code fields IRIS does not use; map TIN-type
1→EIN,2→SSN/ITIN; carry the corrected indicator intoCorrectedInd. - Map amount slots to boxes. Use the A-record Amount Codes to place each 1220 payment amount under the right IRIS
BoxNcolumn for that form (e.g. 1099-NEC Amount Code 1 →Box1Nonemployee comp, Amount Code 4 →Box4Fed tax withheld). - Emit one CSV per form, header row from the official IRIS template, one row per
Brecord. Split any file with more than 250 returns into multiple CSVs. - Validate against the checklist below before uploading to the IRIS Taxpayer Portal.
Source (1220 B/A record) → IRIS CSV field map
| From the 1220 file | → IRIS CSV column |
|---|---|
| A record · Payer TIN | IssuerTIN |
| A record · Payer Name | IssuerName |
| A record · Payer address (from payer "A"/payer name records) | IssuerCity, IssuerState, IssuerZip |
| A record · Type of Return (form code) | selects the form's CSV template (e.g. NE→1099-NEC) |
| A record · Amount Codes | selects which BoxN each payment amount maps to |
B record · Type of TIN (pos 11: 1=EIN, 2=SSN/ITIN) |
RecipientTINType (EIN / SSN / ITIN) |
| B record · Payee TIN (9 digits) | RecipientTIN |
| B record · Corrected Return Indicator (pos 6) | CorrectedInd |
| B record · Payment Amount 1…G (12-pos, implied 2 dec) | Box1, Box2, … (÷ 100, per Amount Codes) |
| B record · Payee Name line(s) | RecipientName |
| B record · Payee Mailing Address / City / State / Zip | RecipientAddress, RecipientCity, RecipientState, RecipientZip |
| B record · Payer's Account Number For Payee | AccountNumber |
| B record · State income / state tax withheld / state code (CF/SF) | StateCode, StateIncome, StateTaxWithheld |
| B record · Name Control (pos 7-10) | dropped — not used by IRIS CSV |
| T / C / K / F records | dropped |
Worked example (end-to-end)
Input — Publication 1220 fixed-width (representative positions, one payer, two 1099-NEC payees)
A legend, then the records. Money fields are 12 positions, zero-filled, implied 2 decimals.
LEGEND (B record, representative):
pos 1 record type = "B"
pos 2-5 payment year = 2026
pos 6 corrected = " " (blank) | "G"/"C"
pos 11 TIN type = 1 (EIN) | 2 (SSN/ITIN)
pos 12-20 payee TIN (9 digits)
pos 55-66 Payment Amount 1 (NEC Amount Code 1 = nonemployee comp)
pos 67-78 Payment Amount 4 (NEC Amount Code 4 = fed tax withheld)
name/address blocks follow
A 2026 ... Payer EIN 123456789 Payer "ACME LLC" Type of Return "NE" Amount Codes "14"
B 2026 2 987654321 ... Payment1=000001500000 Payment4=000000000000 ... "BETA CONSULTING LLC" "7 MARKET ST" "DALLAS" "TX" "75201"
B 2026 2 123456789 ... Payment1=000000420000 Payment4=000000000000 ... "JANE DOE" "42 ELM ST" "DENVER" "CO" "80202"
C ... payer totals (dropped)
F ... end of transmission (dropped)
After parse + normalization (intermediate)
- Form selected from A-record Type of Return
NE→ 1099-NEC CSV template. - Amount Codes
1and4→Box1(nonemployee comp) andBox4(fed tax withheld). 000001500000÷ 100 →15000.00;000000420000÷ 100 →4200.00;000000000000→0.00.- TIN type
2→SSNfor the individual, the company TIN typed per its B record.
Output — IRIS 1099-NEC Taxpayer Portal CSV
IssuerTIN,IssuerName,IssuerCity,IssuerState,IssuerZip,RecipientTINType,RecipientTIN,RecipientName,RecipientAddress,RecipientCity,RecipientState,RecipientZip,AccountNumber,Box1,Box4,CorrectedInd
12-3456789,Acme LLC,Austin,TX,78701,EIN,98-7654321,Beta Consulting LLC,7 Market St,Dallas,TX,75201,A1001,15000.00,0.00,
12-3456789,Acme LLC,Austin,TX,78701,SSN,123-45-6789,Jane Doe,42 Elm St,Denver,CO,80202,A1002,4200.00,0.00,
Transformations shown: implied-decimal 000001500000 → 15000.00; 1220 TIN type 2 → SSN; A-record NE → the 1099-NEC template; Amount Codes 1/4 → Box1/Box4; T/C/F records dropped. If the original file mixed forms (e.g. an A record with Type of Return 6 for 1099-MISC after the NEC block), emit a separate 1099-MISC CSV — never combine form types in one IRIS CSV.
File structure
1220 file (single) IRIS upload (split by form)
├── T transmitter ─drop─
├── A payer · "NE" ──────► 1099-NEC.csv (header + B rows)
│ ├── B payee
│ └── B payee
├── A payer · "6" (MISC) ──────► 1099-MISC.csv (header + B rows)
│ └── B payee
├── C payer totals ─drop─
└── F end ─drop─
Mandatory: every B row becomes one CSV line under the CSV matching its governing A record's form. Optional: the state (CF/SF) columns, populated only when the B record carried state data.
Code tables
1220 Type of Return → IRIS form (representative)
| 1220 code | Form | IRIS CSV template |
|---|---|---|
NE |
1099-NEC | 1099-NEC |
6 |
1099-MISC | 1099-MISC |
1 |
1099-INT | 1099-INT |
2 |
1099-DIV | 1099-DIV |
A |
1099-K | 1099-K |
9 |
1099-R | 1099-R |
1220 TIN type (B record pos 11) → IRIS RecipientTINType
| 1220 | IRIS |
|---|---|
1 |
EIN |
2 |
SSN or ITIN (an ITIN is a 9XX-7X/8X SSN-formatted number) |
Confirm both tables against the current Publication 1220 — codes are tax-year specific.
Calculation / data rules
- Money: IRIS value = 1220 integer amount ÷ 100, formatted to exactly 2 decimals; no
$, no commas. A blank/zero 1220 amount becomes0.00(or is left empty per the template's rule for that box). - No invented data: if a 1220 field the IRIS template requires is blank (e.g. a missing recipient ZIP), stop and ask — do not default it.
- 250-row cap: split each per-form CSV into multiple files of ≤ 250 returns; multiple files for the same form/tax year are allowed.
- Corrections: a 1220 corrected record (
G/Cin pos 6) maps to the IRIS corrected indicator and is filed through IRIS — FIRE will not accept corrections after shutdown. - Totals: never carry C/K record totals into the CSV; IRIS recomputes. Use them only to reconcile your converted row counts and amount sums against the source.
Validation checklist
- File split into one CSV per form type (driven by each A-record Type of Return)
- Correct current-year IRIS CSV template headers used for each form (not the 1220 layout)
- Every B record produced exactly one CSV row; T/C/K/F records dropped
- All amounts un-implied (÷ 100) to 2-decimal dollars-and-cents, no symbols
- TIN type mapped (
1→EIN,2→SSN/ITIN); each TIN is 9 digits - Corrected indicator carried over where the 1220 record was a correction
- State (CF/SF) columns populated only where the B record carried state data
- Each CSV ≤ 250 rows; converted row count and amount totals reconcile to the 1220 C-record totals
- Filer enrolled with an IRIS TCC before upload (FIRE TCC does not carry over)
Last updated: 2026-06-12 — FIRE retires after TY2026 and IRIS rejects Publication 1220 files. Confirm exact 1220 record byte positions, Type-of-Return and Amount-Code tables against the current Publication 1220, and map onto the official IRIS CSV template headers for each form and tax year before use.