The Bundesliga champions will pay an initial fee of about £44.7m (€49m) for the 24-year-old, while add-ons could increase it by £10m.
Sane has reportedly agreed a five-year deal in Germany until 2025.
City boss Pep Guardiola had previously admitted the winger wanted to leave the Etihad and had turned down a new contract.
"When we make an offer to a player it's because we want him," the Spaniard said earlier in June.
"He has special quality. We want players who want to play with the club to achieve targets. He is a nice guy and I love him so much. I have nothing against - but he wants another adventure."
Sane picked up a serious knee injury in August's Community Shield and only returned to action as a substitute in City’s 5-0 win over Burnley last week.
Despite the surprisingly low fee – roughly half of the €100 million quoted last summer – it is still expected to be the second most expensive transfer in Bundesliga history.
Sane joined City from Schalke in August 2016 for a reported £37 million with performance-related add-ons.
The winger, who has 39 goals and 45 assists in 135 appearances in all competitions for City, was an integral part of their league title winning squads in 2017-18 and 2018-19.