Import Flow Guide
Overview
Section titled “Overview”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
Before You Begin
Section titled “Before You Begin”You’ll need:
- A CSV file exported from your exchange
- Knowledge of which timezone your exchange uses (usually UTC)
Step 1: Select File
Section titled “Step 1: Select File”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 (
.csvextension) - 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.
After File Selection
Section titled “After File Selection”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 2: Review & Configure
Section titled “Step 2: Review & Configure”This step shows your file analysis and import settings. Review each section and adjust as needed.
File Summary
Section titled “File Summary”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.CSV Columns
Section titled “CSV Columns”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
marginormisc)
Sample Data
Section titled “Sample Data”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.

Column Mapping
Section titled “Column Mapping”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 Column | Sample Value | Maps To |
|---|---|---|
| time | 2024-01-15 10:30:00 | Date/Time |
| type | buy | Type (Buy/Sell) |
| pair | BTC/CAD | Trading Pair |
| vol | 0.5 | Amount |
| price | 45000.00 | Price per Unit |
| fee | 2.50 | Fee |
| margin | 0.00 | — Skip — |
Use the dropdown to change any mapping, or select — Skip — to exclude a column.
How PrivateACB Handles Different Formats
Section titled “How PrivateACB Handles Different Formats”PrivateACB detects four CSV formats automatically. You don’t need to choose — the Column Oracle identifies the format from your data:
Standard Format (Coinbase, Generic)
Section titled “Standard Format (Coinbase, Generic)”Your file has separate columns for asset, type, and amount. Most straightforward format.
timestamp,type,asset,amount,price2024-01-15,buy,BTC,0.5,45000Pair-Based Format (NDAX, Kraken Trades)
Section titled “Pair-Based Format (NDAX, Kraken Trades)”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,price2024-01-15,buy,BTC/CAD,0.5,45000Bidirectional 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_currency2024-01-15,Trade,1500,CAD,0.03,BTCLedger Format (Binance, Kraken Ledger)
Section titled “Ledger Format (Binance, Kraken Ledger)”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,feeT1,R1,2024-01-15,trade,BTC,0.5,0.001T2,R1,2024-01-15,trade,CAD,-22500,0Import Settings
Section titled “Import Settings”Below the column mapping, configure these import-wide settings:

Exchange Name
Section titled “Exchange Name”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.
Timezone
Section titled “Timezone”If your CSV timestamps don’t include timezone information (no “Z” suffix or offset), select the timezone your exchange uses.
| Your CSV Shows | Select |
|---|---|
2024-01-15T10:30:00Z or +00:00 | UTC (auto-detected — no action needed) |
2024-01-15 10:30:00 (no timezone) | Your exchange’s timezone |
| Unsure | UTC (most exchanges use UTC) |
A conversion preview shows how your timestamps will be stored:
2024-01-05 10:00:00 → UTC (America/Toronto)Pricing Currency
Section titled “Pricing Currency”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).
Fee Currency
Section titled “Fee Currency”Check the appropriate box if your exchange deducts fees from crypto:
| Checkbox | When to Check | Example |
|---|---|---|
| Buy fees in crypto | Fee reduces crypto received | Buy 1 BTC, receive 0.999 BTC (0.001 BTC fee) |
| Sell fees in crypto | Fee reduces crypto sold | Sell 1 BTC, only 0.999 BTC counts toward proceeds |
When unsure: Leave both unchecked. This assumes fees are in fiat, which is most common.
Tax Preparer (Optional)
Section titled “Tax Preparer (Optional)”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.
Step 3: Review Classifications
Section titled “Step 3: Review Classifications”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 4: Preview & Validate
Section titled “Step 4: Preview & Validate”Review all transactions before importing. Each row shows the parsed data with a status indicator.
Transaction Table
Section titled “Transaction Table”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
Status Column
Section titled “Status Column”| Status | Meaning | Action |
|---|---|---|
| ✓ Ready | Valid, will import | None needed |
| ⚠️ Warning | Minor issue, will still import | Review recommended |
| ✗ Error | Cannot import | Fix mapping or CSV |
Transaction Selection
Section titled “Transaction Selection”- ☑️ 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.
Common Validation Scenarios
Section titled “Common Validation Scenarios”All Green (✓ Ready)
Section titled “All Green (✓ Ready)”All transactions passed validation. Click Start Import to proceed.
Some Warnings (⚠️)
Section titled “Some Warnings (⚠️)”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.
Duplicates Detected
Section titled “Duplicates Detected”Some transactions already exist in your database (from a previous import). PrivateACB automatically skips duplicates (unchecked). This is usually correct.
Errors Found (✗)
Section titled “Errors Found (✗)”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 5: Import Complete
Section titled “Step 5: Import Complete”After clicking Start Import, PrivateACB processes your transactions and displays the results.
Import Summary
Section titled “Import Summary”Import Complete!
✓ Successfully imported: 69 transactions📋 Total records processed: 69 transactionsSource: your-file.csvImport Time: 0.2 secondsNext Steps
Section titled “Next Steps”The completion screen offers three options:
| Button | Action |
|---|---|
| View Imported Data | Go to Data Viewer to see your transactions |
| Calculate ACB | Go directly to ACB Calculator |
| Import More Data | Start another import (for additional exchanges) |
Recommended workflow:
- Import all your exchanges first before calculating ACB
- Go to Market Data tab → Import exchange rates and crypto prices for transaction dates
- Go to ACB Calculator → Calculate ACB for each asset
- Go to Reports → Generate tax forms
Verifying Your Import
Section titled “Verifying Your Import”To confirm everything imported correctly:
- Go to Data Viewer tab
- Check the record count matches “Successfully imported” from the summary
- Sort by timestamp and verify dates look correct
- 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.
If Import Fails
Section titled “If Import Fails”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:
- Check system messages for details
- Fix the underlying issue
- Try again
Important: If import fails partway through, PrivateACB rolls back ALL changes. You won’t have partial data — it’s all-or-nothing.
Built-in Exchange Profiles
Section titled “Built-in Exchange Profiles”PrivateACB ships with profiles for these exchanges. When your CSV matches, columns are mapped automatically:
| Exchange | Format | Notes |
|---|---|---|
| Coinbase | Standard | 9 columns, USD pricing |
| Kraken Trades | Pair-Based | 13 columns, handles XXBTZUSD format |
| Kraken Ledger | Ledger | 10-11 columns, refid-linked grouping |
| Binance | Ledger | 7 columns, timestamp-linked grouping, stablecoin normalization |
| NDAX Trades | Pair-Based | 10 columns, BTC/CAD pairs |
| NDAX Staking | Standard | 4 columns, staking rewards |
| Newton | Bidirectional | 8 columns, sent/received |
| Shakepay | Bidirectional | 11 columns, purchase/sale |
| Crypto.com App | Bidirectional | 10 columns, sign-based amounts |
| Generic Standard | Standard | Fallback for standard-format CSVs |
| Generic Bidirectional | Bidirectional | Fallback for sent/received CSVs |
For exchanges not listed, PrivateACB auto-maps columns using pattern matching. You can review and adjust mappings in Step 2.
Common Decisions Summary
Section titled “Common Decisions Summary”| Step | Decision | Quick Answer |
|---|---|---|
| 2 | Which timezone? | UTC for most exchanges |
| 2 | Fees in crypto? | Leave unchecked if unsure |
| 3 | How to classify unrecognized types? | Use the Classification Guide |
| 3 | Check “Remember”? | Yes, saves time on future imports |
| 4 | Import with warnings? | Usually yes, review first |
Troubleshooting
Section titled “Troubleshooting””Failed to profile CSV file”
Section titled “”Failed to profile CSV file””→ The file may not be a valid CSV. It might be Excel (.xlsx) or corrupted. Open in Excel and “Save As → CSV”.
Low confidence detection
Section titled “Low confidence detection”→ Normal for custom CSVs. Expand “Edit column mappings” in Step 2 to verify and adjust. PrivateACB will still work — just check your mappings.
”All transactions show errors”
Section titled “”All transactions show errors””→ Wrong column mapped. Go back to Step 2 and check column mappings. A common mistake is mapping a description field to “amount”.
Step 3 was skipped
Section titled “Step 3 was skipped”→ 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.
Tips and Best Practices
Section titled “Tips and Best Practices”Before Importing
Section titled “Before Importing”-
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.
-
Export by year — If you have 10+ years of transactions, export one year at a time. Smaller files are faster and easier to troubleshoot.
-
Back up your database — Before importing large files, copy your
.dbfile to a safe location.
During Import
Section titled “During Import”-
Don’t close the app — Let the wizard finish. Interrupting mid-import rolls back all changes.
-
Review warnings in Step 4 — Don’t click “Start Import” blindly. Take 30 seconds to check that the preview looks reasonable.
-
Leave duplicates unchecked — If you see duplicate warnings, leave those transactions unchecked.
After Import
Section titled “After Import”-
Verify immediately — Go to Data Viewer and spot-check transactions while the import is fresh in your mind.
-
Keep your CSV files — Don’t delete them after import. Keep as backup.
-
Run ACB calculations — Don’t wait. Go to ACB Calculator while the import is fresh.
Last Updated: March 2026 PrivateACB Version: 2.5.0