India's original opposition for the series were Australia, but Shah said that was never finalised.
"We were in discussions with everyone, including Sri Lanka. We played against Australia (in Malaysia last year) so we thought we'll play against South Africa now," he told Reuters.
Shah said the dates have not been fixed yet, but would be in the last week of June.
India will also play Pakistan in a one-off, one-day match in Glasgow before heading for England in July for three Tests and seven one-day internationals.