The Senate voted 86-13 for the sweeping bill on Thursday. The bill would authorize money for military personnel, weapons systems, the wars in Afghanistan and Iraq and national security programs in the Energy Department. The House had voted 283-136 for the measure Wednesday night.
The legislation is $27 billion less than Obama wanted for the Pentagon and other accounts.
The White House initially threatened a veto but dropped that warning, saying last-minute congressional changes no longer challenge the president's ability to prosecute the war on terror.