venko.tech

How to Fix CSV Import Column Mismatch in Crypto Tax Software

CSV imports break because exchanges and tax tools disagree on column names. Not schema. Not data format. Column names.

Three mismatches cause almost all failures. Here they are.

1. wrong date format

Coinbase exports dates as 2026-08-31T21:13:04Z. Binance uses 2026-08-31 21:13:04. Kraken outputs 31-Aug-26 21:13:04. CoinTracker expects YYYY-MM-DD HH:MM:SS. Koinly reads MM/DD/YYYY HH:MM[:SS] or Unix timestamp.

The fix: open your CSV in any editor. Find the date column. If it contains T and Z, replace T with a space and strip the Z. If it is three-letter months and two-digit years, convert to YYYY-MM-DD. Both tools silently reject anything they do not recognise.

2. missing transaction type column

Coinbase does not include a Transaction Type column. It has Transaction Type in the file name. Binance includes Trade Type as either BUY or SELL but omits rows for deposits, withdrawals, and fees. Kraken has Type with values like trade, deposit, withdrawal, staking reward, and spend.

CoinTracker requires a Type column. Without it, every row defaults to a trade - which breaks your balance. Koinly is more forgiving: it infers type from other columns but still warns you. Best practice: add a Type column manually. Map these values:

3. Sent/Received Amount Split vs Single Amount Column

Coinbase outputs Quantity (positive for receives, negative for sends) in one column. Binance has Amount (always positive) and Quote Amount. Kraken has Amount and Fee. CoinTracker expects Amount as a positive number, plus a separate Sent Amount or Received Amount column. Koinly wants Amount and a currency column.

Standardise everything to positive numbers. Create two columns: Sent Amount and Received Amount. For buys, put the purchased amount in Received Amount and zero in Sent Amount. For sells, put the sold amount in Sent Amount and zero in Received Amount. For deposits and withdrawals, use only one side.

Exact Header Mappings

CoinTracker template:

Date,Received Amount,Received Currency,Sent Amount,Sent Currency,Fee Amount,Fee Currency,Type,Description

Koinly template:

Date,Amount,Currency,Fee,Fee Currency,Received Amount,Received Currency,Sent Amount,Sent Currency,Label,Description

Coinbase → CoinTracker:

Coinbase Column CoinTracker Column
Timestamp Date
Quantity Transacted (positive) Received Amount
Asset Received Currency
Quantity Transacted (negative) Sent Amount
Asset Sent Currency
Fees Fee Amount
Fee Asset (usually same as Asset) Fee Currency
(nothing) Type - see above
Notes Description

Binance → Koinly:

Binance Column Koinly Column
Date(UTC) Date
Amount Amount
Coin Currency
Fee Fee
Fee Coin Fee Currency
Quote Amount Sent Amount
Coin Received Currency
(nothing) Label - set to trade

Kraken → Any tool:

Kraken Column Map To
time Date
type Type
amount Amount or split as needed
asset Currency
fee Fee

Internal Transfer Rows

Exchanges label transfers inconsistently. Coinbase uses Send and Receive as separate rows. Binance omits transfer rows entirely if you export by trade history. Kraken labels them transfer.

Koinly handles this best: it matches sends and receives by address and date. CoinTracker needs manual pairing. If you see two rows for one transfer (one send, one receive), remove both from your CSV and add a single Internal Transfer row in CoinTracker with zero net value. In Koinly, leave both rows - the tool will pair them automatically.

The one pattern that works every time

Export from your exchange. Open in a text editor - not Excel, which mangles dates. Add or rename columns to match the target template. Replace negative amounts with split positive columns. Save as plain CSV. Import. If it fails, check the type column first. That is almost always the problem.

Repeat until it passes. Then cache your mapping. You will need it next year.

Not financial advice. venko.tech publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.

Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.

Back to portfolio