One P&L Across Several Exchanges: How to Tidy Up Before Tax Season
Guides · · Satoshi Note
Read in: 한국어
With one exchange, tidying up your P&L is one screen: that exchange's trade history. With two or more, it stops being simple. A coin bought on Upbit and sold on Binance leaves its buy on one exchange and its sell on another, and neither screen tells you what you made. Downloading three exchanges' histories in March and lining them up in a spreadsheet takes longer than it sounds.
This guide is about doing that work early and once. It is not tax advice, and Satoshi Note does not produce tax forms. It covers one step only: making sure every trade you made is in one table before anyone turns those numbers into a return.
Before you start
- Wherever you are, a transfer between exchanges is not a buy or a sell. The cost basis of a moved coin should carry over, but exchange histories record only a "withdrawal" and a "deposit", and this is where the chain breaks most often.
1. Gather fills from every exchange into one place
The first job is one table of fills from every exchange. There are two ways.
- Download from each exchange. Every exchange has a trade-history export, and each one uses its own date range, column names and currency. Two exchanges means two downloads and one round of matching columns; three means three.
- Connect once with a read-only API key. Connect an exchange to Satoshi Note and its fills flow into your records automatically, and every new fill lands in the same table from then on. The key needs read permission only, no withdrawal or trading. The per-exchange steps are in the exchange API key guide.
Either way the goal is the same: date, exchange, coin, buy/sell, quantity, price and amount in one table, in time order, regardless of exchange. The next steps need that table.
2. Filter by period, exchange and coin, and read the realized P&L
Records search on Satoshi Note's desktop layout (it opens at widths of 1024px and up) filters your gathered records with a one-line query made of tokens.
| Token | Meaning | Example |
|---|---|---|
after: before: | Period | after:2026-01 before:2026-12 |
ex: | Exchange | ex:upbit ex:binance |
coin: | Coin | coin:btc |
side: | Buys only / sells only | side:sell |
pnl: | Realized P&L condition | pnl:<0 (losing trades only) |
amt: | Amount condition | amt:>1000000 |
For example, after:2026-01 before:2026-12 side:sell leaves only this year's sells, and the header line shows count, total amount and total realized P&L. Add ex:upbit for Upbit sells only, or coin:eth for Ethereum only.
For pre-filing tidying, this screen does one thing: it lets you check whether the per-exchange numbers add up to the combined number. If exchange A's sells plus exchange B's sells do not equal all sells, either an exchange's fills are missing or a transfer between exchanges has been recorded as a buy or a sell.
3. Download a single CSV
The filtered result downloads as a CSV on the spot. It has nine columns:
Date · Exchange · Coin · Buy/Sell · Quantity · Price · Amount · Realized P&L · Memo
Amount and realized P&L are in Korean won. For trades filled in USDT on an overseas exchange, Satoshi Note stores the won value converted at an exchange rate, so before using the figures for a filing, check that this rate basis matches what your filing requires. The file is saved as satoshinote-records-<date>.csv.
Queries you use often can be saved (on your device only; nothing is sent to the server). Save "this year's sells", "Upbit only" or "losing trades" once and the same table opens in one click next time.
4. Preview realized P&L before you sell
Coins you have not sold have no realized P&L yet. If you are weighing whether to close part of a position before year end, enter the quantity in Sell preview. It appends one hypothetical sell to your existing buy records and works out the realized P&L, proceeds, fee and remaining quantity. No order is placed. The number answers one question: "if I sell this much, what does this year's realized P&L become?"
5. The limits: why this must not go straight into a return
- Satoshi Note does not produce tax forms. The CSV above is your fills in one table, not a filing form or a tax computation. Have the filing figures checked by a tax professional or a dedicated crypto tax service.
- Realized P&L uses a moving average. When you have bought the same coin several times, Satoshi Note computes realized P&L against the average purchase price. The cost-basis method a filing requires can differ by country and by type of trade.
- Transfers between exchanges need a manual check. A coin moved by withdrawal and deposit is not a buy or a sell. If a transfer shows up in your records looking like one, leave a memo and filter it out when you prepare the filing data.
- What an exchange does not serve cannot be imported. Where an exchange's API returns past fills only up to a certain age, older trades have to be downloaded from the exchange and added.
Summary: four things to do before filing season
- Get every exchange you use into one table, by read-only key or by downloading and merging.
- Filter to this year's sells and check that per-exchange totals match the combined total.
- Download the CSV and keep it.
- Check that no exchange transfer is recorded as a buy or sell, and agree the calculation basis with a tax professional.
FAQ
Can Satoshi Note produce my tax return?
No. Satoshi Note shows fills and realized P&L from several exchanges in one table and lets you download them as a CSV. It does not produce filing forms or tax computations.
Do 2026 trades have to be reported in Korea?
Tax timing and rules depend on the law in force and can change. Check the tax authority's guidance or a tax professional before filing. Satoshi Note does not calculate tax; it only helps you organize the records.
Does records search work on a phone?
Records search and the CSV download open on the desktop layout (1024px and wider). On a phone the same address shows only a note that records search is available on the PC screen. Individual trades can be viewed by date in the calendar on the phone.
Can Satoshi Note trade with my API key?
Not with a read-only key, which carries no withdrawal or order permission. Turn off trading and withdrawal when creating the key, and set an IP allowlist if the exchange offers one.
Satoshi Note is free. Read-only API keys only. The site is satoshinote.io.