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.

Include data from:

  • every exchange you used

  • every wallet you own/owned

Check how to create an API key or download the correct CSV files on our integration pages.

🟡 Note: This applies to all the years - even if you only need a tax report for the current year but have been trading crypto since 2017, you need to import the data since 2017.

🟡 Note: Excluding some wallets may result in incomplete data and higher taxes - see Can I avoid adding some wallets that I don't want to include in my reports? for more information.

2. Review the wallet balances

Cross-checking current balances is one of the easiest and fastest ways to see if complete data was imported. Go to your Wallets page in the Koinly app and click on each of your wallets. Depending on how you imported the data, check:

Balances review: Wallets synced using API

Look for yellow warnings (both at the top of the balances table and next to each asset) indicating that there is a difference between the balance the API is reporting and what Koinly calculated based on the transactions (see XYZ balance does not match what you actually have on the wallet for more information)

In most cases, the balances reported by the API will be the correct ones and any warnings here indicate gaps in your data. See our articles on Exchange API limitations and My wallet balances on Koinly are not correct for tips on how to fix those errors.

However, sometimes it’s the API balance that is incorrect - while it doesn’t happen often, sometimes API doesn’t return the balances of:

  • Assets that are staked

  • Assets that are in open orders

In such cases, the balance warnings can be ignored - see "Ignore reported balances" explained for instructions on how to hide this warning from the UI.

Balances review: Wallets synced using CSVs

Since there is no “reported balance” when using CSVs, you need to cross-check what you see in Koinly with the balances you see on the respective exchange’s website, comparing the two.

Most common reasons for incorrect balances

Imbalances usually result in Missing purchase history - check the article for detailed tips on how to deal with it.

In essence:

  1. Incomplete data imported (missing previous years, specific transactions, etc.)

  2. Reflection, Taxed, and Rebase tokens Special tokenomics that require manual rebalancing transactions to be added to Koinly

3. Review DeFi transactions (LPing, staking)

Liquidity Providing

🟡 Note: you can skip this section if you didn’t interact with DeFi protocols (liquidity providing, yield farms, etc.)

In most cases, Koinly will automatically tag your liquidity transactions correctly. Sometimes, for unsupported protocols, you will need to account for the LP transactions manually - check the article Liquidity In/Out for detailed instructions.


🟡 Note: you can skip this section if you didn’t interact with DeFi protocols (liquidity providing, yield farms, etc.)

On-chain staking (farming) of tokens usually requires tagging the transactions as Sent to Pool or Received from Pool - see our article on Staking for details.

Reflections and 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.

Check our article on Reflection, Taxed, and Rebase tokens to learn how to account for reflections, taxes, etc.

4. Review NFT transactions

🟡 Note: you can skip this section if you didn’t buy/sell any NFTs

NFTs can be quite troublesome due to the lack of market price, which is why Koinly often will not be able to merge NFT transactions automatically. Check our article on How Koinly imports NFTs for more information, as well as our manual method with NFTx placeholders for blockchains we do not support yet.

5. Review deposits and withdrawals

Use the following filters on your transactions page to narrow down the search:

  • Type: withdrawal or deposit

  • Label: no label

  • Order: Oldest first

🟡 Note: Not all withdrawals and deposits need changing - some should remain the way they are. For example, loan repayments should be “normal” withdrawals, equivalent to selling the asset at market price.

Check for unmatched transfers

Koinly does a very good job of matching withdrawals and deposits between your own wallets into non-taxable transfers. Sometimes the transfers will not be matched automatically due to failing one of our requirements mentioned in How Koinly handles transfers between your own wallets.

See the article on why are transfers between my own wallets showing a profit/loss. Most common reasons for transfers to be unmatched:

  • Incomplete data (withdrawal from wallet A or deposit to wallet B is missing)

  • Timestamp discrepancy (withdrawal happens after the deposit - usually due to one of the CSVs being imported in the wrong timezone)

  • The deposited amount is rounded (common with Centralized Exchanges - the deposited amount is larger than the withdrawn one)

Check for special transactions

Koinly tries to tag all the special transactions automatically using the tags:

  • Airdrop

  • Fork

  • Mining

  • Staking rewards

However, sometimes the data from the exchange/blockchain is ambiguous - in such cases, you need to find and tag those transactions manually - see our article on what are labels for more information on what each label does.

6. Look for outliers

Go to the transaction page and remove any filters you may have, then sort the transactions by “Highest gains”.


  • The first few pages to see if your trades with the highest gains look plausible

  • The last few pages to see if your trades with the biggest losses look plausible

Any unreasonable gain/loss here usually points to some of the issues we mentioned above still persisting.

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:

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. “Dust” amounts mentioned here are usually caused by rounding errors - See our article about the "We have assumed a cost of zero for some assets” warning for more information.

Seeking professional help in importing your data

Contact our technical support team

Do not hesitate to reach out to our Support (via our in-app chat or at [email protected]). Our agents will happily assist you in solving the issues in your wallet by yourself by pointing you to the correct help resources or giving an example of how the issue needs to be fixed. 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

If all this seems overwhelming, 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.

Did this answer your question?