Specifications
Measured from the program, not written about it. Each row names the registry it was read from.
| Countries | Canada · United States · Australia · United Kingdom | jurisdiction registry |
|---|---|---|
| Reporting currency | Canada: CAD · United States: USD · Australia: AUD · United Kingdom: GBP | jurisdiction registry |
| Cost-basis methods | Canada: ACB · United States: FIFO, LIFO, HIFO · Australia: FIFO, LIFO, HIFO · United Kingdom: ACB | jurisdiction registry |
| Tax year starts | Canada: 1 January · United States: 1 January · Australia: 1 July · United Kingdom: 6 April | jurisdiction registry |
| Special rules | Canada: superficial loss · United States: wash sale · Account-by-Account (2025+) · Australia: CGT discount · United Kingdom: Section 104 matching | jurisdiction registry |
| Reports | 22 — Canada: Schedule 3, T1135 Foreign Property, Income Report, Superficial Loss, ACB Summary, Audit Provenance · United States: Form 8949, Schedule D, Income Report, Wash Sale Report, Lot Tracking, Audit Provenance · Australia: CGT Summary, CGT Worksheet, Income Report, Lot Tracking, Audit Provenance · United Kingdom: SA108 - Capital Gains Tax summary, Capital Gains Details, Income Report, Pool History, Audit Provenance | report registry |
| Transaction types | 67 types in 5 classes | transaction class registry |
| Built-in export layouts | 14 — NDAX Trades, NDAX Staking, Generic Standard, Coinbase, Coinbase (2025 format), Coinbase (2021 format), Coinbase (2024 format), Newton, Shakepay, Kraken Trades, Kraken Ledger, Crypto.com App, Binance Transaction History, Wealthsimple Crypto | format registry |
| Automated tests | 1,768 passing | cargo test --lib, at release |
| Program version | 2.20.0 | Cargo.toml |
| Prices and exchange rates | CoinGecko (prices) · DefiLlama (prices, older dates) · Binance (prices, fallback) · Bank of Canada · FRED (exchange rates) | the outside-services list |
Generated from PrivateACB 2.20.0, commit dba753a4 (v2.20.0), on 2026-10-03.
The four countries side by side
Generated from the running program's jurisdiction registry.
| Country | Currency | Methods | Tax year starts | Special rules |
|---|---|---|---|---|
| Canada | CAD | ACB | 1 January | superficial loss |
| United States | USD | FIFO, LIFO, HIFO | 1 January | wash sale · Account-by-Account (2025+) |
| Australia | AUD | FIFO, LIFO, HIFO | 1 July | CGT discount |
| United Kingdom | GBP | ACB | 6 April | Section 104 matching |
The export layouts it recognises
Generated from the running program's format registry. A file that matches none of these is read column by column in the Import window.
| Format | Row shape | Fee convention | Notes |
|---|---|---|---|
| NDAX Trades | trading-pair rows | fees in what the trade received | Fee behavior verified against real NDAX exports — fees are charged in what the trade received. |
| NDAX Staking | one row per transaction | not declared — determined per file | A staking-only export with no fee column — rewards carry no fees. |
| Generic Standard | one row per transaction | not declared — determined per file | The simple layout the program documents itself: date, type, asset, quantity, price, currency, fee, exchange, notes. |
| Coinbase | one row per transaction | fees in the pair's quote currency | Matches the older USD-denominated Coinbase export, the one with "USD" in its column names. |
| Coinbase (2025 format) | one row per transaction | fees in the pair's quote currency | The current eleven-column export, read below its two heading lines. Amounts are in each row's own price currency; bank deposits are skipped. A Convert row names its second coin only in the notes, so it is held for your decision rather than guessed. |
| Coinbase (2021 format) | one row per transaction | fees in the pair's quote currency | An earlier ten-column export, with a Spot Price Currency column. Read the same way as the current one: amounts in each row's own currency, a Convert's second coin from its note. |
| Coinbase (2024 format) | one row per transaction | fees in the pair's quote currency | An earlier ten-column export, with a Spot Price Currency column. Read the same way as the current one: amounts in each row's own currency, a Convert's second coin from its note. |
| Newton | sent/received columns | a fee-currency column states it | Carries its own fee-currency column — the one built-in format that states fee currency explicitly. |
| Shakepay | sent/received columns | not declared — determined per file | The real 11-column export; it carries no fee column — Shakepay prices through its spread. |
| Kraken Trades | trading-pair rows | fees in the pair's quote currency | Verified against a real 16-column export. Not importable alone — attach it to a Kraken Ledger file, which carries the deposits and rewards this file lacks. |
| Kraken Ledger | ledger entries, grouped | fees in the row's own asset | Matches the current 12-column export; older variants map automatically. Fees are in each row's own asset. |
| Crypto.com App | sent/received columns | not declared — determined per file | Sent and received columns, with the amount's sign giving direction; the export carries no fee column. |
| Binance Transaction History | ledger entries, grouped | fees in the row's own asset | Ledger-style rows grouped by time; fee rows carry their own coin. |
| Wealthsimple Crypto | one row per transaction | fees in the pair's quote currency | The 2026 sixteen-column Crypto Activities export. Cost and proceeds are the net cash that moved; the commission is recorded as the fee and counted once, and the quoted unit price is kept for the record and checked against the cash — rows where Wealthsimple's own columns disagree are reported. Bank deposits and withdrawals are skipped. The export leaves out staking rewards and coin-to-coin swaps, and Wealthsimple's own book value for coins transferred in is not your cost. |
Transaction types
Generated from the running program's registry.
| Class | Tax treatment | Types |
|---|---|---|
| Exchange | capital gains | 15 |
| Income | income at value on receipt | 15 |
| Transfer | no tax event | 10 |
| DeFi | capital gains | 13 |
| Ignored | left out entirely | 14 |
Every type the program knows (67)
| Type | Class | What it is | Income category |
|---|---|---|---|
| buy | Exchange | An acquisition — the units enter your holdings at what they cost. | — |
| futures | Exchange | A derivatives row; acts through its buy or sell side. | — |
| limit | Exchange | An order-type label; acts through its buy or sell side. | — |
| limit_buy | Exchange | A buy placed as a limit order — an acquisition. | — |
| limit_sell | Exchange | A sell placed as a limit order — a disposal. | — |
| margin | Exchange | A margin-trading row; acts through its buy or sell side. | — |
| market | Exchange | An order-type label; acts through its buy or sell side. | — |
| market_buy | Exchange | A buy placed as a market order — an acquisition. | — |
| market_sell | Exchange | A sell placed as a market order — a disposal. | — |
| options | Exchange | An options row; acts through its buy or sell side. | — |
| rollover | Exchange | A periodic financing charge on an open margin position (Kraken). | — |
| sell | Exchange | A disposal — the units leave and the gain or loss is realized. | — |
| settled | Exchange | Settlement of a margin position on spot (Kraken). | — |
| stop | Exchange | An order-type label; acts through its buy or sell side. | — |
| trade | Exchange | One asset for another; the program reads the row's buy or sell side. | — |
| airdrop | Income | Coins distributed to you unsolicited — income on receipt. | windfall income |
| bonus | Income | A bonus credit — income at its value on receipt. | passive income |
| cashback | Income | Cashback paid in crypto — income at its value on receipt. | passive income |
| dividend | Income | A dividend paid in crypto — income at its value on receipt. | passive income |
| fork | Income | Coins created by a chain split — income on receipt. | windfall income |
| hard_fork | Income | Coins created by a chain split — income on receipt. | windfall income |
| interest | Income | Interest paid in crypto — income at its value on receipt. | passive income |
| invite_bonus | Income | A sign-up or invite credit — income on receipt. | windfall income |
| mining | Income | Mined coins — income at their value on receipt. | passive income |
| realized_pnl | Income | An exchange-reported trading profit or loss, taken as income. | trading income |
| referral | Income | A referral payment — income at its value on receipt. | passive income |
| reward | Income | A reward credited to you — income at its value on receipt. | passive income |
| rewards | Income | A reward credited to you — income at its value on receipt. | passive income |
| staking | Income | A staking reward — income at its value on receipt. | passive income |
| yield_farming | Income | Yield-farming proceeds — income at their value on receipt. | passive income |
| deposit | Transfer | Coins arriving at an account — the Transfers check looks for the matching withdrawal. | — |
| internal_transfer | Transfer | A movement inside one venue — no tax event. | — |
| receive | Transfer | Coins received — no tax event; their cost carries from wherever they left. | — |
| send | Transfer | Coins sent out — no tax event; a movement, paired where possible. | — |
| spend | Transfer | Coins leaving, recorded as a movement — no gain is computed for this type. | — |
| transfer | Transfer | A movement of your own coins; the program pairs its two legs where it can. | — |
| transfer_in | Transfer | Coins arriving — no tax event; their cost carries from wherever they left. | — |
| transfer_out | Transfer | Coins leaving — no tax event; the other leg should arrive somewhere in your data. | — |
| unstake | Transfer | Staked units returning to you — a principal return, not new income. | — |
| withdrawal | Transfer | Coins leaving an account — no tax event; often the other leg of a deposit. | — |
| borrowing | DeFi | Borrowed units arriving — treated as an acquisition. | — |
| bridge | DeFi | A cross-chain movement; on its own it neither adds nor removes units. | — |
| collateral | DeFi | Units posted as collateral — treated as a disposal. | — |
| flash_loan | DeFi | A same-transaction loan; on its own it neither adds nor removes units. | — |
| lending | DeFi | Units lent into a protocol — treated as a disposal. | — |
| liquidation | DeFi | A position closed by the protocol; on its own it neither adds nor removes units. | — |
| liquidity_add | DeFi | Units placed into a pool — treated as a disposal. | — |
| liquidity_in | DeFi | Units placed into a pool — treated as a disposal. | — |
| liquidity_out | DeFi | Units returned from a pool — treated as an acquisition. | — |
| liquidity_remove | DeFi | Units returned from a pool — treated as an acquisition. | — |
| lp_deposit | DeFi | Units placed into a pool — treated as a disposal. | — |
| lp_withdraw | DeFi | Units returned from a pool — treated as an acquisition. | — |
| swap | DeFi | One token exchanged for another through a contract — a disposal and an acquisition. | — |
| approval | Ignored | A contract permission, not a movement of value — set aside. | — |
| approve | Ignored | A contract permission, not a movement of value — set aside. | — |
| borrow | Ignored | A loan-drawdown label some exports use — set aside; the DeFi borrowing type is the one that adds units. | — |
| contract_call | Ignored | A contract interaction with no value moved — set aside. | — |
| contract_interaction | Ignored | A contract interaction with no value moved — set aside. | — |
| dust | Ignored | Amounts too small to track — set aside. | — |
| dust_attack | Ignored | Tiny amounts sent to bait interaction — set aside. | — |
| failed | Ignored | A transaction that did not complete — set aside. | — |
| failed_transaction | Ignored | A transaction that did not complete — set aside. | — |
| internal | Ignored | A venue's internal bookkeeping row — set aside. | — |
| null_transaction | Ignored | A placeholder row with no value — set aside. | — |
| repay | Ignored | A loan-repayment label — set aside. | — |
| revoke | Ignored | A permission withdrawn, not a movement of value — set aside. | — |
| spam | Ignored | Unrequested tokens — set aside from all calculations. | — |
The same tables are in the program: Help → PrivateACB Handbook, Part III. See also the example reports for what the figures look like.