Perly imports transaction history from CSV files — the export every serious exchange offers, and the one format that needs no API keys, no OAuth grant and no ongoing connection. Here is how to get yours out of Coinbase, and what to glance at before you import it anywhere.
The export
- Sign in to Coinbase on the web.
- Open your profile menu and look for Statements (Coinbase has also called this Reports and moved it between the profile menu and Settings over the years — it is the same feature).
- Choose a Transactions statement, set the asset to Bitcoin or leave it as all assets, and pick your date range — “All time” for a first full import.
- Generate the report and download it as CSV. Coinbase also offers PDF; the CSV is the one an importer can read.
- Open the file once before importing: Coinbase writes one row per transaction with a type column (buy, sell, send, receive) — an importer needs the buys and sells.
Exchange interfaces move; menu names drift. If a label above has changed, the feature is still there — search the exchange's own help for “export history CSV”.
Before you import it
- Coinbase and Coinbase Advanced (formerly Pro) keep separate histories. If you traded on both, export both and import both — otherwise your cost basis is missing every fill from the other venue.
- Coinbase CSVs include a subtotal, a fee, and a total; the price per coin is sometimes derived rather than stated. Check that quantity × price plus fee matches the total before trusting a row.
- Rewards, conversions and sends are not buys or sells. Import the trades; the rest is wallet movement, not position change.
What the import does
Perly detects the columns, shows you every row it intends to write, flags likely duplicates and leaves them unticked. Nothing is written until you confirm it — a ledger you cannot trust is worse than no ledger, and the fastest way to an untrustworthy one is a silent import. Cost basis, PnL and ROI are then recomputed from your full history; the arithmetic is explained in Average cost vs FIFO.