Skip to content

Understanding Transaction Types

PrivateACB automatically recognizes 60+ different transaction types from exchanges, wallets, and DeFi platforms. Each transaction type describes what happened (bought crypto, received rewards, swapped tokens, etc.) and determines how it’s taxed.

What you’ll learn:

  • The transaction types PrivateACB recognizes
  • How transaction types determine tax treatment
  • Why you never need to manually categorize

Tax treatment depends on what happened:

  • Buying crypto creates an acquisition (affects cost basis)
  • Selling crypto triggers a capital gain or loss
  • Staking rewards are taxable income
  • Transfers between your wallets are non-taxable

PrivateACB handles this automatically. When you import transactions, each type is classified into the correct tax category. No dropdown menus. No manual tagging.


All transaction types map to 5 tax categories:

CategoryTax TreatmentCommon Examples
ExchangeCapital gains/lossesBuys, sells, trades
IncomeTaxable income at fair market valueStaking, mining, airdrops, interest
TransferNon-taxable (tracking only)Wallet-to-wallet transfers, deposits, withdrawals
DeFiCapital gains (varies by context)Swaps, liquidity operations, lending
IgnoredExcluded from calculationsSpam, failed transactions, dust

How it works:

  1. Import CSV file with transactions
  2. Classification engine reads each transaction type
  3. Automatically maps to the correct tax category
  4. Tax calculations apply appropriate rules
  5. Reports show accurate results

Zero manual work.


Create acquisitions (buys) or dispositions (sells) for capital gains calculations.

TypeDescription
buy / purchasePurchase cryptocurrency
sell / saleSell cryptocurrency
tradeExchange one crypto for another
limit_buy / market_buyLimit or market buy order
limit_sell / market_sellLimit or market sell order
spendCrypto spent on a real-world purchase (Kraken-style) — treated as a disposition at FMV

Generate taxable income at fair market value on the date received. These become acquisitions in your cost basis at FMV.

TypeDescription
mining / minedMining rewards (proof-of-work)
staking / stakedStaking rewards (proof-of-stake)
reward / rewardsGeneral rewards
airdropFree tokens from an airdrop
fork / hard_forkTokens from a blockchain fork
interestInterest earned
dividendDividend distributions
cashback / cash_backCashback rewards
bonusPromotional bonuses
referralReferral rewards
yield_farming / yieldYield farming rewards
realized_pnl / pnlRealized profit/loss (from futures, margin, etc.)

Income reporting by jurisdiction:

All income types default to Passive Income. You can override the reporting form on each jurisdiction’s Income Report via the form selector dropdown. Your choice persists across sessions.

JurisdictionDefault FormOverride Options
Canada (CRA)Line 13000 (Other Income)T2125 (Business), T4 (Employment), Line 13000 (Other)
US (IRS)Schedule 1 (Other Income)Schedule C (Business), Schedule 1 (Other)
Australia (ATO)Other IncomePersonal Services, Business Income, Other
UK (HMRC)Miscellaneous IncomeTrading Income, Miscellaneous Income

Non-taxable movements between wallets you control.

TypeDescription
depositDeposit to exchange
withdrawal / withdrawWithdrawal from exchange
transfer_in / transferinIncoming transfer
transfer_out / transferoutOutgoing transfer
send / sentSend to another wallet
receive / receivedReceive from another wallet

Important: Transfers between your own wallets are non-taxable. However, sending crypto to someone else as payment would be classified as a disposition.

When a transfer-in has no matching cost basis

Section titled “When a transfer-in has no matching cost basis”

If a deposit or transfer-in has no matching purchase event in your imports — for example, an external wallet transfer from a wallet you didn’t import, or a fork credit credited directly to your exchange account — PrivateACB blocks the calculation at preflight rather than guessing the cost basis.

You have three resolution paths:

  1. Edit your CSV to add a Purchase row representing the original acquisition, then re-import.
  2. Re-import and reclassify the deposit as Income in Step 3. The receipt enters your pool at the receipt-date market price as the cost basis.
  3. Exclude the asset from calculations.

The reclassify-as-Income path has tax meaning: the asset enters the pool at fair market value on the receipt date, with cost basis equal to that day’s market price. CRA, IRS, ATO, and HMRC each treat this kind of receipt as ordinary income at FMV under their respective income-tax rules — confirm the specifics with a tax professional.

When PrivateACB recognizes a known fork or airdrop event in its registry (currently the post-Merge ETHW airdrop on September 15, 2022, with more entries to come), it also surfaces a heuristic source hint in the preflight popover (e.g., “Looks like an airdrop”) to help you remember where the units came from.

See the Preflight Errors Guide for the full walkthrough.


Decentralized finance operations, generally treated as capital gains events.

TypeDescription
swapDEX token swap
liquidity_add / add_liquidityAdd liquidity to pool
liquidity_remove / remove_liquidityRemove liquidity from pool
lending / lendLend crypto to protocol
borrowing / borrowBorrow crypto from protocol

Special situations and edge cases.

TypeDescription
fee / fees / gasTransaction or network fees
lost / lossLost cryptocurrency (e.g., lost wallet)
stolenStolen cryptocurrency
giftGift of cryptocurrency
donation / donateCharitable donation

TypeDescription
unknownUnrecognized type (flagged for review)

Unknown types are flagged during import. You can review and reclassify them in the Classification Review step of the import process, or later in the Data Viewer.


PrivateACB normalizes the major fiat-pegged stablecoins to USD at import time:

StablecoinTreated as
USDT (Tether)USD
USDC (USD Coin)USD
BUSD (Binance USD)USD
DAIUSD
TUSD (TrueUSD)USD
FDUSD (First Digital USD)USD

This applies to the asset side of trades AND to fees denominated in those stablecoins. After import, the database stores USD as the currency on those rows — the original symbol from your CSV is preserved in the audit trail but doesn’t affect calculation.

Why: all six stablecoins target a 1:1 peg to USD, and tax authorities don’t expect separate accounting for “USDT vs USD” in cost-basis calculations. Normalization simplifies the data model and matches how exchanges themselves treat these instruments. If a stablecoin meaningfully de-pegs (as happened to UST during the Terra collapse), PrivateACB does not automatically treat the de-pegged asset as USD — UST is not on the normalized list, and any future de-pegging stablecoin would need to be removed from the list before normalization continues.


Some exchanges encode additional information beyond the transaction type. PrivateACB reads these subtypes during import to make better classification decisions:

ExchangeSubtypeWhat it tells PrivateACB
KrakenspotfromfuturesThe receipt is from your futures account being credited to spot — typically a fork credit or airdropped asset (e.g., ETHW post-Merge). Used as a heuristic hint when the receipt has no matching cost basis.
Krakentradingfee / referralfeeDistinguishes fee rows in the Ledger CSV from actual transactions.

The list grows as new exchange formats are added; Kraken is currently the most fully integrated.


When you import a CSV file, PrivateACB’s classification engine:

  1. Reads the transaction type from each row in your CSV
  2. Normalizes the text — handles variations in case and naming (e.g., “Staking Reward”, “STAKING”, “staked” all map to staking)
  3. Maps to a tax category — Assigns the correct class (Exchange, Income, Transfer, DeFi, or Ignored)
  4. Stores both values — The specific type (e.g., staking) and the class (e.g., income) are saved to your database

During import, you have the opportunity to review and override classifications in the Classification Review step. User overrides are remembered for future imports from the same source.

The result: Tax calculations automatically apply the correct rules based on each transaction’s category. Income types create taxable events at fair market value. Exchange types trigger capital gains calculations. Transfer types track holdings without tax impact.


What if my platform uses different terminology?

Section titled “What if my platform uses different terminology?”

The classification engine handles variations automatically. “Earn” maps to “reward”, “Purchase” maps to “buy”, “Staking Reward” maps to “staking”, etc. Case doesn’t matter.

Yes, in two ways:

  1. During import — The Classification Review step lets you reclassify types before they’re saved
  2. After import — Edit individual transactions in the Data Viewer tab

No. The classification engine handles everything automatically. You only need to understand the 5 tax categories when reviewing reports.

Unknown types are flagged during import validation. You can reclassify them during the import’s Classification Review step, or edit them later in the Data Viewer.

Token swaps are treated as dispositions of one asset and acquisitions of another — creating a taxable event. The capital gain or loss is calculated based on the cost basis of the disposed asset.

Are transfers between my own wallets taxable?

Section titled “Are transfers between my own wallets taxable?”

No. Transfers between wallets you control are non-taxable movements. PrivateACB tracks the transfer for inventory purposes but does not create a tax event.


60+ transaction types cover:

  • All major exchanges and platforms
  • DeFi protocols (swaps, liquidity, lending)
  • Staking, mining, and rewards
  • Wallet transfers
  • Special situations (gifts, losses, donations)

Automatic classification means:

  • Zero manual categorization
  • Tax-accurate from import to reports
  • Handles complex portfolios effortlessly

Just import your data. PrivateACB handles the rest.


Related guides:


Last Updated: May 2026 PrivateACB Version: 2.8.1