Form 8949 is the tax form where your crypto gains and losses actually live. Everything else — software imports, 1099-DA reconciliation, basis adjustments, wash sale gymnastics — eventually resolves into a row on Form 8949. Get the form right and your return is clean. Get the form wrong and you either overpay or trigger a CP2000 notice when the AUR system matches your return against the 1099s it already has. Here's how to fill it without creating a problem.
What Form 8949 Does
Form 8949 reports every sale or disposition of a capital asset. For crypto, that includes selling for USD, swapping one coin for another, spending crypto on goods or services, and most DeFi dispositions. The form feeds Schedule D, which nets your gains and losses and drops the final number on Form 1040 Line 7.
Form 8949 has two parts:
- Part I — Short-term transactions. Holding period of one year or less.
- Part II — Long-term transactions. Holding period of more than one year.
Each part has three boxes to check. You pick one box per Form 8949 page, so multiple box situations require multiple pages. The boxes are the entire reconciliation system between your return and the 1099s the IRS already has.
The Six Boxes Explained
Short-Term (Part I)
- Box A — Short-term transactions reported on Form 1099-B / 1099-DA with basis reported to the IRS. The exchange sent the IRS both the proceeds and the basis. Your job is to match it or adjust with a code.
- Box B — Short-term transactions reported on Form 1099-B / 1099-DA with basis NOT reported to the IRS. The exchange sent the IRS the proceeds only. You supply the basis.
- Box C — Short-term transactions NOT reported on any 1099. No third-party reporting at all. Peer-to-peer, DeFi, self-custody sales, pre-1099-DA legacy transactions.
Long-Term (Part II)
- Box D — Long-term transactions reported on 1099-B / 1099-DA with basis reported to the IRS.
- Box E — Long-term transactions reported on 1099-B / 1099-DA with basis NOT reported to the IRS.
- Box F — Long-term transactions NOT reported on any 1099.
Every crypto transaction belongs in one of these six buckets. If you had 400 trades across Coinbase, Kraken, and a self-custody wallet, you probably need four or five separate Form 8949 pages — one per box — or a summary statement under the attached-statement rules.
The 1099-DA Transition
Starting with 2025 calendar-year transactions, centralized exchanges are required to issue Form 1099-DA reporting gross proceeds under IRC §6045. Basis reporting phases in for 2026 transactions under §6045A. For 2025 returns filed in 2026, most centralized-exchange transactions will land in Box B or Box E — proceeds reported, basis not. For 2026 transactions, the mix shifts toward Box A and Box D as basis reporting comes online.
Pre-2025 transactions that never hit a 1099 — Binance International, old Gemini ActiveTrader history without 1099, decentralized exchanges, self-custody — continue to land in Box C or Box F. The IRS has no third-party proceeds number to match those against.
Column-by-Column Walkthrough
Each Form 8949 row has eight columns. Filling them correctly is the whole game.
Column (a) — Description of property
The token and quantity. "0.5 BTC" or "1.25 ETH." Enough detail to identify the lot.
Column (b) — Date acquired
The date you took control of the specific lot being sold. For purchased coins, the purchase date. For mined, staked, or airdropped coins, the date of receipt. "Various" is acceptable if the sale draws from many lots, but the IRS prefers specificity.
Column (c) — Date sold or disposed
The date of the sale, swap, or spend. Crypto-to-crypto swaps are dispositions; the date of the swap is the date to enter.
Column (d) — Proceeds
The USD value of what you received on the disposal date, net of fees. For a BTC-for-ETH swap, the proceeds are the USD value of the ETH received. For a sale in USD, the net USD received after exchange fees.
Column (e) — Cost or other basis
USD basis of the asset disposed. For purchased coins, what you paid plus purchase fees. For mined coins, FMV at mining. For airdrops, FMV at receipt. See crypto mining self-employment tax on mined basis and NFT capital gains tax on NFT basis specifics.
Column (f) — Code(s)
The adjustment codes that tell the IRS why your numbers differ from the 1099. The most common crypto codes:
- B — the 1099 basis is wrong. Use when the exchange underreported or overreported basis and you're correcting it in column (g).
- T — type of gain/loss shown on 1099 is incorrect. Use when the exchange mislabeled short-term as long-term or vice versa.
- O — other adjustment explained in a statement. Useful for complex DeFi adjustments.
- W — wash sale loss disallowed. Not applicable to crypto under current law, but will appear in 1099-DA Box 1i starting with 2026 reporting regardless — if an exchange reports it on crypto anyway, you override with no adjustment and keep contemporaneous notes.
- N — nominee. Rare.
- L — non-deductible loss from a transaction between related parties.
Column (g) — Amount of adjustment
The dollar adjustment corresponding to the code(s) in column (f). Signed: positive for additional gain, negative for additional loss.
Column (h) — Gain or loss
(d) − (e) + (g). The signed result. The column that flows to Schedule D.
Worked Example: Reconciling a 2025 Coinbase 1099-DA
Coinbase 1099-DA shows gross proceeds of $48,200 for 2025 and no basis reported (Box B territory). Your own records show you sold 1.2 BTC with a total cost basis of $28,400, held from April 2024 — long-term, so Box E not B. Exchange labeled it all short-term on the 1099-DA because of an account migration. You need:
- One Form 8949 page, Box E (long-term, 1099-DA received, basis not reported).
- Column (f) code T (type of gain/loss incorrect on 1099).
- Column (g) no dollar adjustment needed — the proceeds and basis are correct, only the holding period was wrong.
- Column (h) = $48,200 − $28,400 = $19,800 long-term gain.
By filing with code T, you're explicitly telling the IRS: "Yes, I have the 1099, I'm reporting the same proceeds, and here's why my holding period is different." AUR will match cleanly. Without the code, you'll get a CP2000.
Attached Statement Rules for Large Volumes
If you have more than a handful of trades, Form 8949 entry-by-entry is miserable. The instructions allow a summary entry per Form 8949 page if you:
- Enter a single line with "See attached statement" in column (a), totals in columns (d), (e), and (h), and appropriate box check.
- Attach a detailed statement showing each transaction with the same eight columns.
- Mail the statement with Form 8453 if e-filing, or include with the paper return if filing paper.
For active traders, a single-page summary per box with a 200-page PDF attachment is clean. For casual investors with 20 trades, line-by-line entry is easier.
Cross-Year Issues: Lost Basis and Ghost Trades
Every tax season, we see the same three problems:
Lost basis from a defunct exchange. FTX, Celsius, Voyager, BlockFi. The exchange is gone and your transaction history with it. The IRS default position when you cannot prove basis is zero basis — meaning the entire proceeds are gain. Reconstruct by cross-referencing your bank records (wires to the exchange), your own wallet history, and any annual statements you saved. A defensible reconstructed basis always beats zero.
Ghost trades from the 1099-DA. Exchanges sometimes report wash transactions — a coin moving between accounts you control — as if they were sales. Override with code O and a note.
Wallet-by-wallet under Rev. Proc. 2024-28. Starting in 2025, the IRS requires basis tracking per wallet, not universally pooled. If your software is pooling across wallets, your 2024 basis is probably slightly off and your 2025 basis will be substantially off unless you run the per-wallet conversion.
Common Mistakes That Trigger CP2000 Notices
- Not reporting a transaction that appears on a 1099-DA. AUR catches this within months of filing.
- Putting 1099-DA transactions in Box C/F instead of B/E. The IRS knows there was a 1099 — it sent you the copy.
- Reporting proceeds net of basis instead of gross. Column (d) is gross proceeds. Basis goes in (e).
- Ignoring gas and fees on DeFi swaps. Every swap has a basis-and-proceeds event. Gas on acquisitions goes to basis; gas on dispositions reduces proceeds.
- Missing the "Yes" on the digital asset question on Form 1040. The question is right at the top — the IRS uses it as an enforcement triage filter.
Related Reading
Everything that produces a Form 8949 row eventually lives elsewhere on the return. For tax-loss harvesting that drives losses onto the form, crypto tax loss harvesting. For NFT-specific entries with the collectibles flag, NFT capital gains tax. For mining income basis, crypto mining self-employment tax. For theft-loss entries that bypass Form 8949 entirely, crypto scam write-off and crypto theft loss deduction.
Got a 1099-DA that doesn't match your records?
Bad 1099-DA data is the single most common reason we see CP2000 notices land this year. If the numbers on the form don't match what you actually did — fix it before you file, not after. Call (813) 229-7100 for a free consultation, or book at https://getirshelp.com/contact. Straight answers, no pitch.