Free · Private · No sign-up

Check your crypto tax form against your own records

Your exchange sends the IRS a Form 1099-DA listing your crypto sales. This free tool lines it up with your records and shows, in plain English, where the numbers don't match — before you file.

  • 🔒 Runs in your browser — nothing is uploaded
  • 📄 Reads PDF or CSV
  • 🏛️ Explanations cite IRS sources

How it works

  1. 1

    Add your 1099-DA

    The PDF or CSV your exchange (e.g. Coinbase, Kraken) gave you.

  2. 2

    Add your records

    A CSV of your own sales, or a Form 8949 export from tax software.

  3. 3

    Review results

    See each sale matched, with what each difference means and what to do next.

1099-DA checker

🔒 Everything runs in your browser. No file is uploaded, and nothing leaves your device. PDFs are read with a copy of pdf.js stored on this site (no CDN).

1

Upload your 1099-DA (PDF or CSV)

2

Add your own records (CSV)

What should my CSV look like?

One row per sale with these column headers (any capitalization): asset, date_sold, units, proceeds, basis. Basis may be blank. Optional: date_acquired, term, noncovered. Rows are matched on asset + sale date + units. Most crypto tax tools can export a Form 8949 CSV you can adapt.

asset,date_sold,units,proceeds,basis
BTC,2026-03-02,0.1,6000,5000
3

Review results

What the results mean

MATCH

Your form and your records agree (within the tolerance you set). Next: nothing to fix for this row.

BASIS_BLANK_ON_1099DA

The form shows no cost basis. That's normal for many sales (see covered vs noncovered); it does not mean your basis is $0. Next: use the basis from your own records on Form 8949.

PROCEEDS_DIFF

The sale amount differs. The number shown is form minus your records. Fees and timing are common causes. Next: check the trade in your exchange history; if the form is wrong, ask the broker about a corrected form.

BASIS_DIFF

Cost basis differs (form minus your records). Per the IRS, any amount in box 1g, even 0, was reported as basis (Form 1099-DA). Next: confirm your purchase records; see the Form 8949 instructions for reporting an adjustment.

ONLY_ON_1099DA

A sale is on the form but not in your records. Next: find it in your exchange history and add it — the IRS got a copy of this form.

ONLY_IN_YOUR_RECORDS

You have a sale the form doesn't list — e.g. a different exchange, a self-custody wallet, or a date that shifted (see the Kraken note below). Next: you still report it; check the date and which account it came from.

UNITS_DIFF

(Asset totals only) The total quantity sold differs. Next: look for a missing or split sale.

Kraken and year-end dates: Kraken reports transaction dates in UTC (Kraken help). UTC is 5 to 10 hours ahead of U.S. time, so a trade late on December 31 your time can show as January 1, or land on next year's form. Kraken says this is a timing difference, not an error. If your records use local time, expect a few near-midnight dates to differ by a day.

Why basis may be blank: for 2025 sales brokers weren't required to report basis (2025 Instructions for Form 1099-DA). For sales after 2025, basis is required only for covered securities (2026 Instructions).

New to all this?

Read our plain-English guide to taxable events, cost basis, and what the 1099-DA means for you.

Start here