How to Report Crypto on Your Taxes: A Step-by-Step Walkthrough
Let me be honest about the framing here. "How to report crypto on your taxes" sounds like a quick how-to, but for anyone who actually traded crypto during the year, it's closer to an archaeological dig. You weren't maintaining a clean ledger the whole time — you were buying, swapping, staking, and occasionally moving coins between wallets. Now it's February and you have to reconstruct a year of that into something the IRS accepts.
Here's the good news: the process is mechanical once you break it down. Six steps, in order, and you get from "crypto transactions scattered across four exchanges" to "numbers on Form 8949." I'll walk through the US process in detail, then cover what differs in the UK, Germany, Canada and Australia at the end.
If you want to sanity-check the math on individual trades as you go, the calculators on this site run locally in your browser — no data upload — and the CSV batch importer will parse your exchange files and bucket each disposal into short-term or long-term automatically.
Step 1: Gather your complete transaction history
This is the step people skip or do incompletely, and it's the one that breaks everything downstream. You need every transaction from every place you touched crypto during the tax year:
- Centralized exchanges (Coinbase, Binance, Kraken, etc.) — export the full transaction history CSV, not just the tax report.
- Self-custody wallets and hardware wallets — export transaction lists from the wallet software or block explorer.
- DeFi protocols (Uniswap, Aave, Lido, etc.) — use a tool like Etherscan or Zerion to export your on-chain activity; a DEX swap is still a taxable disposal of the token you gave up.
- Staking rewards, airdrops, and interest — these are income at receipt, valued on the day received, and that value becomes their cost basis.
If you only pull from Coinbase and forget the Ethereum you swapped on Uniswap, your cost basis for everything downstream will be wrong. Start with a complete list of accounts and check each one off.
Step 2: Calculate your cost basis
Cost basis is what you paid to acquire the coins you're now selling or swapping — purchase price plus fees. When you dispose of coins, the gain is proceeds minus basis minus disposal fees.
The hard part: which coins did you actually sell? If you bought Bitcoin three times at three prices and sold once, which purchase did the sale come from? In the US you can use FIFO (oldest first, the default) or specific identification if you have records identifying each unit. The UK forces Section 104 pooling; Canada uses adjusted cost base averaging. I've written a full breakdown of how cost basis and these methods work with a worked example — it's worth reading before you start matching buys to sells.
Pro tip: do this in a spreadsheet or with software, never in your head. One transposed digit and your entire return is off.
Step 3: Classify as short-term or long-term
In the US, the holding period decides the rate:
- Short-term (held ≤ 12 months): taxed at ordinary income rates, 10%–37%.
- Long-term (held > 12 months): 0%, 15%, or 20% depending on income.
You must report each disposal with its holding period on Form 8949, which has separate sections for short-term and long-term. This is where good dated records pay off — if you can't prove a 12-month hold, the IRS will treat it as short-term and tax it higher.
Step 4: Complete Form 8949
Form 8949 is where every crypto disposal gets its own line. For each transaction you report:
- Description of property (e.g. "0.25 BTC")
- Date acquired
- Date sold or disposed
- Proceeds (sale price)
- Cost basis
- Gain or (loss)
Traders with hundreds of transactions sometimes attach a statement summarizing the detail instead of listing each line — the IRS accepts this if the totals match and you keep the per-transaction detail for your records. Most tax software generates this automatically.
Step 5: Transfer totals to Schedule D
Form 8949 feeds into Schedule D, which rolls up your net short-term and long-term capital gains for the year. Schedule D then flows to Form 1040. If you have capital losses exceeding gains, up to $3,000 can reduce your ordinary income; the rest carries forward to future years indefinitely. I covered the loss mechanics in the tax-loss harvesting guide.
Step 6: Keep your records
Filing is not the finish line — keeping the proof is. Save:
- all exchange CSV exports and wallet transaction histories;
- your cost basis worksheet or the software's report;
- a copy of the filed Form 8949 and Schedule D.
The IRS generally has three years to audit, but if there's a substantial understatement it can be six years, and there's no limit for fraud. Keep the records for at least six years. Cloud storage or an encrypted external drive is fine.
What differs by country
The six-step shape is similar everywhere — gather, basis, classify, report, file, keep records — but the forms and rates differ:
- UK: report on the Self Assessment tax return (SA100). Gains above the £3,000 Annual Exempt Amount are taxed at 18% (basic) or 24% (higher/additional). Same-day and 30-day bed-and-breakfast rules apply before the Section 104 pool.
- Germany: short-term gains (under 365 days) above the €1,000 Freigrenze go on Anlage SO at your income-tax rate. Gains from coins held over a year are exempt. No CGT discount mechanism like the US or Australia.
- Canada: 50% of capital gains are taxable at your marginal rate (66.67% on gains above $250,000 as of 2026). Report on Schedule 3 of your T1. Use adjusted cost base (ACB), not FIFO.
- Australia: report in your income tax return. Hold over 12 months and only 50% of the gain is assessable. Capital losses can only offset capital gains, never salary income.
Common mistakes that cost real money
- Forgetting coin-to-coin swaps. Swapping ETH for an altcoin is a disposal of the ETH. My coin-to-coin tax guide covers this in detail — it's the #1 omitted item.
- Using the wrong basis method inconsistently. Pick FIFO or specific ID at the start of the year and apply it everywhere. Mixing methods mid-year invites an audit adjustment.
- Missing the "what happens if you don't report" risk. Exchanges now file 1099-DA in the US, so the IRS knows you traded. Not reporting is worse than reporting a smaller number than you could have. If you missed a year, the options guide walks through amending.
- Throwing away the records after filing. See step 6.
The honest bottom line
Reporting crypto taxes is tedious, not mysterious. The complexity comes from the volume and messiness of your own transaction history, not from the tax rules themselves. Gather everything, apply one consistent basis method, classify by holding period, and transfer the numbers to the right forms. If you have more than a few dozen trades, use the CSV batch importer or dedicated software — doing it by hand is how errors sneak in. And for material amounts, a crypto-savvy tax professional is worth their fee.
This is general information, not tax advice. Crypto reporting rules are evolving (especially broker reporting in the US). For complex histories or large amounts, work with a qualified tax professional.
FAQ
Do I have to report every single crypto transaction?
In the US, every disposal — sale, swap, or spending of crypto — is a taxable event and must be reported on Form 8949. Purchases and holdings are not reported. For active traders this can mean hundreds of lines, which is why most people use tax software that aggregates exchange CSVs automatically.
What happens if I don't report my crypto gains?
Unreported crypto gains can result in penalties, interest and, in severe cases, criminal charges. Exchanges are now required to report your disposals to the IRS (via Form 1099-DA in the US), so the IRS already has a record of your activity. If you missed a year, the best move is to file an amended return voluntarily before you are contacted.
How do I report crypto if I used multiple exchanges?
Export a CSV from every exchange and wallet you used, then combine them into a single transaction history sorted by date. Calculate cost basis across the combined set using a consistent method (FIFO is the safe default). For dozens of trades, use the CSV batch importer on CryptoTaxCalc or dedicated tax software to avoid manual errors. If you're deciding between free and paid tools, see our side-by-side comparison of CryptoTaxCalc vs Koinly, CoinLedger and CoinTracker.