How to Access and Export Your Trade Data

The Coinbase Pro interface changed its name to Advanced Trade a while back, but the export process for your transaction history is largely the same. You can pull your data directly from the website or through the API. Most people use the web interface because it takes about three minutes, but there are quirks you should know about before you try it. Log in to the platform, go to your account, and look for the "Export" option. You'll select a date range and choose CSV format. The file typically includes columns for transaction type, amount, price, fees, and timestamps. Standard exports usually generate within 30 seconds for accounts with fewer than 500 transactions. If you have more, it can take up to five minutes, and occasionally the request times out entirely around the 500-transaction mark. I hit this exact wall last year when I was reconciling a tax year with roughly 800 trades. The standard export returned a truncated file missing my last two months of activity. The workaround was to split the date range into two separate exports—one covering January through June and another covering July through December. It added ten minutes to the process but gave me the complete dataset without any gaps. That's worth remembering if you're dealing with a high-volume account.

What the Export Actually Contains

The CSV file isn't just buy and sell records. It includes deposits, withdrawals, staking rewards, and conversions. Each row has a transaction ID, the asset involved, the quantity, the fair market value at the time of the transaction, and the fee charged. The fee column is important because it affects your cost basis calculation, and the platform rounds fees to six decimal places, which matters when you're working with small amounts of assets like XRP or DOGE where per-unit fees are fractions of a cent. One thing most people miss is that the export does not include a clear "cost basis" column. You have to calculate that yourself or feed the raw data into tax software. The platform reports your gross proceeds and fees, but it's up to you to match buys with sells using FIFO or another method. This is where the data gets tricky. If you transferred assets between your Coinbase Pro account and a personal wallet in between trades, those transfers appear as separate rows with no direct link to the corresponding buy or sell. You have to trace them manually.

Using the API Instead

For accounts with significant volume, the API gives you more control. You can write a script to pull transactions in paginated batches using the orders endpoint and the trades endpoint. Each page returns up to 100 records, so you'll need to handle pagination loops. A simple Python script using the requests library can download your entire history in under two minutes even with a few thousand transactions. The API also gives you access to fields the web export doesn't include, like the product ID in machine-readable format and the order ID for each trade. This is useful if you need to cross-reference a specific trade with your order book. The trade ID alone isn't always enough because the same product can have different order IDs for fills at different prices within the same transaction window.

Get the Full Details

How to Download Coinbase Pro Transaction History for Taxes
How to Download Coinbase Pro Transaction History for Taxes

Common Pitfalls

There are a few things that will bite you if you aren't paying attention. The date range selector on the web interface defaults to the last 90 days. If you're pulling historical data for a multi-year period, you need to manually enter the start and end dates. Some browsers cache the default range and you might not notice you're only getting partial data until you're done. Another issue is that the CSV encoding uses UTF-8 with BOM, which Excel sometimes struggles with on Windows. You'll see garbled characters in the first row unless you open the file through the "Open" dialog and specify UTF-8 encoding, or you import it using Power Query. This adds maybe two minutes to your workflow but prevents hours of confusion later. Timestamps are in UTC, not your local timezone. If you live in the US and your trades happened during evening hours, the timestamp will show the next calendar day in UTC. This matters for tax reporting because the IRS uses the date of the transaction as your local date, not the UTC date. A trade executed at 11 PM EST on December 31st will show as January 1st in the export, but for tax purposes it belongs to December 31st.

When Exporting Doesn't Work

If your account has been inactive for several years, the export function may silently fail and return a zero-byte file. I encountered this with an old account that had been dormant since 2021. The interface appeared to process the request normally, but the downloaded file was empty. In that case, the only option is to use the API with explicit error handling, or contact support directly. Support responses typically take 24 to 72 hours, and they'll provide a complete PDF statement rather than a CSV. The PDF is harder to work with programmatically but contains all the same data. Also, if you connected a third-party trading bot or used a script to place orders, those trades still show up in your history, but they won't have any special marker indicating they were bot-generated. Every trade looks identical regardless of how it was executed. This means you can't separate manual trades from automated ones in the export, which complicates audit trails if you're tracking both for business purposes. The export feature works reliably for the vast majority of users. Just make sure you verify the row count against your expected number of transactions before you assume the file is complete, and always keep the original CSV rather than relying on your browser's download history.