US President Donald Trump will impose tariffs on Saturday of 25% on Mexico, 25% on Canada, and 10% on China, says the White House.
But Trump said that Canadian oil would be hit with lower tariffs of 10%, which could take effect later, on 18 February.
The president also said he planned to impose tariffs on the European Union in the future, saying the bloc had not treated the US well.
White House press secretary Karoline Leavitt said the Canada and Mexico duties were in response to “the illegal fentanyl that they have sourced and allowed to distribute into our country, which has killed tens of millions of Americans”.
Trump has also repeatedly said the move was to address the large amounts of undocumented migrants that have come across US borders as well as trade deficits with its neighbors.
Ms Leavitt told a news briefing at the White House: “These are promises made and promises kept by the President.”
China, Canada, and Mexico are the top US trading partners, accounting for 40% of the goods imported into the US last year, and fears are rising that the new steep levies could kick off a major trade war as well as push up prices in the US.
Canadian Prime Minister Justin Trudeau said: “It’s not what we want, but if he moves forward, we will also act.”
Canada and Mexico have already said that they would respond to US tariffs with measures of their own, while also seeking to assure Washington that they were taking action to address concerns about their US borders.
Around 40% of the crude that runs through US oil refineries is imported, and the vast majority of it comes from Canada.
On Friday, Trump agreed tariff costs are sometimes passed along to consumers and that his plans may cause disruption in the short term.