The agreement includes a 10% sell-on clause for City, according to the sources. Sane, who is expected to be in Germany for a medical on Wednesday, won't be eligible to play for Bayern until next season but will not play for City again.
After City's attempts to tie Sane down with a new contract were rejected by the winger, Bayern have swooped to take the 24-year-old back to the Bundesliga.
Sane had one year left on his deal at the Etihad Stadium and City have opted to cash in instead of losing the German international for free in 12 months.
He has been limited to just one Premier League appearance this season after suffering a knee ligament injury in the Community Shield against Liverpool in August.
Sources have told ESPN that Bayern will pay around €49 million up front with an additional €11 million in add-ons. Sane is expected to sign a five-year deal.
Sane arrived at City from Schalke in a £37 million deal in 2016 and has made 135 appearances in four seasons, scoring 39 goals.
He won five major trophies at the Etihad, including the Premier League title in 2018 and 2019. Sane was also named PFA Young Player of the Year in 2018.