After 35 days, he backed a deal to fund federal agencies for three weeks, but it includes none of the money he has demanded for a US-Mexico border wall.
The Republican president previously vowed to reject any budget unless it included $5.7bn (£4.3bn) to fund his signature campaign pledge.
But Democrats, who control the House of Representatives, flatly refused.
Later on Friday, the Senate and House unanimously passed a bill to temporarily end the shutdown, after which President Trump signed the bill into law.
Following the votes in Congress, Mr. Trump tweeted that his decision had been “in no way a concession”, but was “”taking care of the millions of people who were getting badly hurt by the shutdown”.
Speaking in the White House Rose Garden, Mr. Trump said he was “very proud to announce” the agreement, which will fund the government until 15 February.
He said federal workers affected by the political imbroglio, whom he called “incredible patriots”, would receive full back-pay.
Mr. Trump also said he would not yet resort to “a very powerful alternative” – an apparent reference to declaring a national emergency.