How Bitcoin is taxed
Bitcoin is treated as property (or a capital asset) in every supported jurisdiction. Selling BTC for fiat, swapping it for another crypto, or spending it to buy goods - all are taxable disposals. Your taxable gain is the difference between what you received and your original cost basis (what you paid).
Taxable events: selling BTC for fiat, swapping BTC for ETH or stablecoins, spending BTC on purchases, receiving BTC as payment for services, Bitcoin mining rewards.
Not taxable: buying BTC with fiat, transferring between your own wallets, simply holding.
Bitcoin cost basis - why it gets complicated
Most people buy Bitcoin over time at different prices. When you sell, which purchase do you match it to? The answer depends on your cost basis method:
- FIFO (First In, First Out): oldest purchases sold first - default method accepted in the US, Canada, Australia, NZ, India, and South Africa.
- Section 104 pooling: UK only - all purchases averaged into a single pool, with same-day and 30-day bed & breakfast rules applied first.
- ACB (Adjusted Cost Base): Canada - running average cost across all purchases, adjusted with each new acquisition.
DYOR.tax applies the correct method for your selected country automatically. No manual configuration required.
Bitcoin wallet scanning - UTXO-level tracking
If you hold Bitcoin outside of exchanges - hardware wallets, software wallets, self-custody - every transaction needs to be tracked. DYOR.tax scans Bitcoin addresses at the UTXO level, reading your complete on-chain history:
- Supports P2PKH (1...), P2SH (3...), Bech32 (bc1q...), and Taproot (bc1p...) addresses
- Detects receives, sends, self-transfers, and mining income
- Up to 5 BTC addresses per report
- Merged with your exchange CSV into one unified report
Cross-source self-transfer detection identifies moves between your own addresses, so they are not counted as taxable disposals.
How to calculate your Bitcoin taxes
If you used an exchange:
- Export account-opening-to-today CSVs from Coinbase, Binance, or Kraken
- Upload to DYOR.tax and select your country
- Get a free preview showing your total gains, losses, and income
If you hold self-custody Bitcoin:
- Add your Bitcoin wallet addresses (up to 5)
- The scanner reads your full transaction history automatically from on-chain data
- Same filing-ready output with trade-by-trade P&L
If you used both:
Upload your CSV and add wallet addresses together. DYOR.tax merges both data sources and detects cross-source self-transfers to avoid double-counting.
Bitcoin taxes by country
- Short-term gains (held 1 year or less): taxed as ordinary income, up to 37%
- Long-term gains (held more than 1 year): 0%, 15%, or 20% depending on income
- Form 8949 + Schedule D for capital gains; Schedule 1 for mining income
- Filing deadline: April 15
- Section 104 pooling - all BTC purchases averaged into a pool
- Same-day rule and 30-day bed & breakfast rule applied before pool
- CGT rates: 18% (basic rate), 24% (higher rate) - updated October 2024
- Annual exempt amount: £3,000 (2024/25 tax year)
- SA108 Cryptoassets on Self Assessment; deadline January 31
- ACB method - running average cost across all purchases
- 50% inclusion rate under current law
- Schedule 3; deadline April 30
- The calculator applies FIFO cost basis
- 50% CGT discount available if BTC was held 12 months or more before disposal
- ATO data matching is active - all exchange and on-chain activity should be reported
- Tax year July 1 - June 30; deadline October 31
- No formal CGT; BTC gains are taxable as income if the asset was acquired with the purpose of disposal
- IRD's view is that most crypto trading is taxable - the non-taxable exception is narrow
- Tax year April 1 - March 31; income reported on IR3
- 30% flat tax on all BTC gains under Section 115BBH
- No loss offset between crypto assets
- Schedule VDA on ITR-2 or ITR-3
- Revenue or capital depending on intention and frequency of trading
- CGT inclusion rate: 40% for individuals
- Annual exclusion: R40,000
Common Bitcoin tax mistakes
- Not reporting small transactions. Every disposal is reportable regardless of size.
- Using rough price estimates. Cost basis must be calculated from your actual trade price, not a round number recalled from memory.
- Missing wallet transfers. Transfers between your own wallets are not taxable, but they must be tracked so they are not misclassified as sales.
- Incomplete history. Prior year purchases directly affect this year's cost basis. Uploading only recent transactions overstates gains.
Related calculators
Coinbase Tax Calculator · Binance Tax Calculator · Kraken Tax Calculator · Ethereum Tax Calculator · Solana Tax Calculator
🇺🇸 US · 🇬🇧 UK · 🇨🇦 Canada · 🇦🇺 Australia