What happens if my crypto return doesn't match my 1099-DA?
The IRS compares the information returns it received, including Form 1099-DA, with what the return shows. When its automated system finds a potential discrepancy and a tax examiner confirms one, the IRS issues a CP2000: a proposal to adjust the return, not a bill. A difference between the return and the form is not wrong by itself. Many differences are legitimate: a transfer to the client's own wallet the broker treated as a sale, a movement that was never a disposal, basis the broker left blank, the same sale appearing on two brokers' forms. What matters is that each difference has a documented reason, row by row, written before any notice arrives. A hash-level classification record (category, treatment, confidence, review flag) is that reason for any row that turns on what happened on-chain. CryptoTaxEdge classifies. It does not compute basis, prepare the return, or answer notices.
Key takeaways
- The IRS matching program is the Automated Underreporter (AUR) function. It compares third-party information returns with the return and can lead to a CP2000.
- A CP2000 shows both sides: what the return reported and what the payer reported. The IRS says the difference "may increase or decrease your tax or may not change it at all."
- The support for a legitimate difference is the explanation file: for each 1099-DA row that does not tie, a reason and the evidence behind it.
- On-chain reasons (self-transfer, non-disposal) are classification questions. Basis reasons (blank box 1g) are records questions. Duplicates are issuer questions.
- Responding to a notice, and how, is the preparer's and the client's call. We do not answer notices.
What the IRS says about mismatches
How matching works. Topic no. 652 describes it: "Using an automated system, the Automated Underreporter (AUR) function compares the information reported by third parties to the information reported on your return to identify potential discrepancies. When a potential discrepancy is identified, a tax examiner further reviews the return." Then: "If a discrepancy exists, a Notice CP2000 is issued. The CP2000 isn't a bill, it's a proposal to adjust your income, payments, credits, and/or deductions."
What the notice shows. Topic 652 lists "The amounts you reported on your original or processed amended return," "The amounts reported to the IRS by the payer," and "The payer's name, ID number, the type of document issued," among other items. Understanding your CP2000 series notice says the information from third parties "doesn't match what you reported on your tax return. This difference may increase or decrease your tax or may not change it at all."
Responding. Topic 652 says that a taxpayer who disagrees should "mark the appropriate box on the Response form and reply to us along with a signed statement explaining why you disagree. Include any supporting documentation you would like us to consider." On timing, it says: "Respond within 30 days of the date of the notice or 60 days if you live outside the United States for a quick resolution," and "If we don't hear from you by the response date on the notice, we'll send you a Statutory Notice of Deficiency." The CP2000 page adds: "Reply to the notice by the date listed." We do not state when crypto notices will arrive; no IRS page we fetched on October 20, 2026 says.
The return side. The Form 8949 instructions say to include sales of digital assets "even if you didn't receive a Form 1099-B, Form 1099-DA, or Form 1099-S," and they provide columns (f) and (g) for forms that are incorrect, including code O for "an adjustment not explained earlier in this column." Understanding your Form 1099-DA tells recipients to request a corrected form from the issuer when it has incorrect information, and "Don't wait to file your taxes." Box-by-box mechanics are on How do I report Form 1099-DA on Form 8949 and Schedule D?; we do not restate them here.
The four legitimate differences, and what documents each
This page is about the return against the form the IRS received. For the software-versus-form comparison, see Why don't my 1099-DAs match my crypto tax software?.
| Difference | Why the return differs from the form | What the explanation file holds |
|---|---|---|
| Self-transfer treated as a sale | The broker saw assets leave and reported proceeds; the client moved them to its own wallet | Classification of the outbound hash, plus the firm's ownership evidence for the receiving address |
| Non-disposal | The row reflects an event the hash shows was not a sale, such as the same asset moved to a new contract in a protocol migration (served as token_migration, house treatment non_taxable; not a grey-area category in the Standard) |
Classification of the hash and the firm's reason for not treating it as a sale |
| Blank basis | Box 1g is blank, often with box 9 checked; the return shows basis from records | The firm's lot records and the classified acquisition hashes behind them |
| Duplicate across brokers | The same disposal appears on two brokers' forms | Both rows side by side, matched on date, asset, and units, with issuer correspondence |
Blank basis is not zero; see Is blank cost basis on Form 1099-DA the same as zero?. When the broker later issues a corrected form, see What should a preparer do when a client gets a corrected Form 1099-DA?.
Building the explanation file
Do it at filing, not after a notice. For every Form 1099-DA row:
- Tie or flag. Match the row (account number, date sold, asset, units, box 1f proceeds) to a Form 8949 line. Rows that tie need nothing more.
- Name the reason. For each row that does not tie, pick one of the four reasons above, or mark it unexplained. Unexplained stays visible.
- Attach the evidence. The classification record for on-chain reasons, lot records for basis, the paired rows and correspondence for duplicates.
- Record what the return shows. Which Form 8949 line, box, and code, or a note that the row was not carried, with the reason.
- Keep it with the return. If a CP2000 comes, the supporting documentation is already assembled; the response itself is the preparer's and client's to write.
Where it is genuinely unsettled
How to present a reported sale that was not a disposition. When a broker reported proceeds for what the firm has confirmed was a self-transfer, and no corrected form arrives before filing, practitioners split:
- Carry the row and adjust it out. Enter the row on Form 8949 as reported and use an adjustment in column (g) with an explanatory code, so the return visibly accounts for the proceeds the IRS has on file. The Form 8949 instructions provide code O for an adjustment "not explained earlier in this column."
- Leave the row off and document it. The row was not a sale, so it does not belong on Form 8949. The firm keeps the classification record, ownership evidence, and issuer correspondence in the file, ready for a response if a notice arrives.
The IRS sources we fetched on October 20, 2026 do not address this case directly. It is firm methodology and preparer judgment. We do not choose.
Worked example
A firm is preparing a client's 2025 return. Two custodial brokers issued 2025 Forms 1099-DA. The firm reconciles before filing.
Broker A, row 1: 0.20000000 BTC, proceeds $19,000. No matching sale in the books. The outbound hash serves as category transfer with needs_review: true and taxable: null, because the receiving address is not verified on-chain as the client's own (Standard GAP-1). The firm confirms the address is the client's hardware wallet and keeps that evidence. Reason: self-transfer treated as a sale. The client requests a corrected form; the firm decides how to present the row.
Broker A, row 2: 3.00000000 ETH, proceeds $9,600, box 1g blank, box 9 checked. The units were deposited from self-custody. The firm's lot records supply basis, and the deposit and original acquisition hashes are classified to tie each lot to its history. Reason: blank basis. The row is carried on Form 8949 with basis from records.
Broker B, row 1: 25.00000000 SOL, proceeds $3,750. Broker A's form shows the same sale as its row 4: same date, asset, and units. The client placed the trade through Broker B's app, which uses Broker A as its custodian. Reason: duplicate across brokers. The firm carries one disposal, keeps both rows side by side, and contacts both issuers.
Broker A, row 3: 1.50000000 ETH, proceeds $4,800. Ties to the books. Nothing to document.
If a CP2000 arrives for this year, the firm already has a reason and evidence for every row that did not tie. This example is illustrative, not advice.
How CryptoTaxEdge fits
Classification is a hash in, a record out. POST https://app.cryptotaxedge.com/v1/classify with { "chain", "hash" }. One category, one treatment from the closed enum (disposal, income, non_taxable, expense, needs_review), confidence 0 to 100 as a routing signal, needs_review: true and taxable: null when a treatment cannot be honestly asserted. Confidence is not an accuracy percentage.
In a mismatch file, that record is the reason column for rows that turn on what happened on-chain. A one-way transfer whose counterparty is not verified as the client's own wallet serves as category transfer with needs_review and taxable: null (Standard GAP-1); verified self-transfers serve non_taxable. A review-flagged record means a human settles the ownership question and records how; it is never a silent pass. See What does needs_review mean?.
What CryptoTaxEdge does not do on this page
- We do not answer, draft responses to, or predict IRS notices.
- We do not compute basis, gain, or loss, or decide which number is right.
- We do not prepare returns, choose Form 8949 presentation, or decide whether to amend.
- We do not contact issuers or request corrected forms.
- We do not connect to wallets or take custody. Hash in; category, treatment, confidence, and review flag out.
Classify a transaction at https://cryptotaxedge.com/explorer?src=answers (ten a day, no signup).
Frequently asked questions
Does a mismatch mean the return is wrong?
No. The IRS says the difference "may increase or decrease your tax or may not change it at all." A legitimate difference with a documented reason is different from an unexplained one.
Is a CP2000 a bill?
No. Topic 652 says "The CP2000 isn't a bill, it's a proposal to adjust your income, payments, credits, and/or deductions."
How long is there to respond?
Topic 652 says to respond "within 30 days of the date of the notice or 60 days if you live outside the United States for a quick resolution." Follow the response date on the notice itself.
What should the response include?
Topic 652 says to reply with "a signed statement explaining why you disagree" and "any supporting documentation." What to say is the preparer's call; the explanation file is the documentation.
Accounting firm with crypto clients? See the Firm plan.
This is informational only, not tax advice; verify with a qualified tax professional.