How to export your Coinbase history
- 1
Sign in on the Coinbase website
Use a desktop browser if you can. The statements page is easier to use there than in the mobile app, and the CSV downloads straight to your computer.
- 2
Open the Statements page
Select your profile icon, then Settings. Look for a Statements (or “Reports”) entry in the settings menu. Coinbase moves this menu from time to time, so if you can’t see it, search the Coinbase Help Centre for “statements”.
- 3
Choose a custom statement covering everything
In the custom statement area, set Asset to all assets, Transaction type to all types and the date range to cover every year you held crypto, not just the current tax year. Older purchases are needed to work out your cost basis.
- 4
Pick CSV and generate
Choose CSV as the format (not PDF or HTML) and select Generate. Larger accounts can take a little while to process.
- 5
Save the file and leave it unchanged
Save the CSV somewhere you can find it. Don’t open and re-save it in a spreadsheet first, because that can change dates and number formats. Then drop it into the crypto tax calculator.
We couldn’t confirm these steps on a current official Coinbase help page, so they’re based on secondary sources. Check them against the current app; if a menu has moved, look for the full transaction history export. Wrong or out of date? Tell us at errors@cryptotaxowl.com.
What the columns mean
Column headers as documented by community and tax-tool documentation for the current Coinbase transaction history CSV, and checked against the parser’s test file. Coinbase can rename or add columns without notice, so compare these with the header row in your own file.
| Column | What it means |
|---|---|
ID | Coinbase’s own reference for the transaction. Used to spot duplicates if you import overlapping files. |
Timestamp | Date and time of the transaction, normally in UTC. |
Transaction Type | What happened, for example Buy, Sell, Send, Receive, Convert or a rewards or staking income type. |
Asset | The crypto asset the row is about, such as BTC or ETH. |
Quantity Transacted | How many units of the asset moved in this row. |
Price Currency | The fiat currency used for the price and value columns, such as USD, GBP or EUR. |
Price at Transaction | Price of one unit of the asset in the price currency at the time of the transaction. |
Subtotal | Value of the transaction before fees, in the price currency. |
Total (inclusive of fees and/or spread) | Value including Coinbase’s fees and spread. For a buy this is what you paid; for a sell it is what you received. |
Fees and/or Spread | The fee and spread Coinbase charged, in the price currency. Treated as an allowable cost of the trade. |
Notes | Free-text description. For Convert rows it names the asset you received; for sends it may include the destination. |
Quirks to know
- Lines before the header. The file starts with a few title and account lines before the real column header row. You don’t need to delete them: CryptoTaxOwl searches the first 20 lines for the header. If you have already removed them, the file is still recognised.
- Convert rows are one row, not two. A
Convertfrom one crypto asset to another appears as a single row for the asset you gave up. The asset and amount you received are written in theNotestext (along the lines of “Converted 0.5 ETH to 1,000 USDC”). CryptoTaxOwl reads both sides from the note, so a convert becomes a crypto-to-crypto trade. - Fiat values are already there. Every row has a price and a value in your price currency, so you rarely see a missing-price issue for Coinbase rows.
- Sends and receives are transfers, not sales. A
Sendto a wallet you own is not a disposal, but the file can’t tell whether the destination was yours. You confirm that during transfer matching. - Rewards and staking rows appear with their own transaction types and are treated as income at the value shown, unless your country setting says otherwise.
How CryptoTaxOwl reads this file
When you drop the CSV into the workspace, it is read in your browser. Nothing is uploaded, and CryptoTaxOwl never asks for API keys, recovery phrases or passwords.
- The format is detected from the set of column headers (a header fingerprint), after skipping the lines above the header.
- Each row is mapped to a normalised transaction: buys and sells against fiat, converts as crypto-to-crypto trades, sends and receives as transfers, and rewards as income.
- Values come from the file first. The
Subtotal,TotalandFees and/or Spreadcolumns are used before any price dataset, as described in how CryptoTaxOwl works. - A
Transaction Typethe parser doesn’t know is never silently treated as taxable or non-taxable. It becomes an “Unknown type” issue that you resolve. - Sends to your own wallets need matching with the deposit on the other side. See crypto transfers between your own wallets.
Known issues and gaps
- Crypto that arrived from elsewhere. If you received crypto from another platform, the Coinbase file shows a
Receivewith no purchase behind it. That creates a missing cost basis issue until you import the other platform’s file, for example your Kraken ledger export or Binance transaction history. - Coinbase’s separate products. The self-custody wallet app and products such as derivatives or the business account have their own histories. Check that the statement you downloaded covers the account you actually traded on.
- Derivatives and margin. Rows that look like futures, perpetuals or margin activity are flagged as unsupported and excluded from the calculation by default. You can include them, with a warning.
If your file isn’t recognised
Coinbase changes its export from time to time. If the workspace doesn’t recognise your file, use the column mapper that appears automatically: pick which column holds the date, type, asset, amount and value, and save the mapping for next time. You can also turn the file into CryptoTaxOwl’s template format first with the crypto CSV converter. Make sure you exported CSV rather than PDF, because PDF statements can’t be imported.
Coinbase export: frequently asked questions
Does the Coinbase statement include my self-custody Coinbase wallet app?
No. The statement covers your Coinbase account. The separate self-custody wallet app keeps assets on the blockchain under your own keys, so its activity doesn’t appear in the account statement. Add that activity separately, for example through the column mapper or the CSV converter.
How far back can I export?
The custom statement lets you choose a date range. Set it to start before your first purchase so that every cost basis is included. If the date picker won’t go back far enough, generate several statements for consecutive periods and import them all; overlapping rows are flagged as duplicates rather than counted twice.
Do I need Coinbase’s gain/loss report as well?
No. CryptoTaxOwl works from the transaction history and calculates gains with your country’s rules, such as the UK pooling rules or US per-wallet lots. You can compare the two if you like.
Why does a Convert show only one asset?
Coinbase writes a convert as one row for the asset you gave up and puts the asset you received in the Notes column. CryptoTaxOwl reads the note to build both sides of the trade. If a note can’t be read, the row is shown as an issue for you to complete.
Is it safe to open the file in a spreadsheet first?
Looking is fine, but avoid saving it from a spreadsheet. Spreadsheets can reformat dates and long numbers. If you have already done this, the importer’s date and decimal settings in the column mapper help you recover.