ATM. And, in my experience with my US bank/card issuer and it's forex rates, DO NOT accept the on screen offer from whatever SA-atm you use to use their conversion of the amount of rand you're requesting be converted into your "home" currency (in my case, dollars) and withdraw that amount (again in my case, dollars) from my bank. The rates offered by the SA-atm have always been poor compared to my my US bank/card issuer and it's forex rates.
Also, mybe its been going on for a while, but Ive noticed more and more atms in SA charge a fee (in ZAR) to make a withdrawal. Maybe it's just the one's I've visited lately. For me the fee has been low enough in ZAR to not notice. YMMV. And, I have literally, gone from bank A's SA-atm to bank B's SA-atm right next to it and not had to pay the fee.