Transaction Classification
Transaction Classification
Section titled “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.
Automatic Classification Engine
Section titled “Automatic Classification Engine”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.

The classification is deterministic — the same transaction data always produces the same type.
Manual Override
Section titled “Manual Override”If the automatic classification is incorrect, you can override it from the transaction detail view:
- Open the transaction detail
- Click the current type label
- Select the correct type from the dropdown

- Optionally add a note explaining the override
- Save
The override is recorded in the audit trail. The original automatic classification remains visible for reference.
Classification Rules
Section titled “Classification Rules”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.
AI Classification
Section titled “AI Classification”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
Section titled “Revenue Classification Rules”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.
Bulk Reclassification
Section titled “Bulk Reclassification”For recurring misclassifications:
- Filter the transaction list to show affected transactions
- Select all matching transactions
- Use Bulk Reclassify and choose the correct type
- Review and confirm
Common Misclassifications
Section titled “Common Misclassifications”| Symptom | Likely Cause | Fix |
|---|---|---|
| Staking rewards shown as TRANSFER_IN | Contract not recognized as staking | Override to STAKING_REWARD or add a rule |
| DEX swap shown as two separate transfers | Complex routing not detected | Override to SWAP |
| Bridge shown as TRANSFER_OUT with no BRIDGE_IN | Destination chain wallet not connected | Connect destination wallet, or manually add BRIDGE_IN |
| All token transfers showing as TRANSFER_OUT | Address comparison issue | Check wallet address format |