Coinbase CSV export format
parser liveThis is the format reference for Coinbase transaction-history CSV — where the file comes from, what each column means, and the export quirks that matter. Our parser reads the layout(s) below and converts it in your browser.
Layout evidence: Gen-2 and gen-3 headers verified via BittyTax declarations and issue #390 (real Sep-2024 header) plus btctax-adapters’ documented schema — see research/parser-fixture-validation-2026-10.md.
How to export the file
- Coinbase → Statements (or Documents) → Custom report → Transaction history.
- Select CSV, all assets, and the date range for your tax year.
- Download — the file may start with a few metadata lines before the header row; that is normal.
Column reference
Transaction history — gen-3 (≈2024+)
Adds an ID column and renames "Spot Price …" to "Price …"; real files may prepend preamble lines (blank, "Transactions", "User,<uuid>") and can carry Sender/Recipient Address trailing columns.
| Column | What it means |
|---|---|
ID | Row id (new in gen-3). |
Timestamp | Event time — ISO shape; a "YYYY-MM-DD HH:mm:ss UTC" variant is documented. |
Transaction Type | Event type: Buy, Sell, Send, Receive, Convert, Advanced Trade Buy/Sell, Rewards Income, … |
Asset | Asset the quantity applies to. |
Quantity Transacted | Asset quantity (sign-insensitive; sells may print negative). |
Price Currency | Currency the unit price is quoted in (gen-2: "Spot Price Currency"). |
Price at Transaction | Unit price at execution (gen-2: "Spot Price at Transaction"). |
Subtotal | Quantity × price before fees — carries the counter-leg on Advanced Trade fills. |
Total (inclusive of fees and/or spread) | Total paid/received including fees and spread. |
Fees and/or Spread | Fee amount (present in real exports; some older files omit it). |
Notes | Free text — crypto-quoted Advanced Trade fills stash the counter-leg here ("Bought 10 LTC for 500 GBP…"). |
Transaction history — gen-2 (≈2020–2024)
Same layout minus the ID column, with "Spot Price …" names; a localized generation uses "USD Spot Price at Transaction, USD Subtotal, USD Total (inclusive of fees), USD Fees".
| Column | What it means |
|---|---|
Timestamp | Event time. |
Transaction Type | Event type vocabulary (same family as gen-3). |
Asset | Asset the quantity applies to. |
Quantity Transacted | Asset quantity. |
Spot Price Currency / Spot Price at Transaction | Unit price and its currency. |
Subtotal | Quantity × price before fees. |
Total (inclusive of fees and/or spread) | Total including fees/spread. |
Fees and/or Spread | Fee amount. |
Notes | Free text. |
Format quirks
- Gen-3 renamed the price columns, added a leading ID column, and files can start with metadata preamble lines — the parser scans for the real header row instead of assuming line 1.
- Convert rows arrive as a timestamp-paired couplet — one negative-quantity row (asset out) and one positive (asset in) — merged into a single trade.
- Advanced Trade Buy/Sell fills (the standard fill type since Advanced Trade replaced simple trade) carry the fiat or crypto counter-leg in Subtotal/Total — crypto-quoted fills become trades, fiat-quoted become buy/sell.
- Transaction Type vocabulary is wide and only partially public: Card Spend is a disposal, Rewards Income is income; types whose direction cannot be verified (Order, Donation, Admin Debit, Retail … rows) are kept visible as flagged rows rather than guessed from the amount sign.
⚠ The "… UTC" timestamp suffix on gen-3 files is single-source evidence — the parser accepts both ISO and UTC-suffixed shapes, but a fresh export confirmation is still open (NEEDS-LIVE-VERIFICATION).
Convert this file (2)
| Convert a Coinbase CSV to TXF for TurboTax Desktop | live |
| Convert a Coinbase CSV to the Koinly format | live |
All Coinbase CSV converters · Format reference index · All converters