Key takeaways
- Every disposal is one line. Sells, crypto-to-crypto trades, and spends each get their own row on Form 8949.
- Six boxes, two holding periods. Short-term uses A, B, C and long-term uses D, E, F, chosen by whether basis was reported to the IRS.
- Codes B and E fix bad basis. When a broker reported the wrong basis, an adjustment code and a column (g) amount correct your gain.
- Your CSV becomes your 8949. Each disposal row maps cleanly to one line, which is why a clean export matters.
If the 1099-DA is what the broker tells the IRS, Form 8949 is what you tell the IRS. It is the detailed ledger of every capital asset you disposed of during the year, and for crypto investors it is usually the longest form in the return, because every swap counts. Understanding its columns and boxes is the difference between a return that matches the IRS records and one that triggers a notice. This guide walks through the form column by column, explains the six boxes, shows how adjustment codes fix a wrong basis, and maps a real exchange CSV onto the lines.
What Form 8949 is for
Form 8949 is titled "Sales and Other Dispositions of Capital Assets." It exists so the IRS can see the detail behind your capital gains, not just a total. Stocks, real estate, and crypto all land here. Because the IRS treats cryptocurrency as property, every time you part with a coin, you have a disposition, and that disposition belongs on this form.
The form feeds Schedule D. Schedule D shows the big-picture netting of all your gains and losses, but it relies entirely on the line-by-line detail you provide here. Think of Form 8949 as the receipts and Schedule D as the summary tape.
What counts as a disposal
A disposal is any event where you give up ownership of a crypto asset. For tax purposes that is broader than just selling for cash.
| Crypto event | On Form 8949? | Why |
|---|---|---|
| Sell crypto for USD | Yes | Disposition of property for cash. |
| Trade one coin for another | Yes | You disposed of the coin you gave up. |
| Spend crypto on goods | Yes | Spending is a disposal at fair market value. |
| Buy crypto with USD | No | Acquisition only. Sets your basis. |
| Hold crypto | No | No disposition has occurred. |
| Move to your own wallet | No | A transfer, not a sale. Basis carries. |
The columns of Form 8949
Each line on Form 8949 has the same set of columns. Filling them correctly is the whole job.
- Column (a) Description. What you sold, such as "0.5 BTC" or "1,000 USDC." Identify the asset and quantity.
- Column (b) Date acquired. When you originally bought or received the specific lot you disposed of.
- Column (c) Date sold or disposed. When the disposal happened.
- Column (d) Proceeds. The fair market value you received, in US dollars, at the moment of disposal.
- Column (e) Cost basis. What you originally paid for that lot, plus acquisition costs.
- Column (f) Adjustment code. A letter code when something needs correcting, such as B for a wrong reported basis.
- Column (g) Adjustment amount. The dollar amount of the correction that goes with the code.
- Column (h) Gain or loss. Proceeds minus basis, plus or minus any adjustment.
The six boxes: A/B/C and D/E/F
Form 8949 is split into two parts. Part I is for short-term dispositions, those you held one year or less, taxed at ordinary rates. Part II is for long-term dispositions, those held more than a year, taxed at the lower long-term rates. Within each part, you choose a box based on whether a broker reported your basis to the IRS.
| Box | Holding period | When to use it |
|---|---|---|
| A | Short-term | Basis was reported to the IRS on a broker form. |
| B | Short-term | Reported on a form, but basis was not reported to the IRS. |
| C | Short-term | Not reported on any broker form. |
| D | Long-term | Basis was reported to the IRS on a broker form. |
| E | Long-term | Reported on a form, but basis was not reported to the IRS. |
| F | Long-term | Not reported on any broker form. |
For many crypto investors, a lot of early activity falls into boxes C and F, because no broker form covered it. As the 1099-DA phases in, more activity will land in boxes A and D, with basis reported. The transferred-in lots, where proceeds were reported but basis was not, are the classic B and E cases.
Adjustment codes: fixing a wrong basis
The most useful columns for crypto filers are (f) and (g), the adjustment code and amount. They exist precisely because broker basis is often wrong or missing for crypto. The two codes that matter most are B and E.
- Code B (short-term): the basis reported to the IRS on the broker form was incorrect. You report the proceeds and the broker basis, enter code B in column (f), and put the dollar correction in column (g) so the gain is right.
- Code E (long-term): the same situation for a long-term disposition.
Without code B, that line would show a $30,000 gain. With the adjustment, it shows the true $8,000. This is the mechanism that protects you from the transferred-in zero-basis problem, but only if you have the records to back up the $22,000.
Hundreds of trades to put on Form 8949?
A busy crypto year can mean thousands of lines. We turn your raw exchange and wallet history into a clean, complete Form 8949 with the right boxes, codes, and basis.
See how it worksHow your exchange CSV maps to Form 8949
Most crypto filers never hand-write Form 8949. Instead, an exported CSV of transactions becomes the source data, and each disposal row maps to one line. Knowing the mapping helps you spot errors before they reach the IRS.
| CSV column | Form 8949 column | Notes |
|---|---|---|
| Asset + amount sold | (a) Description | For example "0.75 ETH." |
| Acquisition date | (b) Date acquired | From the matching buy lot. |
| Disposal date | (c) Date sold | Sets short vs long term. |
| Sale value (USD) | (d) Proceeds | FMV at disposal, net of fees. |
| Cost (USD) | (e) Cost basis | Purchase price plus fees. |
| Gain/loss | (h) Gain or loss | Should equal (d) minus (e). |
The two failure points are usually dates and basis. If your CSV does not track which specific lot you sold, the holding period and basis can be wrong, which is why a clean accounting method (such as consistent first-in-first-out or specific identification) across all wallets matters so much.
Accounting methods and why they matter
When you own several lots of the same coin bought at different prices, the basis you use on a given sale depends on which lot you are treated as selling. The method you choose changes the gain on every line of Form 8949, so it is one of the most consequential decisions behind the form.
- First-in, first-out (FIFO). The oldest lots are sold first. This is the common default and is simple, but in a rising market it tends to surface the lowest-basis, highest-gain coins first.
- Specific identification. You identify exactly which lot you are selling, which lets you choose, for example, a high-basis lot to minimize gain, provided you have the records and meet the identification requirements at the time of sale.
- Other methods. Variations like last-in, first-out or highest-in, first-out are sometimes used, but they require careful, contemporaneous records and consistency.
Whatever method you use, consistency and documentation are what make it defensible. Switching methods mid-stream, or claiming specific identification without records that prove which lot you sold, is how a reasonable position becomes an indefensible one.
Common Form 8949 crypto mistakes
The form is unforgiving at scale, and the same errors recur across thousands of crypto returns.
- Accepting a zero basis. Letting a transferred-in lot show no basis, which inflates the gain. Use a basis adjustment code and your real records.
- Missing crypto-to-crypto trades. Treating only cash-outs as taxable and skipping the swaps, which are just as reportable.
- Wrong holding period. Misdating the acquisition of the specific lot sold, which flips short-term and long-term and changes the rate.
- Double-reporting transfers. Listing a wallet-to-wallet move as a sale because an exchange export labeled it as a withdrawal.
- Inconsistent data across platforms. Pulling clean data from one exchange and ignoring another, leaving gaps the IRS matching can flag.
From Form 8949 to Schedule D
Once every line is entered, you total each box and carry the subtotals to Schedule D. Short-term box totals go to the short-term section, long-term box totals to the long-term section, and Schedule D nets them into your final capital gain or loss. The detail stays on the 8949, the netting happens on Schedule D, and the result lands on your Form 1040.
The 2025/26 Crypto Tax Guide. Built by former Big 4 accountants.
A printable, step-by-step guide and checklist to reconcile every coin and wallet, recover missing cost basis, and file accurately before the deadline.
- Form 8949, Schedule D, and Schedule 1 walkthroughs
- How to handle staking, DeFi, NFTs, and lost coins
- The $0-basis 1099-DA trap (and how to avoid it)
- FBAR, Form 8938, and foreign exchange reporting