How to Report Crypto Taxes
To report crypto taxes, export the complete transaction history from every venue and wallet, identify every disposal including swaps between assets, and calculate a gain or loss for each using a consistent cost-basis method. This is general information, not tax advice.
The difficulty with crypto tax is volume rather than complexity. The rules are broadly the same as for other assets; what differs is that ordinary activity generates far more taxable events than most people expect, and almost none of them involve withdrawing money.
This page is general information about the reporting process, not tax advice. Rules differ by jurisdiction and change; a qualified professional in your country is the appropriate source for what applies to you.
Before you start
A complete transaction history from every venue and wallet you have used. Not just the main exchange. Old accounts, closed platforms, on-chain transfers.
An understanding that swapping one asset for another is usually a disposal. No ordinary currency changes hands and a gain or loss is typically still realised.
Records kept as you go, because reconstructing years of activity is the expensive part. The reporting is arithmetic; the archaeology is the work.
The steps
1. Export everything from every venue
Full transaction history in a machine-readable format. Platforms close and lose their export function, so an export you already hold is worth considerably more than one you plan to make.
2. Identify every disposal
Selling for ordinary currency, swapping one asset for another, and using an asset to pay for something are typically all disposals. The second one produces the majority of the events.
3. Find the cost basis for each
What you paid, in your own currency, at the time of acquisition. For assets acquired by swap, the basis is the value at the moment of that swap.
4. Pick one cost-basis method and keep it
Which units are treated as sold when you hold several purchases at different prices. Your jurisdiction may prescribe it; where there is a choice, one method applied consistently is the requirement.
5. Treat rewards and airdrops separately
Staking rewards, mining proceeds and airdrops are frequently income at the value when received — and that value then becomes the cost basis for a later disposal.
6. Convert everything to your own currency
Using the rate on the date of each event, not today’s. A pair traded against another crypto asset still has to be expressed in the currency you report in.
7. Start recording as you go
Date, venue, assets in and out, and the value in your currency. A few seconds per transaction, and it removes the entire reconstruction problem permanently.
How to tell it worked
Exports exist from 100 percent of the venues and wallets you have used.
Every swap is treated as a disposal, not only sales for ordinary currency.
1 cost-basis method was applied throughout, with no switching between assets.
And rewards are recorded at their value on the date received, separately from disposals.
Why the event count is the problem
Because swapping is the normal way to move between positions. Somebody who never withdrew a single unit of ordinary currency can still have generated hundreds of disposals in a year.
And because valuation is required at each one. Each swap needs a value in your reporting currency at that moment, which on an obscure pair is a genuine research task rather than a lookup.
Where the records usually break
Closed platforms. An exchange that no longer exists cannot produce a history, and the transactions still happened.
Wallet-to-wallet transfers. Moving your own assets between your own wallets is typically not a disposal, but it looks identical on-chain to sending them to somebody else — so the records have to distinguish them.
And very early activity. Small amounts from years ago, on platforms nobody remembers using, frequently with no export available. That is exactly why the habit of recording as you go is worth starting today rather than at the point it becomes urgent.
The minimum record to keep from today
Date and time, venue, asset out, amount out, asset in, amount in, and the value of the disposal in your reporting currency. Seven fields, one row per transaction.
A spreadsheet is enough until the volume makes it tedious, at which point a dedicated tool importing exchange exports does the same job faster.
Add a column for the transaction type. Trade, transfer between your own wallets, reward, or purchase with ordinary currency — because the four are treated differently and the distinction is very hard to recover later.
Keep the raw exports as well as the spreadsheet. The summary is what you report from; the export is the evidence behind it, and the platform it came from may not exist when somebody asks.
The original data
Of the 24,971 unique videos in research/search-study-corpus.jsonl, 8 mention crypto tax in the
title, at a median of 34,984 views across 8 channels, and 62% of those titles are instruction-shaped.
Crypto generally appears in 217 instruction-shaped titles at 30,027 and tax broadly in 89 at 20,778. The
counts come from site/corpus_count.py.
8 videos at a 34,984 median. A large audience per video for very little coverage, and almost none of it addresses the swap-as-disposal point, which is the single thing that most changes how many events a person actually has to report.
The answer to the question on that chart is that withdrawal is not what creates the event. A swap between two assets is typically a disposal of the first one — so a year of active trading can produce substantial reportable activity with no money ever leaving the ecosystem.
When it fails
The failure is reconstructing several years at once, and it costs far more than the tax does. Nothing was recorded, three platforms were used, one has closed, and the wallet transfers cannot be distinguished from disposals without checking each one. What would have been seconds per transaction becomes weeks of work with gaps in it — and gaps have to be resolved conservatively, which frequently means reporting a higher figure than the real one because the basis cannot be evidenced.
The second failure is treating swaps as non-events. They are usually disposals.
A third is exporting only the main venue. The others still happened.
A fourth is switching cost-basis methods. Consistency is the requirement.
A fifth is omitting rewards. They are frequently income when received.
And a sixth is converting at today’s rate. Each event uses the rate on its own date.
Related
Crypto tax covers the treatment in more detail. Capital gains tax is the general mechanism a disposal runs through. And taxes on trading covers the equivalent questions for other instruments.
The swap is the one that catches people. Exchanging one coin for another feels like moving between positions rather than selling anything, and in most jurisdictions it is a disposal with a gain or loss attached — which means a year of active trading can produce hundreds of taxable events without a single withdrawal.
— Michael Whitman
This page is educational, not financial advice. Test every idea on your own charts before risking money.