How transactions are automatically categorised
When importing transactions for one of your accounts – either through an API integration, or by uploading a CSV of transactions – CryptFolio attempts to automatically assign each transaction a transaction type if it's safe to do so, to reduce the amount of work you need to do to later assign them transaction types.
(Transaction types are necessary to accurately calculate your reports, e.g. inventory, realised and unrealised gains, and FIFO tax reports.)
Automatic wallet imports (API) and manual imports (CSV)
When importing transactions from a third-party service (such as your exchange wallet), or uploading transactions by manual CSV import, we follow the following algorithm to determine a transaction type:
If the transaction is a sale or a purchase, we will create the transaction as a Sale or Purchase transaction.
If the transaction is a trade, we will create two transactions: one Sale transaction, and one Purchase transaction.
If the transaction is a deposit or a withdrawal, we will create the transaction as a Transfer transaction.
If the transaction is an airdrop, we will create the transaction as an Airdrop transaction.
Otherwise, if your portfolio is configured to automatically assign transaction types, if the transaction is positive (delta > 0), we will create the transaction as a Purchase transaction; if the transaction is negative (delta < 0), we will create the transaction as a Sale transaction.
Automatic address imports
When importing a transaction for an address through one of our supported explorers, we use the following algorithm to determine a transaction type:
If we can identify two transactions within the same portfolio, using the same currency, with the same transaction reference/ID, the same delta (after fees), and within 24 hours of each other, we will assign both transactions as Transfer transactions.
Otherwise, if your portfolio is configured to automatically assign transaction types, if the transaction is positive (delta > 0), we will create the transaction as a Purchase transaction; if the transaction is negative (delta < 0), we will create the transaction as a Sale transaction.