Exchange CSV vs wallet history
Reconcile exchange exports, wallet history, on-chain records, and your own labels.
Enter your email to receive the free PDF checklist.
Read our Privacy Policy. For subscriber questions or corrections, use the Contact & Corrections page.
Bitcoin Tax Software
If you bought Bitcoin on an exchange, moved some into self-custody, and now need to organize records, your history probably does not live in one place. Part is in an exchange account, part in a wallet, part visible on-chain, and part only makes sense because of labels and notes you kept. So the practical goal is not "download one file" - it is to assemble a complete export set across every source, in a form software or a professional can actually use.
If you bought Bitcoin on an exchange, moved some into self-custody, and now need to organize records, your history probably does not live in one place. Part is in an exchange account, part in a wallet, part visible on-chain, and part only makes sense because of labels and notes you kept. So the practical goal is not "download one file" - it is to assemble a complete export set across every source, in a form software or a professional can actually use.
This page tells you how to do that, source-agnostically, and gives you a checklist to confirm the set is complete. The core distinction still holds - exports preserve facts; they do not decide tax treatment - and this page is educational only, not tax, legal, or financial advice; rules differ by jurisdiction and change over time. For the scope of the lane, read the Bitcoin tax disclaimer; for the map, start at the hub.
Work through these in order. Each step protects the one after it.
That is the export job. It does not decide treatment - it hands software or a professional a complete, coherent set of facts to work from, which is the difference between a review that goes smoothly and one that stalls on missing data.
Before you rely on a software import, check the set against these prompts. Each "no" or "unsure" is where to look before trusting any output:
A set that passes these prompts is not guaranteed to produce a correct tax result - that depends on facts and rules beyond this page - but it removes the most common reasons software output is wrong before you ever open the software.
A transaction-history export is a factual record from a source you used - an exchange, wallet, account, or on-chain lookup. It may show dates, times, amounts, transaction IDs, fees, values, deposits, withdrawals, buys, or sells, depending on what the source tracks. What it does not do is decide treatment, tell you what to file, prove why a wallet movement happened, know every wallet you control, or automatically connect all activity across sources. It is an input, not a verdict. (For the general field-by-field record guide, see Bitcoin tax records.)
A single exchange export shows what happened inside that exchange - not what happened after Bitcoin left. Wallet history shows later movements - not the original purchase details. A transaction ID shows that Bitcoin moved on-chain - not why, or who controlled both sides. So one source can be accurate and still incomplete, which is exactly why the assembly steps above gather several sources and keep both sides of each movement. The instinct to find "the one file that solves everything" is understandable, and after self-custody that file usually does not exist.
(For why these sources disagree on timestamps, fees, and values - and how to line them up - see exchange CSV vs wallet history.)
The common pattern: you buy on an exchange, later withdraw to your own wallet; the exchange records an outgoing withdrawal, the wallet records an incoming transaction, and the blockchain records movement between addresses - three views of one story. As part of assembling a complete set, keep those three views together for each movement: the original acquisition record, the withdrawal record, the receiving-wallet record, the transaction ID, date and time, amount, fee, a receiving-wallet label, a note explaining the movement, and any later movement of the same coins. (For the movement boundary itself, see wallet transfer vs taxable event; for the cost-basis input, see Bitcoin cost basis basics.)
Software can organize and calculate from records; it cannot reliably replace records you never gathered. Import one exchange but not another and it may miss acquisition history; import a wallet without its sending exchange and it sees a receipt with no purchase context; skip labels and it needs more context before a movement can be reviewed confidently. Different tools handle data, warnings, and imports differently - the durable principle is that output quality follows input quality. Export preparation is the step that makes the records usable. (For what a tool can and cannot do, see what tax software can and cannot do; for how it goes wrong, see Bitcoin tax software limitations.)
| Record source | What it may help preserve | What it does not decide |
|---|---|---|
| Exchange transaction history | Buys, sells, deposits, withdrawals, fees, source-shown values, timestamps, reference IDs | What happened after Bitcoin left, or how any event is treated |
| Exchange statements or confirmations | Source records for account activity and acquisitions | Wallet context after withdrawal |
| Wallet history | Incoming/outgoing activity, transaction IDs, amounts, fees, timestamps, wallet labels | Original exchange purchase details or treatment |
| On-chain transaction data | Movement, addresses, confirmation time, transaction ID, fees | Purpose, ownership context, cost-basis continuity, or treatment |
| Personal labels and notes | Why a movement happened, which wallet was yours, how records connect | Tax treatment or filing position |
| Professional review materials | Organized facts for qualified interpretation | A substitute for the underlying records |
Each source preserves part of the factual history; none decides tax treatment.
Some gaps are simple export-preparation problems - a missing file, a skipped wallet, an unlabeled transfer, an unconnected withdrawal. Others are more serious: old exchange access is lost, source records are missing, wallet and exchange history do not line up, software output looks wrong and the cause is unclear, coins were received from another person or organization, outgoing movements may need treatment review, acquisition records cannot be connected to later movements, or the amount makes guessing irresponsible. At that point the question is no longer "which export should I download?" - it is a facts-and-review question. (See when to use a tax professional.)
Before you download anything, list every place your Bitcoin history may live and answer: which exchanges did I use, which wallets did I use, did I make recurring buys, did I withdraw to self-custody, did I move coins between wallets, did I deposit any back to an exchange, did I send or receive Bitcoin from another person, which movements have transaction IDs, which have labels, and which records are missing? Then gather the source records before you try to interpret them. Clean exports do not make the tax question disappear - they make the next step far less fragile.
What is a Bitcoin transaction-history export? A factual record from a source you used - an exchange, wallet, statement, or on-chain lookup - showing dates, times, amounts, fees, transaction IDs, source-shown values, deposits, withdrawals, or buys. It preserves facts; it does not decide treatment.
Is one exchange export enough for Bitcoin tax records? Usually not for a self-custody holder. An exchange export shows activity inside that exchange, not what happened after Bitcoin left. Wallets, other exchanges, and on-chain movements may need gathering too.
Do I need wallet history if I already have exchange records? If Bitcoin moved into self-custody, yes - wallet history explains later movements. The exchange may show the withdrawal; the wallet shows the receipt and later movement. A complete record often needs both.
Does a transaction ID show why Bitcoin moved? No. It can show that an on-chain transaction happened and help identify time, amount, addresses, and fees. It does not prove purpose, ownership, treatment, or cost-basis continuity.
Can tax software fix missing exports? It can organize and calculate from records it receives; it cannot replace records you never gathered. A missing exchange, wallet, label, or acquisition record means the output needs more context before it can be reviewed.
What should I gather before using tax software? Exchange trade, deposit, withdrawal, and fee history; wallet history; on-chain transaction IDs; statements where available; acquisition records; labels; notes; and records connecting withdrawals to receipts - covering every source and every year.
When should incomplete records go to a qualified professional? When source records are missing, old exchange access is lost, wallet and exchange history do not line up, output looks wrong, coins were received from another party, or treatment depends on facts this page cannot evaluate.