Koinly gets its prices from crypto price aggregators like CoinMarketCap and CoinGecko. The reason you might be seeing a discrepancy between your exchange price and the price on Koinly is quite simply because different exchanges may be trading at slightly different prices and data aggregators use the average price across multiple exchanges. Read more about how Koinly figures out the market prices.
Note that Koinly can fetch market rates directly from some exchanges such as Coinbase and Uphold as long as you connect your account via API.
You can also manually override the price that Koinly is using for any of your transactions by Editing the transaction and clicking on the change button next to the market price: