European Union leaders have struck a deal to give Ukraine a €90bn (£79bn; $105bn) loan after failing to agree on using frozen Russian assets.

The agreement, which leaders said would meet Ukraine's military and economic needs for the next two years, came after more than a day of talks at a summit in Brussels.

"We committed, we delivered," EU chief Antonio Costa wrote on X as he announced the deal to provide a loan backed by the bloc's common budget.

Ukrainian President Volodymyr Zelensky had urged leaders to use €200 billion of frozen Russian assets but Belgium, where the vast bulk of the cash is held, demanded guarantees on sharing liability that proved too much for other countries.

In another development, French President Emmanuel Macron said he believed it would be "useful" for Europe to re-engage with Russian President Vladimir Putin.