Overview · Methods · Exports · Events · Records · Advisors · Help
Exports are the source of truth
Nothing you are shown on screen is suitable for filing. What you need is the raw transaction history, and you need it before the year closes.
Exchange dashboards are built for browsing, not for accounting. They are frequently paginated, filtered to a date range, missing the fee column, and they change without notice. Export the data instead, and keep the original file unmodified.
The record types
Trades
Every buy, sell and conversion. Each row should carry a date, a trading pair, a side, a quantity, a price and a fee. This is the core of the calculation and the only record type that is strictly unavoidable.
Deposits and withdrawals
Movement into and out of the venue account. These matter for one reason above all others: they let you tell an internal transfer apart from a real disposal. Without them, a withdrawal looks exactly like a sale.
Staking and reward records
Anything received from staking, interest or yield. These are generally income on the date received, and the value on that date becomes the basis of the tokens.
Interest and lending
Rewards from lending platforms are usually income as well. Some venues report these inconsistently, which is a common reason for a total that does not reconcile at year end.
Income and rewards history
Distribution of tokens through mining pools, faucets, affiliate programs and card rewards. Small individually, and easy to overlook entirely.
Columns worth looking for
Every venue names things differently. The concepts you are looking for are stable even when the labels are not.
| Concept | Labels you may see | Why it matters |
|---|---|---|
| Timestamp | Date, Time, Timestamp, datetime | Determines which tax year an event falls in |
| Side | Side, Type, Direction, Action | Distinguishes a buy from a sell from a transfer |
| Quantity | Amount, Qty, Size, Volume | How much of the base or quote asset moved |
| Price | Price, Rate, Execution price, Average | Per-unit price, sometimes already multiplied out |
| Fee | Fee, Fees, Commission, Trading fee | Belongs in the basis, frequently hidden |
| Asset | Currency, Symbol, Coin, Asset | Which token the row refers to |
| Order id | Order ID, TxID, Trade id, Hash | How you trace one trade across venues |
Confirming a file is complete
Three checks take five minutes and catch most problems.
- Count rows against the venue's own history Open the transaction history page and compare the number of entries for the same period. Exports are routinely truncated without warning.
- Check the date range Confirm the earliest and latest timestamps. A default export that silently covers only the last 90 days is a frequent and expensive surprise.
- Check for cancelled or failed entries Rows exist for orders that never executed. They are harmless if filtered, misleading if not.
Check before you need it. Some venues limit how far back an export reaches, and some retire historical exports entirely after a period. If your records exist only as a file you exported eighteen months ago, they may be all you will ever have.
Files you cannot read
Older exports from some venues are compressed, split across several archives, or in a layout that current documentation no longer describes. A file you cannot open is a file you do not have.
If a file will not parse, the practical order is: try a plain text reader, check whether it is a zip archive containing further files, and look for an alternative export format. Failing all that, contact the venue's support and ask for a transaction statement in a documented format. Keep their reply with the file.
Reconciling across venues
Trades between venues show up twice — once as a withdrawal at the source, once as a deposit at the destination — and the token itself has not moved anywhere in economic terms.
Match the withdrawal row to the deposit row using the timestamp and quantity, then treat the pair as a single internal transfer. Unmatched rows at either end are the interesting ones: something moved that you have not accounted for, and it is worth finding out what.
Keep the original file exactly as it arrived. Corrections applied directly to the raw export destroy the only independent record that the calculation came from somewhere real. Work on copies.
Beyond the account you can see
Not every transaction touches an exchange account you hold today. Several categories of value arrive with no statement at all.
Self-custody wallets
A wallet produces movements that no venue reports. Transfers between your own addresses appear in no account history anywhere. If you have taken tokens off an exchange and worked with them directly, the only record of those movements is one you kept yourself.
Decentralised exchanges
A decentralised exchange has no account in the ordinary sense and no support desk to ask. A swap executed entirely through a contract produces no CSV anywhere. Records for those events come from your own wallet history or a public block explorer, and the format differs from a centralised venue's export enough that it needs separate handling.
Margin and derivatives
Interest charged on a margin position, funding payments on a perpetual contract and settlement differences all change your economic position without appearing as a disposal. Some jurisdictions treat amounts paid to you as income when received. Where that applies, each one needs a value on the payment date, which is another entry in the same log as everything else.
Consolidators
A consolidation service can show positions across venues that have had genuine transactions you never see directly. Treat its balances as a cross-check on your own records, not as a substitute for them.
Bringing it together
Consolidate every venue into one set of records before doing any arithmetic. Calculating per account and adding the totals afterwards makes internal transfers impossible to spot, because the two halves sit in different files and never meet.
Where a price source matters
For events that need a market value on a specific day — staking receipts, airdrops, interest paid to you — you need a price history you can point to. Different sources disagree, sometimes by a noticeable margin on thin tokens. What matters is that you choose one, apply it to every event in the period, and record which one you used.
Keep that reference alongside the figures. A value without a stated source cannot be checked against anything, which defeats the point of keeping it at all.
Next: transfers, staking and other events