A club statement read: “Manchester City can confirm we have reached an agreement in principle with Borussia Dortmund for the transfer of striker Erling Haaland to the Club on 1st July 2022.
“The transfer remains subject to the Club finalising terms with the player.”
The Norwegian forward broke out at RB Salzburg before signing for Dortmund in 2020, going on to score 85 goals in 88 games for the Bundesliga club.
However, Dortmund were resigned to losing Haaland, 21, in the summer due to a release clause in his contract becoming active. Some reports suggest City will pay a fee as low as £51million for the player.
Real Madrid, Paris Saint-Germain and Manchester United have all been strongly linked with his services.
City boss Pep Guardiola strongly hinted at the deal moving forward when addressing the media ahead of the announcement on Tuesday.
“I would love to talk honestly but I can’t,” he told reporters.
“They told me not to say anything for the legal situation that is far away from my perspective. So we will have time to talk about that, not because I don’t want [to], because I can’t.”