Skip to content

Import Flow Guide

Import your cryptocurrency transaction history from any exchange. PrivateACB automatically detects your exchange format using built-in profiles for 10 major exchanges and guides you through a 5-step process.

Steps: 1. Select File → 2. Review & Configure → 3. Review Classifications → 4. Preview & Validate → 5. Import

Time to complete: 2-3 minutes for recognized exchanges, 3-5 minutes for custom CSVs Built-in exchange profiles: Coinbase, Kraken (Trades + Ledger), Binance, NDAX (Trades + Staking), Newton, Shakepay, Crypto.com App — plus any CSV export


You’ll need:

  • A CSV file exported from your exchange
  • Knowledge of which timezone your exchange uses (usually UTC)

Where: File menu → Import Transactions, or Dashboard → “Import Data” button

Action: Click the upload zone or “Change file” to select your CSV file.

File requirements:

  • Must be a CSV file (.csv extension)
  • Can be from any exchange or wallet that exports CSV
  • No strict size limit, but very large files (100K+ rows) take longer to process

Tip: If your file is in Excel format (.xlsx), open it in Excel and use “Save As → CSV” first.

PrivateACB analyzes your file using the Column Oracle — an intelligent profiler that examines your column headers, data patterns, and cross-column correlations to identify the exchange format.

The profiling result shows:

  • File info: Filename, row count, column count, and detected format shape
  • Profile match: If recognized, shows the exchange name and confidence percentage (e.g., “Detected: Kraken Trades (pairBased) — Confidence: 100%”)

If your file matches a built-in exchange profile with high confidence, column mappings are pre-configured automatically — no manual mapping needed.

If the file isn’t recognized, PrivateACB still auto-maps columns using pattern matching. You can review and adjust in Step 2.

Click Next to continue.

Step 1: File Selection with Profile Match


This step shows your file analysis and import settings. Review each section and adjust as needed.

A one-line summary of your data:

5 transactions across 3 assets (BTC, ETH, SOL) from 2024-01-20 to 2024-08-15.
2 transaction types detected (3 buy, 2 sell).
Matched: Kraken Trades (100% confidence). Timestamps are local time.

Column badges show which columns were auto-mapped and which are unmapped:

  • Green badges: Mapped columns (e.g., time → Date, pair → Trading Pair, fee → Fee)
  • Grey badges: Unmapped columns (skipped during import — usually metadata like margin or misc)

A data grid shows all rows from your file with the mapped column headers. Verify the data looks correct — check that dates, amounts, and types are in the right columns.

Step 2: Profile Review

For high-confidence matches, column mappings are collapsed by default (the profile already mapped everything correctly). Click “Edit column mappings (N unmapped)” to expand and review or adjust.

For low-confidence or unrecognized files, the mapping table is expanded automatically. Each row shows:

CSV ColumnSample ValueMaps To
time2024-01-15 10:30:00Date/Time
typebuyType (Buy/Sell)
pairBTC/CADTrading Pair
vol0.5Amount
price45000.00Price per Unit
fee2.50Fee
margin0.00— Skip —

Use the dropdown to change any mapping, or select — Skip — to exclude a column.

PrivateACB detects four CSV formats automatically. You don’t need to choose — the Column Oracle identifies the format from your data:

Your file has separate columns for asset, type, and amount. Most straightforward format.

timestamp,type,asset,amount,price
2024-01-15,buy,BTC,0.5,45000

Your file has a trading pair column like BTC/CAD or XXBTZUSD. PrivateACB automatically splits pairs into asset + quote currency, including Kraken’s concatenated format.

time,type,pair,vol,price
2024-01-15,buy,BTC/CAD,0.5,45000

Bidirectional Format (Newton, Shakepay, Crypto.com)

Section titled “Bidirectional Format (Newton, Shakepay, Crypto.com)”

Your file has sent/received columns instead of a type column. PrivateACB infers the trade direction:

  • Sent CAD + Received BTC = Buy
  • Sent BTC + Received CAD = Sell
  • Sent BTC + Received ETH = Swap (creates 2 transactions)
date,type,sent_qty,sent_currency,received_qty,received_currency
2024-01-15,Trade,1500,CAD,0.03,BTC

Your file has multiple rows per trade (debit + credit entries). PrivateACB groups related rows by transaction ID or timestamp and reconstructs complete trades.

txid,refid,time,type,asset,amount,fee
T1,R1,2024-01-15,trade,BTC,0.5,0.001
T2,R1,2024-01-15,trade,CAD,-22500,0

Below the column mapping, configure these import-wide settings:

Step 2: Import Settings

Enter the exchange where these transactions occurred (e.g., Coinbase, Kraken). This is pre-filled when a profile matches. The name appears in your reports and helps identify transaction sources.

If your CSV timestamps don’t include timezone information (no “Z” suffix or offset), select the timezone your exchange uses.

Your CSV ShowsSelect
2024-01-15T10:30:00Z or +00:00UTC (auto-detected — no action needed)
2024-01-15 10:30:00 (no timezone)Your exchange’s timezone
UnsureUTC (most exchanges use UTC)

A conversion preview shows how your timestamps will be stored:

2024-01-05 10:00:00 → UTC (America/Toronto)

This dropdown appears only when PrivateACB can’t determine the quote currency from your data (no quote currency column, no trading pair). Select the fiat currency your transactions are priced in (e.g., USD, CAD).

Check the appropriate box if your exchange deducts fees from crypto:

CheckboxWhen to CheckExample
Buy fees in cryptoFee reduces crypto receivedBuy 1 BTC, receive 0.999 BTC (0.001 BTC fee)
Sell fees in cryptoFee reduces crypto soldSell 1 BTC, only 0.999 BTC counts toward proceeds

When unsure: Leave both unchecked. This assumes fees are in fiat, which is most common.

Enter the name of who is preparing these tax records. This appears on generated reports.

When to use:

  • You’re a CPA preparing reports for clients
  • You want your name on reports for record-keeping

Examples: “John Doe CPA”, “Jane Smith”, or leave blank.

Click Next to continue.


This step appears when your CSV contains transaction types that PrivateACB doesn’t automatically recognize. If all types are recognized (common with major exchanges), this step may be skipped.

PrivateACB’s built-in registry recognizes 60+ common transaction types (BUY, SELL, STAKING, DEPOSIT, etc.). Any unrecognized types are highlighted for your review — select the appropriate tax classification from the dropdown and check Remember to save your choice for future imports.

The five tax classifications are:

  • Exchange — Capital gains tax (buy/sell trades)
  • Income — Taxable at fair market value (mining, staking, rewards)
  • Transfer — No tax impact (deposits, withdrawals)
  • DeFi — Capital gains (liquidity pools, swaps)
  • Ignored — Excluded from all calculations (spam, failed transactions)

For the full guide on classification categories, status indicators, filters, and the Remember feature, see the Classification Review Guide.

Step 3: Classification Review


Review all transactions before importing. Each row shows the parsed data with a status indicator.

The table displays:

  • Checkbox: Select/deselect individual transactions
  • Timestamp: Converted to UTC
  • Exchange: Source exchange
  • Type: Transaction type (buy, sell, staking, etc.)
  • Asset: Cryptocurrency symbol
  • Amount: Quantity
  • Price: Unit price
  • Quote Currency: Fiat currency (CAD, USD)
  • Status: Ready, Warning, or Error
StatusMeaningAction
ReadyValid, will importNone needed
⚠️ WarningMinor issue, will still importReview recommended
ErrorCannot importFix mapping or CSV
  • ☑️ Checked = Will import
  • ☐ Unchecked = Will skip

Use Select All Valid Transactions checkbox to toggle all importable rows.

Pagination: Use the page controls to review all transactions if you have more than fit on one screen.

All transactions passed validation. Click Start Import to proceed.

Common warnings include:

  • Missing price data (can be fetched later from Market Data tab)
  • Crypto fees detected (may need price conversion)
  • Missing optional fields

Click warning rows to review details. If acceptable, leave checked and proceed.

Some transactions already exist in your database (from a previous import). PrivateACB automatically skips duplicates (unchecked). This is usually correct.

Blocking problems that prevent import. Common causes:

  • Wrong column mapped (e.g., description mapped to “amount”)
  • Blank rows or corrupted data

Click error rows to see details. Go back to Step 2 to fix column mappings if needed.

Click Start Import when ready.

Step 4: Preview & Validate


After clicking Start Import, PrivateACB processes your transactions and displays the results.

Import Complete!
✓ Successfully imported: 69 transactions
📋 Total records processed: 69 transactions
Source: your-file.csv
Import Time: 0.2 seconds

The completion screen offers three options:

ButtonAction
View Imported DataGo to Data Viewer to see your transactions
Calculate ACBGo directly to ACB Calculator
Import More DataStart another import (for additional exchanges)

Recommended workflow:

  1. Import all your exchanges first before calculating ACB
  2. Go to Market Data tab → Import exchange rates and crypto prices for transaction dates
  3. Go to ACB Calculator → Calculate ACB for each asset
  4. Go to Reports → Generate tax forms

To confirm everything imported correctly:

  1. Go to Data Viewer tab
  2. Check the record count matches “Successfully imported” from the summary
  3. Sort by timestamp and verify dates look correct
  4. Spot-check a few transactions for correct asset symbols, amounts, and types

Red flags to watch for:

  • All timestamps are the same or show 1970 (wrong column mapped to timestamp)
  • All amounts are zero
  • Asset symbols are blank or all “Unknown”
  • Trade types are all “BUY” when you know you had sells

If something looks wrong, use the deletion controls to remove the bad import, fix your settings, and re-import.

Import failures are rare, but if something goes wrong:

Common causes:

  • Database file is locked (close other programs accessing it)
  • Disk is full (no space to write new data)
  • File was moved during import

What to do:

  1. Check system messages for details
  2. Fix the underlying issue
  3. Try again

Important: If import fails partway through, PrivateACB rolls back ALL changes. You won’t have partial data — it’s all-or-nothing.


PrivateACB ships with profiles for these exchanges. When your CSV matches, columns are mapped automatically:

ExchangeFormatNotes
CoinbaseStandard9 columns, USD pricing
Kraken TradesPair-Based13 columns, handles XXBTZUSD format
Kraken LedgerLedger10-11 columns, refid-linked grouping
BinanceLedger7 columns, timestamp-linked grouping, stablecoin normalization
NDAX TradesPair-Based10 columns, BTC/CAD pairs
NDAX StakingStandard4 columns, staking rewards
NewtonBidirectional8 columns, sent/received
ShakepayBidirectional11 columns, purchase/sale
Crypto.com AppBidirectional10 columns, sign-based amounts
Generic StandardStandardFallback for standard-format CSVs
Generic BidirectionalBidirectionalFallback for sent/received CSVs

For exchanges not listed, PrivateACB auto-maps columns using pattern matching. You can review and adjust mappings in Step 2.


StepDecisionQuick Answer
2Which timezone?UTC for most exchanges
2Fees in crypto?Leave unchecked if unsure
3How to classify unrecognized types?Use the Classification Guide
3Check “Remember”?Yes, saves time on future imports
4Import with warnings?Usually yes, review first

→ The file may not be a valid CSV. It might be Excel (.xlsx) or corrupted. Open in Excel and “Save As → CSV”.

→ Normal for custom CSVs. Expand “Edit column mappings” in Step 2 to verify and adjust. PrivateACB will still work — just check your mappings.

→ Wrong column mapped. Go back to Step 2 and check column mappings. A common mistake is mapping a description field to “amount”.

→ Normal if all your transaction types are recognized. Proceed to Step 4.

Transactions have wrong dates (all show 1970 or far future)

Section titled “Transactions have wrong dates (all show 1970 or far future)”

Cause 1: Wrong timestamp column mapped. Go to Step 2 and check. → Cause 2: Wrong timezone selected. Most exchange exports use UTC.

Duplicate warnings for transactions I’ve never imported

Section titled “Duplicate warnings for transactions I’ve never imported”

→ Your CSV may have the same transaction twice, or your exchange exported duplicates. Review in Step 4 — if they’re true duplicates, let PrivateACB skip them.

Import completes but ACB calculations fail

Section titled “Import completes but ACB calculations fail”

→ Imported transactions may be missing price data. Go to Market Data tab to fetch prices before running ACB.


  1. Test with a small file first — Importing from a new exchange? Test with 10-50 transactions to verify mappings work before importing your full history.

  2. Export by year — If you have 10+ years of transactions, export one year at a time. Smaller files are faster and easier to troubleshoot.

  3. Back up your database — Before importing large files, copy your .db file to a safe location.

  1. Don’t close the app — Let the wizard finish. Interrupting mid-import rolls back all changes.

  2. Review warnings in Step 4 — Don’t click “Start Import” blindly. Take 30 seconds to check that the preview looks reasonable.

  3. Leave duplicates unchecked — If you see duplicate warnings, leave those transactions unchecked.

  1. Verify immediately — Go to Data Viewer and spot-check transactions while the import is fresh in your mind.

  2. Keep your CSV files — Don’t delete them after import. Keep as backup.

  3. Run ACB calculations — Don’t wait. Go to ACB Calculator while the import is fresh.


Last Updated: March 2026 PrivateACB Version: 2.5.0