If you are seeing a profit or a loss on a transaction that looks like the one in the above screenshot then it's because Koinly thinks that this is a payment/sale and not a transfer!
Here's what transfers look like:
Transfers have the double right arrow sign and you can clearly see the receiving and sending wallet names on them.
So, why can't Koinly detect that it is a Transfer?
This usually happens because one side of the transfer has the wrong date. In order for Koinly to match transfers, they have to obey the rules for auto-matching.
Basically, the "send" transaction should happen before the "receive" transaction. After all, you can't really receive coins before you send them, right?
If you added the transaction manually then simply change the date by editing it and Koinly will take care of the rest.
However, if you used a CSV file then you will need to change the date for all transactions that were added from it - which could take a really long time if you had many - so here's what you should do if you imported a csv with the wrong dates:
Figure out which timezone the dates are in (read our tips in the next section)
Delete the wallet you had imported the csv file to
Create a new wallet and select the CSV file import option
Upload the csv file but make sure you click on More options > Timezone and set the correct timezone there.
If you have found the right timezone then Koinly will now import the transactions with the correct date and time and will be able to auto-match all your transfers.
Example: if you transferred 1 BTC from Coinbase to Bitfinex at 1/1/2019 14:00 UTC and imported the Bitfinex transactions using a csv file that contained a non-UTC time ex. 1/1/2019 11:00 (UTC-3) but without the timezone information, then Koinly will assume the transaction happened at 1/1/2019 11:00 UTC and so you would have a Withdrawal from Coinbase at 1/1/2019 14:00 UTC and a Deposit into Bitfinex at 1/1/2019 11:00 UTC. This means the transaction can't be auto-matched. Read about how auto-matching works on Koinly.
How to find the timezone for CSV files
Open up the CSV files that you imported and try to figure out which timezone the dates are in.
Most csv files will use your local timezone or the timezone for the country where the exchange is based.
You can also look up a transaction on a block explorer to see what time it actually occurred on and use that to figure out the time difference between your csv file and the actual time.
Look at the filename, does it contain something like "+7 UTC" or "Pacific Time" etc?
Contact the support team for the exchange and ask them.
My wallet is displaying a transfer but I am still seeing a small profit/loss:
This happens due to the transfer fees. In your settings, you will find an option called 'Treat transfer fees as disposals'. If this setting is turned on, then your transfer fees will be treated as expenses and any potential gains will be realized.
For more info on this, see Why is there a profit/loss on Cost transactions.
For more info on the treatment of transfer fees, see this blog post.