KuCoin CSV export format
parser liveThis is the format reference for KuCoin CSV export (spot orders / deposits & withdrawals) — 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: Layouts per BittyTax’s kucoin.py (headers encoded from real exports), cross-checked with daybook — see research/parser-fixture-validation-2026-10.md.
How to export the file
- KuCoin → Orders → Spot Orders → Filled Orders → Export Data (for trades); Assets → Deposit/Withdrawal history → export (for transfers).
- Pick the date range and download — trades, deposits, and withdrawals are separate files.
- Feed each file separately — the parser detects which layout it got from the header.
Column reference
Spot Orders — Filled Orders (current web export)
A "bundle" variant reorders the tail columns and may emit a bare "Filled Time" with no timezone suffix.
| Column | What it means |
|---|---|
UID / Account Type / Order ID | Account and order identifiers. |
Order Time(UTC±HH:MM) | Order time — the UTC offset lives in the column NAME and is applied to the naive values. |
Symbol | Dash-separated pair, e.g. BTC-USDT. |
Side | BUY or SELL. |
Order Type / Order Price / Order Amount | Order parameters (limit price, ordered quantity). |
Avg. Filled Price | Average execution price. |
Filled Amount | Executed base quantity. |
Filled Volume | Executed quote quantity (the counter-leg). |
Filled Volume (USDT) | USDT valuation of the fill. |
Filled Time(UTC±HH:MM) | Fill time — same timezone-in-header trick. |
Fee / Fee Currency | Fee amount and its asset. |
Tax / Status / Account Mode | Jurisdiction tax field, fill status, account mode tag. |
Trade history (API-shaped export)
| Column | What it means |
|---|---|
tradeCreatedAt | Fill time — epoch-milliseconds on API-shaped exports (naive UTC datetimes also accepted). |
orderId | Order id. |
symbol | Pair code. |
side | Lowercase buy/sell. |
price | Fill price. |
size | Base quantity. |
funds | Quote total. |
fee / feeCurrency | Fee amount and asset. |
liquidity / orderType | Maker/taker flag and order type. |
Deposits / Withdrawals
Two separate files with the same shell — direction is decided by which address column exists.
| Column | What it means |
|---|---|
UID / Account Type | Account identifiers. |
Time(UTC±HH:MM) | Event time — offset in the header name. |
Coin | Asset. |
Amount | Transferred quantity. |
Fee | Network/exchange fee (withdrawal files). |
Hash | On-chain txid. |
Deposit Address / Withdrawal Address/Account | Destination — its presence marks the file as a withdrawal export. |
Transfer Network | Chain/network used. |
Status | Only SUCCESS rows produce transactions. |
Remarks | Free text. |
Format quirks
- The timezone is embedded in the column name — "Filled Time(UTC+08:00)" is parsed out and applied; a bare "Time"/"Filled Time" falls back to UTC+8 (KuCoin’s display zone) with an explicit note, never silent.
- Empty exports ship a sentinel row — UID "No matching records found." — which is skipped rather than parsed as data.
- Deposits and withdrawals are separate files sharing one shell: a "Withdrawal Address/Account" column marks a withdrawal file, otherwise it is a deposit file (the same rule BittyTax uses).
- Filled Amount is the base leg and Filled Volume the quote leg — the two "Volume" columns are easy to cross; the USDT-denominated one is valuation only.
- Rows with a non-success Status never emit transactions.
⚠ The epoch-millis assumption on API-shaped exports rests on the header shape — a fresh export should confirm (NEEDS-LIVE-VERIFICATION).
Convert this file (2)
| Convert a KuCoin CSV to the Koinly format | live |
| Convert a KuCoin CSV to CoinLedger | live |
All KuCoin CSV converters · Format reference index · All converters