Leroy Sane has completed his £54.8m transfer from Manchester City to Bayern Munich.
The Germany international passed the second part of his medical on Thursday morning, before returning to Bayern's training centre to finalise his move.
Bayern apologised to Manchester City following the publication of photographs showing Sane as their player, before the transfer had been officially announced, but the 24-year-old has now signed a five-year contract.
The Bundesliga champions will pay an initial fee of £44.7m (€49m) with a series of performance and trophy-related add-ons.
City will also take 10 per cent of any profit made by the German club should they sell Sane in the future.
"FC Bayern is a great club with big goals - and these goals suit me as well," said Sane. "I'm looking forward to the new challenge and can't wait to train with the team.
"I know Hansi Flick from the U21 national team, we had a very good relationship there.
"I want to win as many trophies as possible with FC Bayern, and the Champions League is the top priority."
Sane had continually been linked with a move back to his homeland, which has seen City give up almost any hope of negotiating a new contract after nearly two years of talks.
It is believed the winger will double the wages he was being offered by City to stay at the club with Bayern set to pay the player around £20m per year.
Bayern board member for sport Hasan Salihamidzic said: "We're delighted Leroy is to be a Bayern player.
- £18 Premier League and Football channel offer
- Watch 39 Premier League & 45 EFL games exclusively live
"Leroy is a difference-maker and will strengthen our team with his quality. With Serge Gnabry, Kingsley Coman and Leroy, we're now even better equipped at a very high level in the wide positions that are important for our game.
"I would like to thank Manchester City for the trusting and constructive negotiations."
Sane, who joined City from Schalke for £37m in 2016, missed the majority of this season with a torn anterior cruciate ligament, which he suffered in the Community Shield win over Liverpool in August.
He made his return last month in Manchester City's 5-0 win over Burnley, the last of his 135 appearances for the club.
Sane scored 39 goals for City and won two Premier League titles, two Carabao Cups, one FA Cup and two Community Shields.
"We wish Leroy all the best in this new chapter of his career," said City manager Pep Guardiola.
"Leroy has been part of one of the most special periods in this club's history and he leaves with the best wishes of everyone here at Manchester City."