It varies from bank to bank.
For example, when I spend on my Standard Bank credit card, I get charged the banks rate and a fee for each transaction.
Some banks, like Capitec and some travel cards offer a “free transaction” on card swipes. It’s not free, of course nothing is, all that’s changing is their bank rate of the foreign currency conversion in the backend which includes their fees in their selling rate.
Banks obviously buy and sell currency for less and more Rands than we can. So they can factor in fees into their “bank rate”.
That said, the method used by Capitec and some global travel cards can work out cheaper for lots of transactions. Also by preloading a travel card like an FNB one you have a good way of tracking your balance and spend without constantly converting as the cards balance will be in your foreign currency once you load it.
I don’t bother I just travel with an American Express and 2 Visa cards one credit one debit. But that’s also because my company pays for most of it. I Have not had issues with them except Standard Bank who relentlessly like to block my cards for fraud despite me saying I’m traveling on the app …