What landed cost means for a product you sell in the US, and how to work it out
Landed cost is what 1 unit of a product has cost you by the time it is yours to sell. It is the number your price has to clear, and for anything you import into the US it has a part that moves on its own. The product price is in a contract. The freight is on an invoice. The duty is set by a tariff schedule that changed 3 times in the last 6 months, and it changes the landed cost of goods already on the water.
What counts in landed cost?
Four things: the price you paid the supplier for the unit, the freight and insurance to bring it to the US, the import duty and fees charged at the border, and any brokerage. The first 2 you know when you order. The last 2 you find out at entry, and the duty is the one that can be 0 or 50% of the unit price depending on where the goods were made and what has happened in Washington since you last looked.
This page works the duty part, because it is the part a seller can get badly wrong from a desk. Freight and brokerage are on your invoices and you should add them to every figure below.
How is US import duty on a product worked out?
Every product has a tariff line, a 10 digit code in the Harmonized Tariff Schedule. The duty on it is built in 3 steps.
First, the base rate, from the general column against that line. Second, the trade-action layers: the extra duties the US has put on particular countries or programmes, which live in chapter 99 of the schedule and are filed by programme rather than next to the product, so you have to know to look. Third, and this is the step almost nobody takes, leave out the layers the schedule still prints but that are no longer collected, which it does not mark. There is a worked example of a single rate that shows each step with the evidence.
A worked example: 1 kettlebell, 4 countries of origin
The example is a kettlebell because I have imported them. Tariff line 9506.91.00, exercise equipment. The base rate in the general column is 4.6%, and the line is Free under the US-Mexico-Canada Agreement for goods that qualify. Suppose the unit costs you $20 from the supplier and you sell it for $49. On 6 September 2026 this is what the duty does to it.
| Made in | Base | Layers on top | Effective duty | Landed cost, $20 unit | Margin at $49 |
|---|---|---|---|---|---|
| United States | none, not an import | none | 0% | $20.00 | 59% |
| Vietnam | 4.6% | +12.5% (9903.05.84) | 17.1% | $23.42 | 52% |
| China | 4.6% | +12.5% (9903.05.31) and +7.5% Section 301 (9903.88.15) | 24.6% | $24.92 | 49% |
| Canada, USMCA claimed | Free | +50% Section 338 (9903.03.14) | 50% | $30.00 | 39% |
The same kettlebell, the same price, and 20 points of margin between the best origin and the worst. The Canadian row is the one to sit with. The base duty is Free because the agreement says so, and the 50% lands on top anyway, because the Section 338 proclamations apply whether or not the goods qualify under USMCA. A Canadian kettlebell that does not qualify pays the 4.6% as well, for 54.6% and a landed cost of $30.92.
The layers, read from the schedule on 6 September 2026: 9903.05.84 and 9903.05.31 each read "the duty provided in the applicable subheading + 12.5%"; 9903.88.15 reads "+ 7.5%"; 9903.03.14 reads "+ 50%". The general column against 9506.91.00 reads 4.6%, special column Free for S among others. Margins are (price less landed cost) over price, rounded to the whole point.
Why can I not just read the rate off the tariff schedule?
Because the schedule is a record of what has been written, and what you are charged is a different thing in both directions at once. It still prints duties that a court struck down in February 2026, with nothing against them to say so, and a seller adding up the column against a Chinese product gets a number tens of points too high. And a new duty can be in force before its heading is published at all: the 50% on Canadian goods took effect on 19 August 2026, and its headings did not appear in the schedule for 5 days after that. In that window a careful reading of the schedule gave a Canadian rate 50 points too low, with nothing on the page to say it was missing anything.
The only defence I know is to read the schedule again, often, against the evidence for what is actually collected, and to keep the working next to every number so that when a rate moves you can see which layer moved it.
How do I keep it current without doing this by hand?
I build a Shopify app called Duty Diligence that does the duty part of this page for every product in a store, from the cost, HS code and country of origin already kept in Shopify. It reads the tariff schedule again twice a day, works each rate out 2 independent ways and marks it verified only when the 2 agree, leaves out a layer only on documented evidence that it is no longer collected, and opens every rate to its working. The landed cost it shows is the unit cost plus the duty on it, exactly as in the table above; freight and brokerage are yours to add, because Shopify does not hold them. The margin snapshot is free and needs no card.
I would rather you had the number with its working than took my word for it, which is why every figure on this site says where it came from and when it was checked. If a rate on your own products looks wrong, I want to hear about it.
Sources, all read on 6 September 2026: the current US tariff schedule at hts.usitc.gov, HTS 2026 Revision 18, for line 9506.91.00 and headings 9903.05.31, 9903.05.84, 9903.88.15 and 9903.03.14; the Section 338 proclamations in the Federal Register of 23 July 2026 (2026-14991, 2026-14992, 2026-14997). Rates are informational estimates from published sources, not customs, legal or financial advice, and the right classification of your own goods is a judgement this page does not make.