You take a qualified Roth IRA distribution. You’re over 59½. The account has been open for more than five years. The entire $40,000 comes out tax-free. You report it correctly on your tax return by entering the distribution on the IRA distribution line with zero in the taxable column. Eighteen months later, you get a CP2000 notice from the IRS saying you failed to report $40,000 of retirement income and owe taxes, penalties, and interest totaling nearly $12,000.
You did everything right. The distribution was qualified. It wasn’t taxable. Your tax return was accurate. But the IRS computer doesn’t see any of that context. It sees a 1099-R showing $40,000 in box 1 and a tax return showing zero taxable income from that distribution. Mismatch. The system flags it and generates a notice asking you to explain why you didn’t report the income.
The IRS matching system is mechanical. It compares the gross distribution amount on the 1099-R against the taxable income reported on your return. If the numbers don’t align, it assumes you forgot to report income. It doesn’t look at distribution codes. It doesn’t check for Form 8606. It doesn’t verify whether the distribution was qualified. It just compares two numbers. If they’re different, you get a notice.
The 1099-R reports the gross distribution in box 1. That’s the total amount that left the retirement account. For a Roth IRA, that number appears on the 1099-R even if the distribution is completely tax-free. The custodian has to report the distribution to the IRS. The fact that it’s not taxable doesn’t eliminate the reporting requirement.
Box 2a shows the taxable amount. For a qualified Roth distribution, box 2a should be zero or blank. Box 7 shows the distribution code. For a Roth distribution, the code is usually J. If it’s a qualified distribution, some custodians add a Q modifier. But many major custodians including Schwab and Fidelity have become conservative with code Q. They only use it if the Roth has been held at their specific firm for five years. If you rolled a ten-year-old Roth into Schwab and took a distribution three months later, Schwab uses code J even though the distribution is qualified. The custodian doesn’t have records proving the five-year clock was satisfied before the account arrived.
When the IRS matching system runs, it pulls the 1099-R from the Information Returns Master File. It sees $40,000 in box 1. Then it pulls the tax return from the Individual Master File. It looks for $40,000 reported on the IRA distribution line. If the line shows $40,000 gross and zero taxable, the first-stage automated match sometimes passes. But if the line was left completely blank because the taxpayer thought a nontaxable distribution didn’t need to be reported at all, the system detects a discrepancy. It doesn’t parse the distribution code. It doesn’t check whether Form 8606 was filed. It sees a $40,000 distribution on the 1099-R and nothing on the return. That’s enough to trigger a CP2000 notice.
The notice proposes adding $40,000 of taxable income to your return. It calculates the tax on that income. It adds penalties if you’re under 59½. It calculates interest retroactively from April 15th, 2026, at a rate around 8% to 9%. Eighteen months of interest on a large tax adjustment adds thousands of dollars to the proposed bill. The total adjustment can be significant. The notice gives you a deadline to respond. If you don’t respond, the IRS assesses the additional tax and sends a bill.
At Charles Schwab, I took calls from people who got CP2000 notices for qualified Roth distributions they correctly excluded from income. They were furious. They did everything right. The distribution was qualified. They didn’t owe taxes. Their return was accurate. But the IRS sent a notice anyway demanding payment.
The issue wasn’t always that the taxpayer made a mistake. Sometimes the issue was that the IRS matching system operates on a limited set of data points. It compares the gross distribution amount on the 1099-R against the taxable income on the return. If those numbers don’t match, it assumes there’s unreported income. The taxpayer has to respond to the notice and explain why the distribution wasn’t taxable.
Here’s a specific example. A taxpayer age 62 takes a $50,000 distribution from a Roth IRA that’s been open for twelve years. The distribution is qualified. No taxes owed. No penalties. The custodian issues a 1099-R showing $50,000 in box 1, zero in box 2a, and code J in box 7. The code is J instead of Q because the taxpayer rolled the Roth from Vanguard to Schwab two years ago. Schwab doesn’t have records showing the account existed for twelve years. They only know it’s been at Schwab for two years. They use code J and leave it to the taxpayer to determine whether the distribution is qualified.
The taxpayer files their 2025 return in March 2026. They report $50,000 on the IRA distribution line with zero in the taxable column. They don’t file Form 8606 because they assume a qualified Roth distribution doesn’t require additional documentation. The return gets processed and the refund gets issued.
The IRS matching system runs in August 2027. It compares the $50,000 shown on the 1099-R against the taxable income reported on the return. The return shows zero taxable income from the Roth distribution. The system flags it as a potential $50,000 underreporting. It generates a CP2000 notice proposing to add $50,000 of taxable income. The notice calculates the tax at the taxpayer’s marginal rate. It adds interest at 8% dating back to April 15th, 2026. The total proposed adjustment is $15,000 or more depending on the tax bracket and the accumulated interest over eighteen months.
The taxpayer receives the notice in October 2027. They respond by explaining the distribution was a qualified Roth distribution. They attach documentation showing they’re over 59½ and the Roth has been open for more than five years at the prior custodian. The IRS reviews the response, confirms the distribution was qualified, and closes the case with no adjustment. But the taxpayer had to spend time and effort responding to a notice that never should have been generated if the system understood distribution codes or if Form 8606 had been filed to document the nontaxable distribution.
The same issue happens with rollovers. A taxpayer does a direct rollover from one IRA to another. Code G. The $100,000 moves directly from the old custodian to the new custodian. The taxpayer never touches the money. It’s not taxable. The old custodian issues a 1099-R showing $100,000 in box 1, zero in box 2a, and code G in box 7. The taxpayer files their return and reports the distribution on the IRA line with zero taxable.
The IRS matching system sees the 1099-R showing $100,000. It looks for $100,000 reported on the return. The return shows $100,000 gross and zero taxable. But the system is also waiting for confirmation that the money landed in another retirement account. That confirmation comes from Form 5498 filed by the receiving custodian. The 1099-R is filed by March 31st. The Form 5498 isn’t filed until June 1st. When the matching program runs in August or September, it’s looking for both forms. If the Form 5498 showing the receiving deposit hasn’t been processed yet or was filed by a different custodian under a slightly different Social Security number format, the match fails. The system sees money leave one account but no confirmation it arrived in another. Mismatch. The system generates a CP2000 notice proposing to tax the entire $100,000 as an early distribution.
The taxpayer responds by explaining it was a direct rollover. The IRS requests documentation. The taxpayer provides the receiving custodian’s account statement showing the $100,000 was deposited. The IRS verifies the rollover and closes the case. But again, the taxpayer had to defend a transaction that was reported correctly from the start. The issue wasn’t the taxpayer’s mistake. The issue was that the automated matching system was comparing the 1099-R from one custodian against the Form 5498 from a different custodian, and the timing or indexing didn’t align perfectly.
Roth conversions trigger the same problem. A taxpayer converts $80,000 from a traditional IRA to a Roth IRA. They report the $80,000 as taxable income on their return and pay the tax. But they also take a $20,000 qualified distribution from a different Roth IRA the same year. The distribution isn’t taxable. The custodian issues two 1099-Rs. One showing the $80,000 conversion with code 2. One showing the $20,000 distribution with code J.
The IRS matching system sees $100,000 in gross distributions across the two 1099-Rs. It sees $80,000 of taxable income reported on the return. It calculates a $20,000 discrepancy and sends a CP2000 notice. The taxpayer responds explaining the $20,000 was a qualified Roth distribution, not taxable. They attach Form 8606 showing the Roth distribution was nontaxable. The IRS closes the case. But the notice was generated because the system doesn’t differentiate between taxable and nontaxable distributions when it runs the initial comparison.
The CP2000 notice is a proposal. It’s not a bill. It’s not an assessment. The IRS is saying their automated system found a potential discrepancy and they’re asking you to verify whether it’s accurate. You have the right to disagree. You provide documentation showing why your return was correct. The IRS reviews it. If your explanation is valid, they close the case with no adjustment.
The problem is that many people panic when they get the notice. They see a large dollar amount. They see interest calculated at 8% or more retroactively over eighteen months. They see the words “additional tax owed.” They assume the IRS is right and they must have made a mistake. They pay the proposed adjustment without questioning it. That’s exactly what you shouldn’t do if the distribution was reported correctly.
If you took a qualified Roth distribution, respond to the CP2000 notice with an explanation. State that the distribution was qualified under the five-year rule and age requirement. Attach proof of your age. Attach account statements from the original custodian showing when the Roth was opened if the distribution happened shortly after a rollover. Explain that the distribution was correctly excluded from income. The IRS will review your response and close the case.
If you did a rollover, respond with documentation showing the money was deposited into another qualifying retirement account. Attach the receiving custodian’s statement showing the deposit. Attach Form 5498 if you have it. Explain that the transaction was a direct rollover reported with code G. The IRS will verify the rollover against the receiving custodian’s Form 5498 and close the case.
If the notice is wrong, don’t pay it. Respond with documentation. The IRS will correct the error. If you pay a CP2000 notice that was generated incorrectly, getting that money back is significantly harder than just responding to the notice in the first place.
The IRS matching system compares gross distributions against taxable income. It doesn’t evaluate whether a distribution was qualified, whether a rollover was valid, or whether basis was properly calculated in the first stage of automated matching. It compares numbers. If they don’t match, it generates a notice. The taxpayer responds with context the computer couldn’t see. The IRS reviews the response and either agrees or disagrees. If the taxpayer is right, the case closes. If the IRS is right, the additional tax gets assessed.
A correct distribution can trigger a notice if the matching system doesn’t have enough information to verify the transaction was nontaxable. That doesn’t mean you made a mistake. It means the automated system flagged a potential issue and you need to provide the documentation the computer couldn’t access. Respond to the notice. Explain the transaction. Attach proof. The IRS will close the case if your explanation is valid. The notice is not a final determination. It’s an automated flag asking for clarification.
I write one of these every day, one retirement rule, explained in plain language and verified against the source. The daily email is free: subscribe here.
Full archive, worksheets, and search live at RetirementNewsRundown.com.
Disclaimer
This article is for educational and informational purposes only. It is not tax, legal, or financial advice and does not create an advisor–client relationship. Always consult appropriate professionals regarding your specific situation.
