Your Form 1099-DA arrives, you open your tax software, and the cost basis in Box 1g is wrong. Maybe it's blank. Maybe it's a number that has nothing to do with what you actually paid. The instinct is to fix it in the software and move on. But the place the IRS expects that correction to appear is Form 8949 — and for the 2025 tax year, Form 8949 changed specifically because of crypto.

Six new checkboxes appeared on it. Three of them, G, H, and I, are for short-term digital asset transactions. Three more, J, K, and L, are for long-term ones. Which one you check decides whether you get to simply write your real basis on the form, or whether you have to copy the broker's wrong number and correct it with an adjustment code. Most guides skip that distinction. It's the whole mechanic.

This is not tax advice. It's a walkthrough of what the current form and its IRS instructions say, with links to the primary documents, so you know what to bring to a professional. For decisions about your own return, talk to one.

Form 8949 now has six boxes that didn't exist before

Open the 2025 Form 8949 and Part I asks you to check exactly one of six boxes. Here is what they say, verbatim:

Part II mirrors it for long-term holdings: D, E, and F for everything else, and J, K, and L for digital assets.

The instructions put the change in the "What's New" section and leave no ambiguity about the old habit: "Use box G, H, or I to report short-term digital asset transactions. Do not use box C to report short-term digital asset transactions." The same sentence appears for the long side — do not use box F, use box L.

That matters beyond tidiness. The box you check routes the totals to a different line of Schedule D: line 1b for box A or G, line 2 for box B or H, line 3 for box C or I, and 8b, 9, and 10 for their long-term counterparts. Put a crypto sale in box C out of habit and the totals land on the wrong line of a schedule the IRS is now matching against broker data.

If you have transactions in more than one category — and if you both traded on an exchange and sold from self-custody, you do — you complete a separate page for each box. One box per page, always.

Which box your sale belongs in

Three questions, in order.

Did you receive a Form 1099-DA for the sale? If not, it goes in box I (short-term) or box L (long-term). That covers DEX swaps, DeFi disposals, peer-to-peer sales, and anything on a platform that doesn't issue the form.

If you did receive one, is Box 2 on that form — "Check if basis reported to IRS" — checked? If yes, your sale goes in box G or J. If it's not checked, box H or K.

Which holding period? A year or less is short-term (G, H, I); longer is long-term (J, K, L). Holding period is decided by Box 1d, the acquisition date, and this is where transferred-in coins get expensive. When the acquisition record is lost, the acquisition date usually goes with it, and long-held coins can surface as short-term. That risk is the phantom gain problem showing up in a second place on the same form.

You don't have to derive all of this yourself. The 1099-DA has a field near the top labeled "Applicable checkbox on Form 8949," and the 1099-DA instructions tell brokers to put a one-letter code there: G for a short-term sale with basis reported, H for short-term with basis not reported, J and K for the long-term equivalents. There is also a code Y, which the instructions describe plainly — use it "if you cannot determine whether the recipient should check box H or box K on Form 8949 because the holding period is unknown."

Read that last one again. Code Y is a broker telling you, on a federal form, that it does not know how long you held the asset. If you see Y, no software can resolve it for you; only your own acquisition records can.

Why so many crypto sales land in H and K

Boxes H and K are the "basis not reported to the IRS" boxes, and for the first 1099-DA seasons most crypto belongs there.

The reason is the covered/noncovered split. Basis reporting is mandatory only for covered securities. Per the 1099-DA instructions, a digital asset is a noncovered security if the broker didn't provide custodial services when it was acquired, if it was acquired before 2026, or if it was transferred in to the broker — among other cases. Brokers may report basis on noncovered assets voluntarily, but they aren't required to, and they signal the status by checking Box 9.

Bought in 2021 and still holding? Acquired before 2026, noncovered. Withdrew to a Ledger and later sent it back to an exchange to sell? Transferred in, noncovered. Earned it in DeFi and moved it to a centralized exchange to cash out? The broker had no custody at acquisition, noncovered. Box 12a on the form even counts the units that were transferred in, and Box 12b gives the transfer-in date, so the form itself marks the rows where the basis story starts somewhere the broker never saw. We covered the mechanics of the blank box in detail in the guide to Box 1g.

Being in box H or K is not a bad outcome. As the next section shows, it's the easier of the two paths.

The asymmetry that decides your paperwork: not reported vs. reported

Here is the part that surprises people. Whether a wrong basis is easy or annoying to fix depends entirely on whether the broker reported it to the IRS.

If basis was not reported (box H, K, or no form at all)

You simply enter the correct basis. The instructions' Worksheet for Basis Adjustments in Column (g) opens with exactly that: "If the basis wasn't reported to the IRS, enter the correct basis in column (e) and enter -0- in column (g) (unless you must make an adjustment for some other reason). You don't need to complete this worksheet."

No adjustment code. No copying a number you disagree with. Column (e) gets your documented basis, and column (g) gets -0-. The rows where your exchange left Box 1g blank are, ironically, the rows with the least paperwork — as long as you can substantiate the figure you write.

If basis was reported and it's wrong (box G or J)

Now you can't just overwrite it. The instructions are explicit: enter "the basis shown on Form 1099-B or Form 1099-DA (or substitute statement) in column (e), even though that basis is incorrect. Correct the error by entering an adjustment in column (g)." You put code B in column (f) to explain why, and you compute the adjustment on the worksheet.

The reason for the ceremony is matching. The IRS already has the broker's number. Your return has to show that same number, then show your correction next to it, so the two documents reconcile line by line instead of silently disagreeing.

The worksheet itself is four lines: the reported basis on line 1, the correct basis on line 2, and then either the excess as a negative number in parentheses (if the correct basis is larger) or as a positive number (if the reported basis is larger). The IRS gives a non-crypto example in the instructions: stock sold for $1,000, correct basis $100, but the broker reported $900 to the IRS. You keep $900 in column (e), enter $800 in column (g), code B in column (f), and end up with a $900 gain in column (h) — the true answer, arrived at without contradicting the broker's paperwork.

A worked example with crypto numbers

Say you sold 2 ETH on a centralized exchange for $9,000. You bought it two years earlier for $4,800 on a different exchange, withdrew it to your own wallet, then sent it back to sell. The 1099-DA arrives showing Box 1f proceeds of $9,000, Box 1g of $0, Box 2 checked, and the 8949 code J. The exchange has told the IRS your basis was zero.

Long-term, basis reported, so this row goes on a Part II page with box J checked. Column (d) is $9,000. Column (e) is $0 — the wrong number, copied faithfully. On the worksheet, line 1 is $0 and line 2 is $4,800; line 2 is larger, so the difference goes on line 3 and into column (g) as ($4,800), a negative number in parentheses. Column (f) gets B. Column (h) is $9,000 − $0 − $4,800 = $4,200.

The gain drops from $9,000 to $4,200 without a single argument about what the exchange should have printed. Note also what changes if Box 2 had not been checked: same $4,800, but written directly into column (e), with -0- in column (g) and no code at all.

What "the correct basis" has to be backed by

Both paths ask you for one thing the form can't give you: a defensible number for what you paid.

That number is a records question, not a software question. The IRS's guidance on what records to keep is the ordinary substantiation rule applied to a new asset class — you keep documents that support what you reported, for as long as they matter to a return. For crypto that usually means exchange statements and trade confirmations, bank records showing the fiat that went in, CSV exports from platforms that may not exist by the time you're asked, and the on-chain trail linking a purchase to the wallet that later did the selling.

The failure mode to avoid is filling column (e) with whatever your tax tool shows without checking where that figure came from. Tools guess when records are missing, and the guess is usually zero. If your software flagged the transaction — Koinly calls it missing purchase history, CoinTracker surfaces it through review-suggested flags — then the number on your screen is a placeholder, not a basis, and copying it onto a federal form doesn't upgrade it.

Finding which rows are placeholders is mechanical work, and it's the part we automated. Run my free scan to see which transfers between your own Ethereum addresses would surface as zero-basis disposals — read-only, no sign-up, with a tx-hash on every flagged line so you can take it to a preparer.

There is a second reconciliation to run before you get to 8949 at all: your software's calculated proceeds against the proceeds printed on the form. CoinTracker's own guidance on a 1099-DA mismatch walks through the usual causes — a missing transaction, a misclassified one, a cost basis method difference — and every one of them changes what belongs in columns (d) and (e).

Three mistakes that will be common in the first 1099-DA season

Using box C or box F for crypto. It's the old muscle memory for "no form received," and the instructions now prohibit it for digital assets. Box I and box L exist for that case.

Aggregating on Schedule D when you have adjustments. Exception 1 in the instructions lets you skip Form 8949 and put totals straight on Schedule D — but only when basis was reported to the IRS and "you don't need to make any adjustments to the basis or type of gain (or loss)." A wrong Box 1g is an adjustment. The moment you need code B, that row is back on Form 8949.

Letting a blank become a zero. The 1099-DA instructions tell brokers to "enter -0- in box 1g only if the digital asset sold actually had a basis of zero." A blank box means basis wasn't reported. A zero means the broker asserts you paid nothing. Software that treats the two identically taxes the entire sale as gain, which is the single most expensive default in crypto tax reporting and the reason the per-wallet basis rules made record hygiene consequential in the first place.

FAQ

Which Form 8949 box do I use if I never received a 1099-DA for a crypto sale?

Box I for a short-term transaction and box L for a long-term one. The instructions specifically direct digital asset transactions away from boxes C and F, which now read "other than digital asset transactions." This is the common case for DEX swaps, DeFi disposals, and any platform that doesn't issue the form.

My 1099-DA shows a cost basis that's too low. Can I just enter the right number on Form 8949?

It depends on Box 2. If the form shows basis was not reported to the IRS — box H or K on Form 8949 — the instructions tell you to enter the correct basis in column (e) and -0- in column (g). If basis was reported to the IRS — box G or J — you enter the broker's incorrect figure in column (e) and correct it with an adjustment in column (g), using code B in column (f). Which figure you can document is a question for your tax professional.

What does code Y in the "Applicable checkbox on Form 8949" field mean?

Per the 1099-DA instructions, a broker uses code Y when it cannot determine whether you should check box H or box K because the holding period is unknown. In practice it means the broker has no reliable acquisition date for the units you sold — typically because they were transferred in. Resolving it requires your own acquisition records, since no downstream tool can recover a date the broker never had.


This is not tax advice, and none of the above substitutes for a qualified tax professional who can look at your actual records.

If you'd rather know which rows will need a code B before the form arrives, Verilot Check reads your Ethereum wallets directly on-chain and shows every transfer between your own addresses that would otherwise surface as a zero-basis disposal, with a tx-hash on every line. Free and read-only — no wallet connection, no sign-up, up to 5 wallets and 500 events per scan, Ethereum mainnet today. Run my free scan.