Overview · Methods · Exports · Events · Records · Advisors · Help
Not a disposal
If you still control the asset and nothing changed hands, no gain is realised. The basis simply moves with the tokens.
Moving tokens from an exchange to a wallet you control, between two of your own wallets, or between two of your own exchange accounts is not a taxable event. The quantity is unchanged and the basis per unit is unchanged.
Why it still needs care
Because an export will not tell you that. A withdrawal row and a deposit row look like two separate transactions, and a naive calculation treats them as a disposal and an acquisition. The result is a phantom gain, and a phantom basis that makes the position harder to reason about afterwards.
Three things identify a genuine internal transfer:
- The quantity withdrawn equals the quantity deposited, within rounding.
- The timestamps are close enough to be the same transfer.
- No third party appears anywhere in the path.
Generally income on receipt
Staking rewards
Tokens received from staking are generally treated as income at the market value on the date received. That value becomes the basis of those tokens, so a later sale is measured against it rather than against zero.
The awkward part is timing. Rewards arrive on a schedule that has nothing to do with your tax year, sometimes daily, and are frequently auto-compounded without a record reaching your statement. If your exchange does not report them, the only reliable source is your own log.
Airdrops
Tokens distributed to your address are generally income when you gain the ability to sell them, which is usually but not always the moment of receipt. Tokens you cannot yet access are generally not income at that point.
Record the date and the value at the moment control actually passed to you, not the date of the announcement.
Interest, lending and yield
Rewards from lending platforms follow the same pattern as staking: income at receipt, value at receipt becomes the basis of the tokens. Some platforms pay in their own token, which raises a second question — the value of that token on the day it was paid.
Cases that need real care
| Event | General treatment | Where it usually goes wrong |
|---|---|---|
| Swap one token for another | Disposal of the token sold | Counted as no taxable event at all |
| Wrapping or unwrapping | Generally not a disposal | Recorded as a sell and a buy |
| Adding to a liquidity pool | Generally a disposal of the tokens contributed | Assumed to be non-taxable |
| Removing from a liquidity pool | Disposal of what you withdraw | Basis never established for the pool token |
| Fee-on-transfer token | Quantity actually received | Using the quantity sent |
| Token migration or rename | Generally continuity of basis | Treated as a disposal |
| Spending tokens on goods | Disposal at the value received | Ignored because no cash left the account |
Wrapped and migrated tokens
Converting a token into a wrapped representation of itself, or moving to a renamed contract, is generally a continuity event rather than a disposal — you hold the same underlying claim before and after. The tell is that the quantity and the economic claim are unchanged.
Where a bridge or a genuinely different asset is involved, that reasoning no longer holds and it needs its own analysis.
Liquidity pools
Contributing to a pool is generally treated as disposing of the tokens you contributed and acquiring a different asset in return. That means a basis should be established for the pool token at the moment you contribute.
When you later withdraw, you dispose of the pool token. If your records never captured what that token was worth when you received it, the withdrawal cannot be calculated properly, and no tool can recover a number you did not capture.
Timing is the whole game. Every one of these events needs a value at a specific moment. Recording today's price is not a substitute for the price on the day you received the tokens, and no later correction is possible.
A practical filter
When you sit down with a year of exports, sort every row into one of three buckets:
- Acquisition — you gained tokens and paid something for them.
- Disposal — you gave up tokens and received something.
- Internal movement — nothing changed hands economically.
Everything else is income, and income is a fourth bucket with its own basis rule. Getting these four right is more of the work than choosing a method is.
Next: keeping records that hold up