After months of wrangling, the US House of Representatives has passed a roughly $900bn (£660bn) package of pandemic aid, including direct payments for many Americans and support for businesses and unemployment programmes.
The money is set to accompany a bigger, $1.4tn spending bill to fund government operations over the next nine months.
Many Covid-19 relief programmes were set to expire at the end of the month.
About 12 million Americans were at risk of losing access to jobless benefits.
The Senate is expected to vote on the package later on Monday. It will then need to be signed into law by President Donald Trump.
But some lawmakers said they felt blind-sided by being asked to vote on a mammoth bill without even having a chance to read it.
At nearly 5,600 pages, the legislation was described by the Associated Press news agency as “the longest bill in memory and probably ever”.
One of the lawmakers who expressed displeasure was liberal Democrat Alexandria Ocasio-Cortez.
She tweeted: “Members of Congress have not read this bill. It’s over 5000 pages, arrived at 2pm today, and we are told to expect a vote on it in 2 hours.
“This isn’t governance. It’s hostage-taking.”
Conservative Republican Senator Mike Lee tweeted at her: “I agree.”
The stimulus includes one-off $600 payments to most Americans, and will boost unemployment payments by $300 per week, extending expiration dates for the jobless programmes until the spring.
It also contains more than $300bn in support for businesses, and money for vaccine distribution, schools and renters facing eviction.
The bill includes a provision to end surprise medical billing – where hospital patients get slapped with fees because they were treated by a doctor who was not covered by their health insurer. President Donald Trump has championed calls to end these stealth fees, which are one of the most unpopular pitfalls of the US healthcare system.
The deal was announced on Sunday by Senate Majority Leader Mitch McConnell, a Republican. “We can finally report what our nation has needed to hear for a very long time: More help is on the way,” he said.
House Speaker Nancy Pelosi and Senate Minority Leader Chuck Schumer, both Democrats, said the package delivered “urgently needed funds to save the lives and livelihoods of the American people as the virus accelerates”.
Lawmakers said the bill would send $600 per adult or child for individuals earning up to $75,000 or married couples earning up to $150,000, with families earning more receiving less.
The first cheques could arrive as soon as next week, Treasury Secretary Steven Mnuchin said.
The payment is half the amount that Congress approved for direct payments during the first round of pandemic relief last spring.
The bill does not include substantial aid to local governments, which had been a top priority for many Democrats. In exchange, Republicans agreed to accept a deal without legal protections for businesses from Covid-related lawsuits.
Mr Schumer said the package would “establish a floor, not a ceiling, for coronavirus relief in 2021”, and that Democrats would push for more aid after President-elect Joe Biden took office on 20 January.
Congress was expected to pass the bill by Friday, but negotiations continued through the weekend.
The delays led to concerns over whether the government would shut down without a spending bill. Washington has been operating on temporary funding since October, the start of the federal government’s financial year.
Economic analysts welcomed the deal, but have warned that it likely is too small and arrives too late to avert a slowdown in the recovery.
They have also expressed concerns that money devoted to the stimulus cheques – which some families are likely to save – takes away from other, more targeted programmes that might provide a more effective boost to the economy.
“Any Covid relief bill is better than no Covid relief bill, but the measures set to be passed by Congress … do not represent the most efficient use of the $900B total cost,” wrote Ian Shepherdson of Pantheon Macroeconomics.
However, on social media, many said the cheque should have been larger, saying $600 per person wasn’t large enough to help meaningfully.
“$600 will hopefully save some lives but we all know it’s just barely scraping by,” wrote one social media user in California.
“I’m so excited about the $600 stimulus checks I can’t even decide if I’m going to pay rent for the right side of my bedroom or the left!!!” Jack in New York joked.
“It’s infuriating to see what every other major country around the world had done for their citizens and our elected officials give us scraps,” another user commented.
Some also noted that many pandemic relief schemes have been plagued by fraud or delays in spending the money.
In March the US approved more than $2.4tn in economic relief, including one-off $1,200 stimulus payments, funds for businesses and money to boost weekly unemployment payments by $600.
The package was credited with cushioning the economic hit of the pandemic, which cast more than 20 million Americans out of work this spring and drove the unemployment rate up to 14.7% in April.
The US has regained about half of the jobs lost, but economists and businesses have been pushing Congress to approve further economic relief, as programmes expired and money ran out, prompting recovery to slow.
Nearly eight million more Americans are now living in poverty. This year has seen the biggest single year increase since poverty tracking began 60 years ago.