The Italian giants claim the deal has been done, though City sources say it will be completed on Wednesday once Balotelli has passed a medical.
AC Milan director Umberto Gandini has confirmed that the transfer fee has been agreed with Manchester City and once the medical is completed, the striker will sign a contract which keeps him at the club until 2017.
City had also been negotiating with Juventus, but AC Milan have it seems won the bidding after protracted haggling over the size of the fee for the 22-year-old.
The deal, provided it goes through, will bring to an end Balotelli's two-year rollercoaster at the Etihad.
Balotelli famously provided the crucial injury-time pass that set up Sergio Aguero for the dramatic Premier League title-winning goal against QPR last May.
That memorable afternoon came just five weeks after City boss Roberto Mancini said Balotelli would never play for City again after the striker was sent off at Arsenal.
Lapses in professionalism have been a characteristic of Balotelli's time with the Blues.
There have been numerous training ground bust-ups; only recently he had to be separated from his manager after he lunged in on Scott Sinclair.
Mancini has - for the most part - stood by the Italy international, who shone for his country in Euro 2012.
This season though he has barely featured, making just two substitute appearances since a dreadful performance against Manchester United at the beginning of December.