When looking at the [USD/BRL conversion rate](https://www.xe.com/currencyconverter/convert/?Amount=1&From=USD&To=BRL) I see a rate more or less 1 USD = ~ 3.90BRL. Then when I want to transfer my funds from my contractor (in USD) to my local account (in BRL), I wait for a day with bigger rate. 

But, by example, the site shows this rate like "1 USD = ~ 3.90BRL" and when ask the transfer, the rate is something like "1 USD = ~ 3.62BRL". 

My questions:

1. Why does this happen?
2. How can I know the correct (or best approximate) conversion rate?
['https://money.stackexchange.com/questions/98715', 'https://money.stackexchange.com', 'https://money.stackexchange.com/users/75994/']
> 
> Why this happens?
>  How can I know the correct (or best approximate) conversion rate?
> 
> 
> 

Most sites show the Mid-Rate. This is a notional rate. When you are buying or selling, you get a "Buy Rate" or "Sell Rate". The difference is the spread.

If you see the note on the site, just below the rate; it clearly calls out this is mid rate for reference and for actual rate sign in to the Account.

> 
> All figures are live mid-market rates, which are not available to consumers and are for informational purposes only. To see the rates we quote for a money transfer, please sign up or log in to your XE Money Transfer account.
> 
> 
>
Because there's is a difference between "Buy rate" and "Selling Rate" of a currency.
The spread in between 2 is the margin which money exchanger earns.
So, for example, a money exchanger buys 5 USD @ 70 INR/USD and sell USD @ 70.5 INR/USD, thereby making profit of 2.5 INR.
You need to see currencies as commodities to understand this concept.