The EU has agreed to delay Brexit until 31 January 2020 at the latest, Donald Tusk has announced.
A “flextension” will be granted and “formalised through a written procedure”, the President of the European Council tweeted on Monday morning.
This means that if Boris Johnson manages to get his deal through parliament in less than three months, Brexit will happen earlier.
The prime minister asked for the delay after MPs forced his hand in a bid to avoid no-deal in just three days’ time.
Boris Johnson promised back in July: “There are no circumstances in which I will ask Brussels to delay – we’re leaving on 31 October. No ifs, no buts”.
The delay decision came after a meeting of EU27 ambassadors, and days of speculation over whether French President Emmanuel Macon would veto the idea.
MPs will vote on the PM’s push for a general election on Thursday 12 December. He needs two-thirds of their support to get.
Opposition parties said they were withholding their support until a Brexit delay was granted because of their fears over no-deal.
But the Liberal Democrats and Scottish National Party are backing a plan to hold an election on Monday 9 December.
The few days’ difference means Mr Johnson would not be able to try and get his Brexit deal through parliament before voters head to the polls.
Labour are still opposed to a pre-Christmas election, with shadow chancellor John McDonnell accusing some opposition parties of “selling out the People’s Vote campaign and the cross party campaign to prevent a no-deal”.