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:
- Coinbase:
Buy→Trade,Sell→Trade,Send→Withdrawal,Receive→Deposit,Convert→Trade(if the CSV shows two sides) orSwap(if one row). - Binance:
BUY→Trade,SELL→Trade. AddDepositandWithdrawalrows yourself if they are missing. - Kraken: leave
Typeas-is.
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.