Skip to content

Transaction Classification

Every transaction synced or imported into CryptaCount is assigned a type by the classification engine. This type determines how the transaction is journaled, whether it triggers a gain/loss calculation, and how it appears in reports.

The classification engine analyzes each transaction’s on-chain data to assign a type:

  • Direction analysis — Is the wallet the sender, receiver, or both?
  • Contract interaction — Is this a simple transfer or a smart contract call?
  • Function classification — Over 70 function categories map on-chain function signatures to classification hints (TRANSFER, SWAP, BRIDGE, STAKING, LENDING, etc.)
  • Event parsing — For contract interactions, which events were emitted?
  • Counter-asset detection — Did the wallet receive a different asset in the same transaction (indicating a swap)?
  • Known contract matching — Is the contract a recognized DeFi protocol, DEX router, staking contract, or bridge?
  • Economic intent — The engine assigns an economic intent (INVESTMENT, TRADING, OPERATIONAL, INCOME, EXPENSE, FINANCING, HEDGING, TRANSFER, UNKNOWN) to guide accounting treatment.

Automatic transaction classification result

The classification is deterministic — the same transaction data always produces the same type.

If the automatic classification is incorrect, you can override it from the transaction detail view:

  1. Open the transaction detail
  2. Click the current type label
  3. Select the correct type from the dropdown

Manual classification override dropdown

  1. Optionally add a note explaining the override
  2. Save

The override is recorded in the audit trail. The original automatic classification remains visible for reference.

Define rules under Settings → Rules that automatically override the classification for transactions matching specific criteria:

  • Contract address — All interactions with a specific contract get a specific type
  • Token — Transactions involving a specific token are classified a certain way
  • Direction and amount — Combine direction, asset, and amount thresholds

Rules support versioning — you can test rules against existing transactions before activating them.

The AI classification feature under AI Classification in the sidebar is available on qualifying plans. It provides:

  • AI-powered suggestions — Machine learning model analyzes transaction patterns and suggests classifications
  • Accept/reject workflow — Review AI suggestions individually or in bulk
  • Bulk accept/reject — Process multiple AI suggestions at once
  • Generate suggestions — Trigger AI analysis for unclassified transactions

AI classification supplements the rule-based engine — it catches patterns that static rules miss, especially for novel DeFi protocols.

Revenue classification rules under Revenue Rules in the sidebar provide specialized handling for revenue-generating transactions:

  • Revenue contract rules — Define rules for recognizing revenue from specific token flows or contract interactions
  • Registry levels — Rules can be defined at global level, workspace level, or per-token level
  • Test matching — Validate rules against sample transactions before activating
  • Toggle — Enable/disable rules without deleting them

This is particularly useful for businesses that receive crypto as payment — rules can automatically classify incoming transfers from known customer addresses as revenue.

For recurring misclassifications:

  1. Filter the transaction list to show affected transactions
  2. Select all matching transactions
  3. Use Bulk Reclassify and choose the correct type
  4. Review and confirm
SymptomLikely CauseFix
Staking rewards shown as TRANSFER_INContract not recognized as stakingOverride to STAKING_REWARD or add a rule
DEX swap shown as two separate transfersComplex routing not detectedOverride to SWAP
Bridge shown as TRANSFER_OUT with no BRIDGE_INDestination chain wallet not connectedConnect destination wallet, or manually add BRIDGE_IN
All token transfers showing as TRANSFER_OUTAddress comparison issueCheck wallet address format