Why is record-keeping the hardest part of crypto tax?
Educational content, not tax advice. Whether, when and how any transaction is taxed depends entirely on your jurisdiction and your circumstances, and the rules change. Nothing here tells you what you owe or what to report. Take qualified local advice.
The single most common misconception is that tax happens when money reaches a bank account. In many jurisdictions the taxable event is a disposal, and a disposal does not require any fiat currency to be involved.
Where the events come from
Selling for fiat is obviously a disposal. In many systems, so is swapping token A for token B, spending crypto on goods or services, and converting into a stablecoin. Which of these count, and how any gain is computed, varies by jurisdiction — but the structural consequence is universal: your obligations are generated by activity you may not think of as selling.
Work through one ordinary DeFi session. You deposit two tokens into a liquidity pool and receive an LP token. Rewards accrue. You withdraw, swap the rewards, bridge the result to another chain, and pay gas at every step. Depending on the jurisdiction, that sequence may contain several disposals, several acquisitions, and several income events — from something the user experienced as a single decision to provide liquidity.
Why the records are the hard part
Lot identification. Which specific units did you dispose of? First-in-first-out, average cost and specific identification give different answers to the same question, and which methods are permitted or required is jurisdictional.
Valuation. Every leg needs a value in your reporting currency at the time of the transaction — including token-to-token swaps where no fiat appeared anywhere.
Fragmentation. Holdings sit across exchanges, self-custodied addresses and multiple chains. No single institution sees the whole picture, and none of them is obliged to produce the report your particular tax authority wants.
Data mortality. This is the one people learn expensively. When a platform fails, your transaction history fails with it. Customers of the exchanges in Unit 2 could not export their histories once withdrawals stopped — the interface was gone. A cost basis you cannot evidence is a cost basis you may not be able to claim, which can turn a loss into a taxable-looking gain on paper.
Category sprawl. Airdrops, forks, staking and validation rewards, liquidations, wrapping and lending each have their own treatment, and the treatments are not consistent across borders or stable over time.
What good practice actually looks like
It is unglamorous and it is entirely within your control:
- Export continuously, not annually. Pull the complete transaction history from every venue on a schedule — monthly is a sensible habit — because exports have retention limits and platforms disappear.
- Store the exports somewhere that is not the platform. The whole point is surviving the platform.
- Keep an address register. Every address you control, which chain, created when, used for what. It is the document nobody has and everybody eventually needs.
- Record values at the time. Reconstructing a price for an obscure token on a specific historical date is far harder than writing it down when it happened.
- Keep the fee data. Fees affect the computation in most systems and are the first thing lost in a partial export.
The direction of travel
Reporting is becoming automatic. The OECD's Crypto-Asset Reporting Framework and comparable regional measures create obligations for service providers to report customer transaction data to tax authorities, with information exchange beginning in adopting jurisdictions in the second half of this decade.
The practical implication for an individual is worth stating carefully: the authority may receive a version of your history from third parties. That makes your own records the thing you reconcile against a third-party account of your activity — not a substitute for it, and not optional because someone else is now reporting.
Try it now
- Today, export the complete transaction history from every venue and wallet you use, and store it outside those platforms. Note how far back each export actually reaches — several will surprise you.
- Take one DeFi interaction you have made and write out every leg: deposit, receipt of an LP token, reward accrual, withdrawal, swap, bridge, gas. Count the separate events it generated.
- Build the one-page address register: every address you control, its chain, its creation date and its purpose. Keep it with your other records, and never in the same place as any seed.