This article shows you how to import crypto trading history into Navexa, even if your exchange or broker isn’t supported yet.
Use this template as a starting point:
When to use this method
Use the crypto spreadsheet importer when:
Your exchange/broker isn’t currently supported for direct import.
You want a quick way to bulk-add spot crypto trades (buys, sells, swaps).
If your exchange is supported, the direct import method is usually faster. If it isn’t, this CSV method gives you full control and gets you to an accurate portfolio sooner.
What the crypto spreadsheet importer supports
Supported transactions
Buy (spot)
Sell (spot)
Swaps (crypto-to-crypto) by using Buy or Sell with a crypto pair (e.g. BTC/ETH, SOL/USDT)
Not supported in the CSV importer
Transfer In / Transfer Out (deposits/withdrawals) via CSV
Advanced activities (for example, staking rewards, lending interest, airdrops) are not yet supported through the spreadsheet or the Navexa platform.
If you need to reflect transfers, you can add them manually inside the holding after importing (explained below).
Required CSV columns
Your spreadsheet must include these column headers:
Market Pair (e.g. BTC/AUD, BTC/ETH)
Trade Date
Trade Type (Buy or Sell)
Amount Received
Amount Traded
Fee
Fee Currency Code (fiat or crypto codes accepted)
Notes/Description (optional)
How to fill each field
Market Pair
Format is BASE/QUOTE:
BASE = the coin you’re buying/selling (first in the pair)
QUOTE = the currency you’re paying/receiving (second in the pair)
Examples:
BTC/AUD (BASE = BTC, QUOTE = AUD)
SOL/USDT (BASE = SOL, QUOTE = USDT)
BTC/ETH (BASE = BTC, QUOTE = ETH)
Trade Type
Use only:
Buy
Sell
For swaps, you still use Buy or Sell (Navexa will display these as Trade In/Trade Out automatically).
Amount Received and Amount Traded (important)
In the crypto spreadsheet importer:
Amount Received = the BASE quantity (how many units of the first asset)
Amount Traded = the unit price in the QUOTE currency (price per 1 unit of BASE)
This means Amount Traded is not the total you spent/received.
Example (BTC/AUD buy):
You buy 0.10 BTC for 9,500 AUD total
Unit price = 9,500 / 0.10 = 95,000 AUD per BTC
CSV values:
Market Pair: BTC/AUD
Trade Type: Buy
Amount Received: 0.10
Amount Traded: 95,000
If you put 9,500 into Amount Traded, Navexa interprets it as $9,500 per BTC (unit price), not the total.
Fee and Fee Currency Code
Fee = fee amount
Fee Currency Code = the currency the fee was charged in (AUD, BTC, ETH, USDT, etc.)
Tip: If your fee is charged in a coin you don’t otherwise hold (or don’t have a starting balance for), that coin may show as negative until you add earlier trades/transfers.
How swaps work (crypto-to-crypto)
Buy vs Sell for swaps
For swaps, think in terms of what you receive vs what you spend:
Buy BASE/QUOTE = you receive BASE and spend QUOTE
Sell BASE/QUOTE = you spend BASE and receive QUOTE
Example (SOL/USDT):
Buy SOL/USDT = receive SOL, spend USDT
Sell SOL/USDT = spend SOL, receive USDT
What you’ll see in Navexa
After import, Navexa will automatically show:
Trade (In) on the coin you received
Trade (Out) on the coin you spent
Even though your CSV says Buy/Sell, the UI will correctly label the “in” and “out” side of the swap.
Transfers and starting balances (why errors happen)
Why you may see “Insufficient shares to sell”
Because Transfer In/Out isn’t supported in the CSV importer, Navexa can only build balances from the trades you import.
So if your CSV spends a coin before you ever acquired it (for example, you buy SOL using USDT, but you never added a USDT buy or transfer-in first), you’ll see:
Insufficient shares to sell
This is expected and just means the holding needs an earlier balance.
Fix options
Choose one:
Option A (recommended for CSV-only): Add earlier Buy trades so the coin exists before it’s spent.
Example: add a USDT/AUD Buy before any SOL/USDT trades.
Option B (manual): Add a Transfer In inside the holding.
Use this when your USDT (or other coin) came from a deposit, not a buy.
How to manually add Transfer In / Transfer Out (when needed)
If you need to add a starting balance for a coin:
Open the holding (e.g. USDT).
Click Add Trade.
Select Transfer In.
Set the Trade Date to before the first time you spend that coin.
Enter the transferred quantity.
Click Add Trade.
You can also add Transfer Out the same way if you want withdrawals reflected.
How to import your CSV
In Navexa, go to Add Holdings.
Choose Import from Spreadsheet.
Choose the Cryptocurrencies.
Upload your CSV, click Next.
Check that the row selected shows the column headers. Then, click Yes to confirm.
In Header Selection, confirm each column is matched correctly. Click Next at the bottom to continue.
In Review, scan for any warnings.
Click Save.
Download the template and example rows
Use this template as a starting point:
What the template demonstrates:
BTC/AUD and ETH/AUD buys/sells
A BTC/ETH swap (shows as Trade In/Out in the UI)
Funding USDT with a USDT/AUD buy before using SOL/USDT swaps
Common issues and quick fixes
My quantities are wildly wrong (e.g. “sold 5,200 BTC”)
Cause: Total value was entered as the quantity.
Fix:
Put the coin quantity in Amount Received
Put the unit price in Amount Traded
A coin is negative after import
Cause: You spent that coin before acquiring it in your imported history.
Fix:
Add earlier buys for that coin, or
Manually add Transfer In dated before the spend
My swap shows as Trade In/Trade Out, not Buy/Sell
That’s expected. Navexa is correctly showing both sides of the swap inside each holding.
What we recommend for best results
Import your trades from the earliest date you started trading that coin.
If you use stablecoins (USDT/USDC), include an earlier funding trade (or add Transfer In manually).
Keep fees in their real fee currency where possible.
Download the Crypto Spreadsheet Template here:






