Form 1099-R reports distributions from pensions, annuities, retirement plans, and IRAs, and you can file it through the IRS Information Returns Intake System (IRIS) either by typing it into the web portal or by transmitting XML through the Automated Enrollment / Application-to-Application (A2A) channel. The form has its own validation rules on top of the shared ones: the taxable amount can never exceed the gross distribution, the distribution code in box 7 must be valid, and federal withholding cannot look excessive against what was paid out. The recipient copy is due January 31 and the electronic copy to the IRS is due March 31, so the filing window is wider than for 1099-NEC — but the rejections are subtler. If your deadline is close and you would rather not stand up your own A2A connection, a provider that already holds a Transmitter Control Code can transmit on your behalf today.
In this story
What 1099-R Actually Reports — and Why It Trips People Up
Form 1099-R is the information return for money leaving a retirement vehicle. Anyone who pays out $10 or more from a pension, an annuity, a profit-sharing or retirement plan, an IRA, or an insurance contract generally has to file one, and that single threshold is why payers who think of themselves as small still end up filing dozens of these forms every January.
The reason 1099-R is harder to get right than a straightforward payment form is that the boxes describe each other. Box 1 carries the gross distribution — the total amount that left the account. Box 2a carries the taxable amount, which is often less than the gross because part of the distribution was a return of after-tax basis. Box 7 carries one or more distribution codes that tell the IRS what kind of event this was: a normal distribution, an early withdrawal, a death benefit, a rollover, a Roth conversion, and so on. Because these fields are interdependent, IRIS does not just check that each box is formatted correctly; it checks that the story they tell is internally consistent. A taxable amount larger than the gross distribution, or a withholding figure that dwarfs the payout, is the kind of thing the system catches and pushes back.
In the IRIS XML schema the human box numbers map to named elements, and it is worth learning the names because every rejection message refers to them rather than to “box 1” or “box 7.” The gross distribution is GrossDistributionAmt, the taxable amount is TaxableAmt, the box 7 code is Form1099RDistributionCd, federal withholding is FederalIncomeTaxWithheldAmt, and the IRA/SEP/SIMPLE checkbox is IRASEPSIMPLEInd. When IRIS reports an error, it speaks in these element names, so matching them back to the boxes your software shows you is the first step to fixing anything.
The intake mechanics for 1099-R follow the same A2A specification as every other IRIS form. The portal and bulk-upload paths are described in IRS Publication 5717, the A2A submission composition in Publication 5718, and you register for the credentials you need through IRS e-Services. The element names and rule numbers cited here come from the IRIS schema and business-rule catalog for tax year 2025 (v1.4).
Portal or A2A: Which Filing Path Fits Your Volume
IRIS gives you two genuinely different ways to file the same form, and choosing between them is the first real decision. The web portal lets you key a return in by hand or upload a CSV through your IRIS account, which is the right answer when you have a handful of 1099-R records and no appetite for building software. The A2A channel is a machine-to-machine pipe: you compose the return as XML, sign a transmission, and post it to the IRS, then poll for an acknowledgement. A2A is what you reach for at volume, but it requires a Transmitter Control Code and passing Assurance Testing before you can send a single live record.
| Dimension | IRIS portal | IRIS A2A |
|---|---|---|
| Best for | A few to a few hundred records | Hundreds to millions of records |
| How you submit | Type in, or upload a CSV | Sign and POST IRIS XML |
| Setup needed | An IRIS / IR account | TCC + passing ATS testing first |
| Acknowledgement | On-screen status | Asynchronous, polled after submit |
| You must hold a TCC | Not for portal CSV | Yes — this is non-negotiable |
Whichever path you pick, the validation that decides whether your 1099-R is accepted is identical. The portal runs the same business rules the A2A pipeline does; it just shows you the result on a screen instead of in an acknowledgement file. That means the rejection reasons later in this article apply no matter how you submit — the form has to be internally consistent before the IRS will take it either way.
The Fields Every 1099-R Must Carry
Before you worry about distribution codes, a 1099-R has to clear the same baseline every IRIS information return does. The recipient’s Taxpayer Identification Number must be present — rule SHAREDIRFORM023 rejects a record whose TIN in RecipientDetail is missing — and the recipient needs a mailing address, since SHAREDIRFORM016 requires a MailingAddressGrp that is either a U.S. or a foreign address. The payer (the “issuer” in IRIS terms) must supply its own name and TIN, and those have to match what the IRS has on file.
| What it is | IRIS element | Notes |
|---|---|---|
| Gross distribution (box 1) | GrossDistributionAmt | The total paid out; the ceiling other amounts are checked against |
| Taxable amount (box 2a) | TaxableAmt | Must not exceed the gross distribution |
| Taxable amount not determined (box 2b) | TxblAmountNotDeterminedInd | Interacts with the IRA/SEP/SIMPLE flag |
| Federal tax withheld (box 4) | FederalIncomeTaxWithheldAmt | Flagged if excessive vs. the income reported |
| Distribution code(s) (box 7) | Form1099RDistributionCd | Must be a valid code or code combination |
| IRA/SEP/SIMPLE checkbox | IRASEPSIMPLEInd | Changes how the taxable amount is validated |
| State tax detail | StateLocalTaxGrp | Needed when you file state amounts or elect CF/SF |
The payee match is worth pausing on, because it is the most common way a perfectly formatted 1099-R still draws an error. Rule SHAREDIRFORM014 compares the recipient’s PersonName and TIN against the IRS database, and SHAREDIRFORM015 does the same for a business recipient’s BusinessName. These are reported as errors rather than hard rejections, but a name-and-TIN mismatch left unresolved is what later turns into a CP2100 notice and potential backup-withholding obligations, so it is worth running TIN matching before you file rather than after.
Distribution Codes and Taxable Amounts: Where the Logic Lives
The single most 1099-R-specific thing you have to get right is the relationship between the amounts. IRIS encodes this directly. Rule F1099R002 says that if TaxableAmt has a nonzero value, it must not be greater than GrossDistributionAmt — you cannot tell the IRS that more was taxable than was actually distributed. The same ceiling applies to the capital-gain figure under F1099R003 and to net unrealized appreciation under F1099R005_001: neither can exceed the gross distribution. These are reject-if-over-threshold rules, which means a few cents of rounding noise might be tolerated but a real inversion will stop the filing.
The distribution code in box 7 also carries downstream consequences. Rule F1099R006 captures one of the classic traps: if you mark the taxable amount as not determined by setting TxblAmountNotDeterminedInd to “1” while the IRA/SEP/SIMPLE indicator IRASEPSIMPLEInd is “0,” then TaxableAmt must not carry a value greater than zero. In plain terms, you cannot simultaneously claim you could not determine the taxable amount and report a positive taxable amount — the system treats that as a contradiction. Finally, withholding gets its own sanity check: F1099R001 flags a FederalIncomeTaxWithheldAmt that looks excessive relative to the income amounts reported, which catches the common data-entry slip of putting the gross distribution into the withholding box.
Every one of these checks is something you can run yourself before submission. Confirm that the taxable amount, capital gain, and net unrealized appreciation each sit at or below the gross distribution, that withholding is a believable fraction of the payout, and that the box 7 code is consistent with the “taxable amount not determined” flag. Doing that reconciliation up front turns a rejection cycle into a clean acceptance.
Filing a 1099-R Through IRIS, Step by Step
Confirm your access and method
Make sure you have an active IRIS account for the portal path, or a Transmitter Control Code and passing ATS results for A2A. You cannot transmit a live A2A submission without a TCC, so settle this before filing season, not during it.
before seasonAssemble the recipient and payer data
Gather each recipient’s name, TIN, and mailing address, and your own issuer name and TIN, and run TIN matching so a mismatch surfaces now rather than as a notice in the spring.
1–2 hrsMap the boxes to the IRIS elements
Place each amount in the right element — gross into GrossDistributionAmt, taxable into TaxableAmt, the box 7 code into Form1099RDistributionCd — and set the IRASEPSIMPLEInd flag correctly, because it changes how the taxable amount is validated.
Pre-validate the amount logic
Check the relationships the form rules enforce: taxable, capital gain, and net unrealized appreciation each at or below the gross distribution, and withholding that is plausible against the payout. This is where most rejections are prevented.
15 minSubmit and capture the acknowledgement
Through the portal you submit and read the on-screen status; through A2A you sign and POST the transmission, then poll for the asynchronous acknowledgement that returns a Receipt ID and, later, the accepted-or-rejected status for each record.
minutesResolve any rejected records and resubmit
Read the rule code on each rejected record, fix the underlying data, and resubmit only the corrected records. A record that was never accepted is resent as an Original, not as a correction.
as neededState Filing: The Combined Federal/State Trap
Many 1099-R filers can satisfy their state reporting in the same transmission through the Combined Federal/State Filing program, where the IRS forwards the record to the participating state for you. The mechanics are unforgiving in one specific way, and it is the most common state-related rejection on the platform. If you put a state into CFSFElectionStateCd on the record, rule SHAREDIRFORM020 requires that the CFSFElectionInd on the submission header be set to “1,” and rule SHAREDIRFORM022 requires at least one TotalByStateGrp to be present with the state totals. Elect a state on the record but forget the header flag or the state-totals group, and the election does not take.
There is also a fixed list of states that participate. Rule SHAREDIRFORM019_002 validates that any value in CFSFElectionStateCd is one of the program’s participating states, so electing a non-participating state simply errors out. If your recipient lives in a state that runs its own direct-filing program instead, CF/SF will not cover you, and you need to file with that state separately — the broader breakdown of which states accept CF/SF and which demand direct filing is its own topic.
Common Rejection Reasons (and How to Avoid Them)
Most 1099-R rejections come from a short list of internal inconsistencies. Each one is preventable with a check you can run before you transmit, so they are worth knowing by name.
Cause: TaxableAmt carries a value larger than GrossDistributionAmt, which rule F1099R002 rejects once it crosses the threshold — usually a basis calculation that went the wrong way or a transposed figure. Fix: confirm the taxable amount is at or below the gross distribution; if the whole distribution is taxable, the two are equal, never inverted.
Cause: FederalIncomeTaxWithheldAmt is implausibly large relative to the income reported, which F1099R001 flags — almost always the gross distribution accidentally keyed into the withholding box. Fix: recheck box 4 against the actual amount withheld; for most distributions it is a fraction of the gross, not the whole thing.
Cause: TxblAmountNotDeterminedInd is set to “1” while IRASEPSIMPLEInd is “0” and TaxableAmt still carries a positive value, which rule F1099R006 treats as a contradiction. Fix: either clear the “not determined” indicator if you do have a taxable amount, or zero out the taxable amount if you genuinely could not determine it.
Cause: a state was placed in CFSFElectionStateCd but the submission header’s CFSFElectionInd was not set to “1” (SHAREDIRFORM020) or no TotalByStateGrp was supplied (SHAREDIRFORM022). Fix: set the election flag on the submission header and include the state-totals group whenever you elect a state on the record.
Cause: the recipient’s PersonName and TIN fail the match in rule SHAREDIRFORM014 (or SHAREDIRFORM015 for a business recipient) — a typo, a married-name change, or a wrong digit. Fix: run TIN matching before filing and correct the name or number; this is reported as an error, but left alone it becomes a CP2100 notice later.
When the Validation Logic Is Doing the Hard Part for You
Tired of reconciling box 1, box 2a, and box 7 by hand?
e1099f checks every 1099-R against the IRIS amount and distribution-code rules before it transmits, so you get a Receipt ID instead of a rule code.
Skip the Reconciliation: The e1099f Advantage
Rules run first
Every 1099-R amount and distribution-code rule is checked before we submit, not after the IRS sends back a code.
Your data in
Import the spreadsheet you already keep; the fields map to the IRIS elements automatically.
CF/SF handled
The election flag and state-totals group are emitted together, so the state election actually takes.
A Receipt ID, not a rejection — even when box 1, 2a, and 7 have to agree.
Frequently Asked Questions
When is Form 1099-R due?
Do I need a TCC to file 1099-R on IRIS?
Why was my 1099-R rejected when the formatting looked fine?
TaxableAmt that exceeds GrossDistributionAmt (rule F1099R002), followed by withholding that looks excessive against the payout (F1099R001).Can the taxable amount ever be more than the gross distribution?
TaxableAmt is greater than GrossDistributionAmt. If the entire distribution is taxable, the two are equal.What does box 7 map to in the IRIS XML?
Form1099RDistributionCd element. It must be a valid code or code combination, and it interacts with the taxable-amount flags — see rule F1099R006.What is the IRA/SEP/SIMPLE checkbox in IRIS terms?
IRASEPSIMPLEInd element. It matters because it changes how the taxable amount is validated: rule F1099R006 ties the “taxable amount not determined” indicator and a positive taxable amount to the value of this flag.Can I file state amounts with my 1099-R on IRIS?
CFSFElectionStateCd, you must also set CFSFElectionInd to “1” on the submission header (SHAREDIRFORM020) and include a TotalByStateGrp with state totals (SHAREDIRFORM022).Which states accept 1099-R through CF/SF?
How do I fix a 1099-R that was rejected?
What happens if the recipient name and TIN don't match?
Does e1099f require me to understand any of these rules?
Not tax advice. This is general information about IRS procedures for filing Form 1099-R through IRIS. Element names, rule numbers, and thresholds follow the IRIS schema and business-rule catalog and may change as the IRS updates IRIS; the published IRS publications are authoritative. Consult a tax professional for your situation.