A transfer is a transaction between two of your wallets.

If you see a set of scenarios like this:

Then this is not a transfer - this is one deposit and one withdrawal. A withdrawal is equivalent to "sold at market price", so gains will be calculated for this disposal.

A "proper" transfer would show as below - note the two icons of the wallets and a ">>" icon to the left:

So, why can't Koinly detect that it is a transfer?

This usually happens because one side of the transfer has the wrong timestamp. In order for Koinly to match transfers, they have to pass our requirements for auto-matching.

Usually, the transactions fail the chronology check - meaning that the deposit is happening before the withdrawal, which is impossible - the assets first have to leave one wallet in order to show on the second wallet.

βœ… Solution If you added the transaction manually: simply change the date by editing it and Koinly will take care of the rest.

βœ… Solution if you imported the data using a CSV: The files were imported in the wrong timezone. Instead of changing them manually, it's better to recreate the wallet, correcting the timezone:

  1. Find the timezone the files are in (see some tips in the paragraph below)

  2. Delete the wallet you had imported the CSV file to

  3. Create a new wallet and select the CSV file import option

If you selected the correct timezone, Koinly will now import the transactions with the correct date and time and will be able to auto-match all your transfers.

πŸ”΅ Example

You transferred 1 ETH from Coinbase to Bitfinex. The CSVs you imported to Koinly look like that:

Coinbase file:

1/1/2021 05:00 PM, -1, ETH

Bitfinex file:

1/1/2021 01:01 PM, 1, ETH

These transactions will not merge into a transfer because the deposit happens before the withdrawal (01:01 PM vs 05:00 PM).

The issue is that the Bitfinex file is in Eastern Timezone (EST, UTC-4) and should have been imported by choosing this timezone from the dropdown box. Once it is, Koinly will offset the timestamp to 05:01 PM and the transfer will be merged automatically because now it passes all our checks. But how can you know in which timezone the file is in?

How to find the timezone for CSV files

Most exchanges already provide the timestamps in UTC. For the rest, it is sometimes possible to "figure out" the timezone by looking at the file:

  • The file might be in your local timezone check some recent transactions you might still remember doing

  • The file might be in the exchange's timezone

  • Compare the timestamp of the withdrawal/deposit to the exchange with the other side of this transfer that can be verified on the blockchain using an explorer like etherscan.io for Ethereum.

  • The filename may include the timezone information, check if it contains UTC+7, Pacific, etc.

  • Ultimately, you can contact the exchange's support team to ask.

My wallet is displaying a transfer but I am still seeing a small profit/loss:

This happens due to the transfer fees. It's especially clear when checking the "Cost Analysis" tab (available on our paid plans only):

You may choose to postpone realizing gains on transfer fees by toggling OFF Treat transfer fees as disposals in your Settings - if you do, all the transfer fees will be disposed (sold) only once the whole lot is completely sold, not immediately during every transfer.

However, the disposal of transfer fees can still create gains - see Why is there a profit/loss on Cost transactions for more information.

If you're interested to read more about the tax treatment of different fees, check our blog post How Crypto Fees Can Lower Your Tax Bill

Did this answer your question?