Separate from any bank charges, there are two exchange rates - Buy Rate and Sell Rate.
Today, most SA commercial banks are quoting as follows for ZAR-USD TT/ wire transactions under R50K:
Buy rate: 9.08
Sell rate: 9.50
The Buy Rate is typically reported in the SA media and many local websites, because in the old days we quickly wanted to convert gold price to Rand. It is the number of foreign currency units required to buy a Rand, though for historical reasons USD and Sterling and now also Euro quote this in ZAR units.
This means that if today you are converting US dollars into Rand you will get R9.08 for every US$.
The Sell Rate is the number of ZAR you have to "sell" to buy a foreign unit.
In our quoted rate above, it will today take R9.50 to buy US$1.00.
Many websites quote an average of Buy rate and Sell rate, a so-called midrate. It's a rough guide, and cannot be used for real world transactions, because that depends on which way you are converting.
There are many other factors that affect the actual rate you pay, such as payment method, size of transaction, period, standing or ad hoc, etc - normal business factors that affect the price of goods and services (the price of money is no exception).
I deal with this every day.
It never ceases to astonish me how many people in IT importation and distribution businesses fail to grasp even the basic forex issues when pricing.