Once you imported all your wallets/exchanges, you should do a few checks to make sure the data is complete.
We are sharing below a general framework of how to approach checking the data you imported to Koinly in order to get the most accurate tax calculations.
1. Import all your wallets/exchanges
Importing complete data is essential for Koinly to be able to find all the costs of acquisition.
➕ Add every:
Centralized exchange you used (Binance, Coinbase)
This includes closed exchanges and exchanges you no longer use
Self-custodial wallet (Ethereum, Solana, Bitcoin)
Including wallets you no longer use, compromised wallets, etc.
Including every L2 network (Arbitrum, Binance Smart Chain, etc.)
☝️ Import complete data for all years, even if you already filed your taxes
❌ Do not add:
Wallets that never belonged to you
Deposit addresses to centralized exchanges (dropbox addresses)
Wallets belonging to 3rd parties (your friends, coworkers)
Wallets that belong to another entity - you need a separate Koinly account for each entity that files taxes separately
Your business wallets/accounts
Your trust, retirement investment accounts like IRA, SMSF, etc.
🧑🏫 Further reading:
Integration pages - step-by-step instructions for every exchange we support
✅ After completing step 1, import of all your exchanges/wallets:
You have a wallet added in Koinly for every centralized exchange you ever used and every self-custodial wallet for which you hold the private keys
2. Check wallets for incomplete data
Review data in each wallet imported. Look for:
Balance errors
XYZ balance does not match what you actually have on the wallet
Missing purchase history warnings
Missing purchase history for XYZ
If the balances calculated by Koinly do not match reality and you see "missing purchase history" warnings in your transaction history, this usually indicates that some data wasn't imported. Most common solutions include:
Trigger a full resync of the wallet
Delete the wallet and add it again using the same API
Delete the wallet and add it again using CSV files only
For more detailed troubleshooting, check:
✅ After completing step 2, checking for incomplete data:
Most of your wallets should have balances that match reality
What may still be wrong (as you'll fix it in one of the next steps):
Balances of your staked assets
Balances of reflection/tax/rebase tokens (SFM, stETH, etc.)
3. Review DeFi transactions (LPing, staking)
3a. Liquidity Providing
⏭️ SKIP if you never did any LPing
Majority of your liquidity-related transactions should be automatically merged and tagged as such, but for some lesser known protocols (especially concentrated liquidity) some adjustments may be necessary. Follow:
3b. Staking and farming
⏭️ SKIP if you never did any staking
Koinly will automatically tag staking/unstaking transactions but may miss some lesser-known protocols. In such cases, you need to tag those transactions yourself to stop gains from being realized on them. Follow:
3c. Reflections and taxed tokens
⏭️ SKIP if you never traded reflection/taxed tokens
Tokens like SAFEMOON, AMPL, and other tokens with “advanced tokenomics” require adding manual rebalancing transactions, as the changes in the tokens held are not reported on the blockchain.
Wrong wallet balances of tokens like BABYDOGE, SFM, etc. in your wallets are almost always caused by missing reflections/taxes. Follow:
✅ After completing step 3, review of DeFi transactions:
You don't have any "Liquidity out" with $0 cost basis and large gains
Balances of your staked assets in Koinly match reality
Balances of your reflection/taxed tokens in Koinly match reality
4. Review NFT transactions
⏭️ SKIP if you never traded NFTs
NFTs can be quite troublesome because:
They don't have a market price
Some API integrations don't import them at all
Some trades with NFTs won't be merged
Steps needed:
Add NFTx placeholders manually for blockchains that do not import them
Merge NFT deposits/withdrawals with corresponding transactions
Add worth to NFT deposits that were airdropped (and tag as such)
🧑🏫 Further reading:
✅ After completing step 4, review of NFT transactions:
All NFT trades have a cost basis
No transactions with NFTs show a "missing market price" warning
5. Review unclassified deposits and withdrawals
Use the following filters on your transactions page to narrow down the search:
Type: Withdrawals, Deposits
Advanced filter: Tag is blank
Order: Oldest first
There are a few things worth looking out for simultaneously:
Unrecognized tokens
Unmatched transfers
Split trades
Spam
Missing prices
Special transactions
ℹ️ Issues with unclassified transactions are usually related
A transfer might not be matches because the deposited token is wrong. A token might not have a price but it will once you merge it into a trade, etc. That's why it's worth checking everything together.
5.1 Unrecognized tokens
When transacting newly released or migrated tokens, Koinly's database may not yet be updated and an unidentified token gets imported. If the correct token does exist in our database, you can fix this by following:
5.2 Unmatched transfers
Koinly does a very good job with matching withdrawals and deposits between your own wallets into non-taxable transfers. Sometimes the transfers will not be matched automatically due to incomplete or inaccurate data:
Incomplete data (withdrawal from wallet A or deposit to wallet B is missing)
Timestamp discrepancy (usually due to CSVs imported in the wrong timezone)
The deposited amount is rounded so it's larger than the withdrawal
Wrong transfer pairs were matched
If you decide to fix a transfer manually, be sure to edit the side that is wrong - the correct timestamp of a transaction is the one that is in UTC timezone (API data will always be in UTC). Follow:
5.3 Split trades
Sometimes a trade you did doesn't show as one "Exchange" transaction but instead as a separate Deposit and Withdrawal. This is usually caused by ambiguous on-chain data (transaction has multiple inputs/outputs) or missing market prices. You can merge such trades manually:
5.4 Spam
The more you traded on-chain, the higher the chances are that your wallet was targeted by spammers. It's good to mark those transactions as such because:
You will lower your transaction count and may spend less on a Koinly plan
It's harder to review your actual transactions if you have a lot of spam inbetween
Especially address poisoning tends to look confusing with spam "disguising" itself as real tokens like ETH or USDC
5.5 Missing prices
You shouldn't have a lot of transactions showing the Missing market price error as you fixed most of these errors by merging trades and fixing unidentified currencies but this warning may still show for low-cap tokens you traded that aren't listed on CoinGecko or CoinMarketCap.
For those tokens, you will need to add the market price (worth of the transaction) manually but if you traded the same token a lot, it might be worth adding a custom price feed - see Settings > Custom prices.
5.6 Special transactions
Koinly tries to automatically tag all your transactions when appropriate, using the tags like Airdrop
, Reward
(from staking) or Realized PNL
(for Futures)
However, sometimes the data from the exchange/blockchain is unclear and you need to find and tag those transactions manually (or remove the tag if it was added incorrectly). For a full list of available tags with explanation how they affect your gains, see What are tags?
☝️ Not all transactions need tagging
Some should remain the way they are. For example, payments to 3rd parties should remain as "plain" withdrawals, while OTC acquisitions (e.g. crypto purchased with a credit card) - deposits.
🧑🏫 Further reading:
✅ After completing step 5, review of unclassified deposits and withdrawals:
All your transactions are properly categorized
You don't have any "Missing market price" errors
Balances of all assets on all your wallets are correct (match reality)
6. Spot-check outliers
Go to your Transactions page, clear any filters you might have and
Sort by "Highest gains"
Browse through the first few pages
Does something look implausible or unexpected?
Sort by "Largest losses"
Browse through the first few pages
Does something look implausible or unexpected?
When reviewing implausible gains, follow:
Detailed analysis of cost basis may uncover issues with the data you didn't notice before. Data review is an iterative process - don't shy from going back to any of the previous sections if you feel it's needed.
✅ After completing step 6, spot-check of outliers:
You reviewed transactions with significant gains/losses
There are no disposals you believe to be wrong/implausible
7. Check the tax review page
Finally, go to the “Tax reports” page, select the year for the tax report you’re interested in and see if there are any issues/missing costs mentioned there:
☝️ Review the same timeframe
Be sure to have the dashboard show your tax year if you're going to compare the data on the dashboard with the Tax Summary
If you followed the steps above, there shouldn’t be any errors listed, or they can be small enough to consider ignoring the slightly higher taxes you’ll need to pay on some transactions.
For more information about the warning mentioned here, see We have assumed a cost of zero for some assets.
✅ After completing step 7, review of the tax summary:
Total of costs assumed as $0 is insignificant or accepted
You consider the data complete and calculations accurate, and you're ready to download your reports
8. Lock your transaction history
Since you're about to download your reports, it's good to set a lock date in your settings to ensure that the data up to the end of your last tax year stays the same and you don't modify it by mistake or due to a system error.
Remember that, if needed, you can always remove the lock date.
✅ After completing step 8, setting the transaction lock:
Your transaction history up to the lock date is immutable
No new transactions for this period can be added/removed
🆘 Seeking additional help
Contact our technical support team
Do not hesitate to reach out to our Support via our in-app chat. Our team will happily assist you in how to use Koinly. Our team will support you in solving the issues yourself by pointing you to the correct help resources or giving an example of how the issue can be fixed. Please note that our team cannot give tax advice and it's your responsibility to ensure you're following legislation. See our scope of support for detailed information.
Purchase our Expert Review
Alternatively, if you need help with data import and amendment, you may want to consider our Expert Review - read more about this service in our article on what is an Expert Review.
Reach out to a crypto accountant
You may want to consider hiring a crypto accountant to help you with importing and checking your crypto transactions - we have quite a few accountants listed on our website, from different countries.