FinchContext
Run with

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

  1. 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). Ignore T, C, K, F for row data.
  2. Group by payer/form. Each A record opens a block of B records. 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.
  3. Extract issuer fields from the A record (and the payer name/address that 1220 carries) → the issuer columns.
  4. Extract each payee from every B record: TIN type, TIN, name, address, the populated payment-amount fields, and the corrected/indicator flags.
  5. 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 1EIN, 2SSN/ITIN; carry the corrected indicator into CorrectedInd.
  6. Map amount slots to boxes. Use the A-record Amount Codes to place each 1220 payment amount under the right IRIS BoxN column for that form (e.g. 1099-NEC Amount Code 1 → Box1 Nonemployee comp, Amount Code 4 → Box4 Fed tax withheld).
  7. Emit one CSV per form, header row from the official IRIS template, one row per B record. Split any file with more than 250 returns into multiple CSVs.
  8. 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)

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 00000150000015000.00; 1220 TIN type 2SSN; A-record NE → the 1099-NEC template; Amount Codes 1/4Box1/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


Validation checklist


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.