Most South African teams pick an AI provider the way they pick a JS framework — whatever had the friendliest docs that week. Then six months in, someone in finance asks why the bill moved 14% without usage changing, or a client's legal team asks where the prompts go. Three questions are worth answering before you're locked in.
Latency: measure the right thing
The instinct is to reach for the nearest region. Johannesburg to Frankfurt or London is roughly 150–180 ms round trip; to US East, closer to 230–250 ms. In-country, single digits.
Whether that matters depends entirely on your call shape. A single generation streaming 800 tokens takes several seconds — 170 ms of network is under 5% of it, and no user will feel it. But an agent making twelve sequential tool calls pays that tax twelve times over, and a voice interface or an inline autocomplete is dead on arrival at 200 ms.
So benchmark time-to-first-token from your actual deployment, not ping from your laptop.
And note the trap: a provider being available in af-south-1 or South Africa North does not mean inference happens there. Bedrock's Cape Town region reaches the newest Claude models through global cross-region inference — your control plane and logs stay local while the request routes to wherever there is capacity. Azure's Global deployment types behave similarly, with data at rest staying in the geography while inference may be processed elsewhere. A local region gives you a local endpoint. It does not automatically give you local compute.
Rand pricing: separate the invoice from the exposure
Two different things get conflated here.
The first is what currency you are invoiced in. Hyperscalers with a local selling entity will invoice in rand with South African VAT, which your bookkeeper will appreciate and which makes the input VAT claim straightforward. The frontier labs' own APIs generally bill in USD, so you are adding card FX margin — typically 2–3% — on top of whatever spot does.
The second is exposure, and a rand invoice does not fix it. Those are still USD-denominated prices converted at invoice date. You have not hedged anything; you have moved where the conversion happens. If AI spend is material, treat it as a USD cost line and budget it as one. Model a 15% adverse move and check whether the unit economics still hold — over the last decade that has happened more than once.
Also worth checking: does the provider let you set hard spend caps? A hard limit is worth more than a marginally better per-token rate when the real risk is a runaway retry loop at 3am.
Data residency: POPIA is narrower than people think
POPIA does not require personal information to stay in South Africa. Section 72 permits cross-border transfer where the recipient is subject to comparable protection, or the data subject consents, or the transfer is necessary for performance of the contract. Most reputable providers' terms clear that bar.
What POPIA does require is a written operator agreement (section 21) and appropriate security safeguards (section 19). That is the actual work: get the DPA signed, confirm zero-retention or the exact retention window in writing, and establish whether your data trains anything. "It is in the Cape Town region" is not a compliance answer if nobody ever signed the operator agreement.
Where residency genuinely binds is sector rules. Financial services, health, and public-sector tenders often specify in-country processing contractually, regardless of what POPIA permits. If you are selling into those, the local-region question stops being about latency and becomes a procurement requirement.
A workable order of operations
Start with the constraint that is hardest to unwind. If a client contract mandates in-country processing, that eliminates most options before you compare anything else.
Then check whether the models you actually need are deployable in that configuration. Regional catalogues lag global ones by months, and the model you benchmarked may only exist behind a global endpoint.
Then benchmark latency against your real call pattern.
Price last. It moves constantly, and it is rarely the thing that breaks the deal.
