Tournament organizers approved Tennis South Africa's request for the switch and says Canada will stage the matchup from Sept. 14-16. The venue hasn't been decided.
Canada captain Martin Laurendeau says his players are "thrilled" to be able to play in front of a home crowd.
"Fan support is a major advantage in Davis Cup ties and we know that with the recent rise of popularity of tennis in our country, we'll have great support," Laurendeau said in a release.
TSA says "current economic conditions" mean it won't be able to organize the tie.
The shift could yet favour South Africa with leading player and No. 35-ranked Kevin Anderson likely to be in North America for the U.S. Open, which ends on Sept. 9. Anderson has recently skipped Davis Cup duties at home.
The winner earns a place in the top World Group in 2013.