The US Senate has approved a long-awaited $95bn (£75.2bn) aid package for Ukraine, Israel and Taiwan after months of political wrangling.
While Democrats were in favour of passing the bill, Republicans were divided and previously voted it down.
The package includes $60bn for Kyiv, $14bn for Israel's war against Hamas and $10bn for humanitarian aid in conflict zones, including in Gaza.
The bill will now go to the House, where its fate remains uncertain.
The package, which also includes more than $4bn in funds for Indo-Pacific allies, passed the Senate despite criticism from Republican House Speaker Mike Johnson and former President Donald Trump.
Lawmakers voted 70 to 29 to approve the package. In the end, 22 Republicans joined most of Democrats to vote for the legislation, including Senate Minority Leader Mitch McConnell.
"History settles every account," Mr McConnell said in a statement following the vote. "And today, on the value of American leadership and strength, history will record that the Senate did not blink."
Ukraine's president also said he was "grateful" to senators for passing it.
"For us in Ukraine, continued US assistance helps to save human lives from Russian terror. It means that life will continue in our cities and will triumph over war," Ukraine's President Volodymyr Zelensky wrote in a post on X, formerly known as Twitter.
The vote came after an all-night Senate session during which several Republicans made speeches criticising the measure.
Consideration of the bill dragged on for days, as a group of right-wing Republicans led by Senator Rand Paul of Kentucky vowed to slow down the process.
"Shouldn't we try to fix our own country first?" he said on the floor on Monday as he began filibustering the bill.
Some progressive lawmakers, including Democrat Jeff Merkley of Oregon and independent Bernie Sanders of Vermont, also voted against the bill over concerns about supporting Israel's bombing of Gaza.
The aid package is a stripped down version of a $118bn package that Senate Republicans voted down last week.
Republicans had initially demanded that any foreign aid be tied to more security measures at the southern border. But after Mr Trump came out against the measure, Republicans were divided on the package.
Some lawmakers suggested that border security measures could be added back into the current version of the legislation.
Mr Johnson suggested in a statement on Monday night that the new bill would not pass the Republican-controlled House without such provisions.
"House Republicans were crystal clear from the very beginning of discussions that any so-called national security supplemental legislation must recognise that national security begins at our own border," he said.
Mr Johnson said lawmakers "should have gone back to the drawing board" with the legislation to focus on border security provisions.
Democratic Senate Majority Leader Chuck Schumer, meanwhile, hailed the passage of the bill on Tuesday. He said the Senate was "telling Putin he will regret the day he questioned America's resolve".
The US is one of the largest providers of aid to Ukraine. The White House asked Congress months ago to pass a bill that included foreign aid.
This could be Congress's last shot at passing Ukraine aid for the foreseeable future, and Ukraine has warned that it may not be able to successfully defend itself against Russia without Washington's backing.