"I always wanted to play some rugby abroad and experience a different lifestyle and now have the opportunity to go and do that," said Steyn, 29.
"They have been negotiating with me for a while now and I have decided not to accept the offer from the Bulls to extend my contract but rather join Stade."
Bulls coach Frans Ludeke said Steyn was leaving on good terms with the club.
"He will be missed as he is a world-class player but I know that he will still be giving us 110 percent until the end of his term."
Steyn has played 42 Test matches for South Africa and scored 486 points. He has played Super Rugby since 2003.