WASHINGTON — The House passed President Donald Trump’s massive tax package Thursday afternoon, marking a major victory for the Republican Party after months of grueling negotiations and an all-out pressure campaign to advance the president’s domestic agenda.
Lawmakers voted 218-214 largely along party lines to approve the flagship legislation extending Trump’s 2017 tax cuts and greenlighting billions of dollars in spending cuts to Medicaid and other welfare programs. The passage comes after a contentious overnight session as GOP leaders scrambled to flip roughly a half dozen Republicans who threatened to tank the measure, forcing the chamber into a standstill for several hours.
Only two Republicans voted against the bill: Reps. Thomas Massie, R-Ky., and Brian Fitzpatrick, R-Penn.
All four members of Utah’s delegation voted in favor of the budget framework.
On Friday, Trump signed the bill on the White House lawn, surrounded by the Republican lawmakers who helped make it happen.
Pressure campaign got bill through Congress
Shortly after the Senate passed the megabill on Tuesday, the House was called back from its originally scheduled holiday recess to vote on the measure.
Republican leaders released ambitious plans to begin voting at 9 a.m. on Wednesday — a timeline that unraveled as the day dragged on.
House Speaker Mike Johnson began the day with a daunting math problem as more than two dozen Republicans said they would oppose the Senate-passed bill if brought to the floor without major changes. Johnson also faced another looming challenge: The clock was running out for Republicans to meet their self-imposed deadline to have the budget framework passed and sent to Trump’s desk by the Fourth of July.
But after hours of negotiations and closed-door meetings — including two separate 5-minute votes that were left open for a combined 14 hours — Republicans managed to wrangle their most rebellious members into submission. And much of the credit belongs to Trump, who pressed his thumb on the scale up until the very last moment.
Speaker of the House Mike Johnson, R-La., talks with reporters at the U.S. Capitol, Thursday, July 3, 2025, in Washington. | Mariam Zuhaib
The finished bill caps off more than a year of planning for House Republican leaders and months of deliberation to finalize the spending package.
Republican leaders secure agreements with holdouts to get agenda across finish line
GOP leaders initiated a procedural vote on the budget framework shortly after 9 p.m. on Wednesday after hours of negotiations between rank-and-file members, White House officials, and Trump himself. Opening the vote was a critical step toward passing the bill as it determines the process for debate and final consideration. Without it, lawmakers cannot move forward with a piece of legislation.
Even then, the move was a gamble for Johnson as it wasn’t yet clear whether he had the votes. And minutes into the process, it became clear he still had work to do.
Five Republicans outright voted against the rule-setting procedure while seven others simply did not attend in rebellion against GOP leadership. Without their input, Democrats would have had the numbers to tank the bill altogether.
Rep. Ralph Norman, R-S.C., a member of the conservative House Freedom Caucus, speaks with reporters outside the House Rules Committee as they prepare President Donald Trump’s signature bill of big tax breaks and spending cuts to go to the House floor, at the Capitol in Washington, Tuesday, July 1, 2025. | J. Scott Applewhite
This led GOP leaders to launch a last-minute blitz to corner some lawmakers on the House floor to change their votes while also track down the members missing from the floor.
A majority of the Republicans who opposed the rule belong to the oft-contrary House Freedom Caucus who accused their colleagues in the Senate of making too many changes to the originally agreed-upon budget framework.
Freedom caucus members claim the Senate version of the bill violates an agreement struck by Johnson that would require deeper spending cuts to offset the cost of the $4.5 trillion in tax cut extensions, which acts as the core component of the reconciliation package. The deal would require a “$1 of tax cuts for $1 of spending cuts,” which caucus leaders argue was ignored in the latest version.
Johnson left the vote open for roughly six hours as he lobbied the holdouts. In the end, the speaker managed to flip four of the “no” votes and won over all seven of the missing members. Fitzpatrick was the lone no on the procedural vote.
The speaker won over the outstanding HFC bloc after securing commitments from the White House, including assurances about how the spending package would be implemented. Details of specific agreements are not clear.
But the conversations were enough to sway some of the most vocal critics who spent days railing against the bill and threatening to tank it altogether.
Senate Majority Leader John Thune, R-S.D., is flanked by Sen. John Barrasso, R-Wyo., the GOP whip, left, and Finance Committee Chairman Mike Crapo, R-Idaho, as he speaks to reporters after passage of the budget reconciliation package of President Donald Trump’s signature bill of big tax breaks and spending cuts, at the Capitol in Washington, Tuesday, July 1, 2025. | J. Scott Applewhite
Trump swoops in as ‘the closer’
It’s no secret the hold Trump has over the Republican Party. But that influence was on full display throughout Wednesday as the president came in at the last moment to, as many Republicans put it, “close the deal.”
“Donald Trump is a closer,” Rep. Dusty Johnson, R-S.D., who attended meetings at the White House meeting on Wednesday morning, told reporters. “Donald Trump is the best closer in the business, and we’re going to get it done.”
Those conversations were enough to turn the tide for dozens of Republicans initially hesitant to support the package, including Rep. Warren Davidson, R-Ohio, who was one of just two Republicans to oppose the spending bill when it first passed the House.
“There are things that I absolutely support the president on, and always have,” Davidson said on Wednesday after announcing he would vote for the framework. “I’ve talked with the president over the course of this year. I gotta say, you know, no one puts a deal together like President Trump. He’s a master.”
That pressure campaign continued even into the wee hours of Thursday morning as the president reportedly spoke with members by phone as well as sounding off against rebels in a flurry of social media posts.
“FOR REPUBLICANS, THIS SHOULD BE AN EASY YES VOTE. RIDICULOUS!!!” Trump wrote just after midnight as negotiations continued.
U.S. Capitol Police patrol the plaza as House Republicans work inside to pass President Donald Trump’s signature bill of tax breaks and spending cuts by a self-imposed Fourth of July deadline, at the Capitol in Washington, Wednesday, July 2, 2025. | J. Scott Applewhite