The Norwegian striker will join City from Borussia Dortmund in July after the Premier League champions activated a release clause in his contract.
Haaland passed his medical on Monday (11.05.22) and the deal means City have landed one of the most coveted players in the European game.
The club said: "We can confirm that we have reached an agreement in principle for the transfer of striker Erling Haaland.
"The transfer remains subject to the club finalising terms with the player."
City manager Pep Guardiola had strongly hinted that the Haaland deal was close to completion although he could not confirm it for legal reasons.
Speaking before the announcement, the coach said: "Borussia Dortmund and Manchester City have told me I am not allowed to say anything until the deal is completely done.
"I cannot talk. I am sorry. We will have time to talk.
"Everybody knows the situation. I shouldn't talk because I don't like to talk about the future or next season."
The move will end City's hunt to find a lethal striker and Guardiola thinks the team will improve as a result of the player's arrival.
He said: "New players always helps to be a stronger team. But not one defender or striker will solve our defensive or scoring problems.
"The club always has to have a vision for the future. The decisions the club makes I am aware and supportive of 100 per cent."