The trade relationship between the United States and Canada — long considered the most stable bilateral trade corridor in the world — has entered a period of sustained disruption. For most people, this is a news story. For engineering teams maintaining trade compliance software, it is an operational problem that lands directly in their codebase.
This post explains what is happening, what has changed in the tariff schedules as a result, and what engineering teams need to do about it.
What Is Actually Happening
The current escalation traces to US Section 232 actions on steel and aluminum, expanded and reapplied in 2025. Canada, which ships significant volumes of both commodities south, responded with retaliatory tariffs on a specific list of US goods. The US countered. The result is a layered structure of additional duties sitting on top of baseline HTS rates that had been stable for years.
This is not a clean on/off switch. The additional duties have been applied, suspended, modified, and reapplied on different product categories at different times. Section 301 actions against China, running in parallel, have created additional complexity because some goods flow through Canada and are subject to both regimes depending on origin determination.
What This Does to the HTS Schedule
The Harmonized Tariff Schedule does not change as frequently as trade policy does — but tariff actions are reflected in the schedule through additional duty columns, chapter notes, and statistical reporting numbers. Here is what has been moving:
- Chapter 72 (Iron and Steel) and Chapter 76 (Aluminum): Additional duty columns and footnotes have been updated multiple times. Any application parsing these chapters for rate information needs to account for which additional duties apply, not just the base MFN column.
- Chapter 99 (Special Classification Provisions): This is where Section 232, Section 301, and other special tariff provisions live. It is the most volatile chapter in the schedule. It references codes in other chapters and changes frequently without advance notice.
- Statistical suffixes: New reporting requirements tied to Section 232 exclusion tracking have added or modified statistical suffixes in affected chapters. If your system ingests HTS codes at the 10-digit level, these changes matter.
The Engineering Problem This Creates
You don't know when Chapter 99 changed
USITC publishes updates to the tariff schedule, but there is no structured notification mechanism. You find out by checking. If your pipeline runs weekly or monthly, you may be serving stale duty rates for weeks after an update. In a period of active policy changes, that window matters.
The schema is not stable across updates
USITC has shifted field names and data structures in their published files across different schedule revisions. A pipeline that parsed cleanly against a six-month-old file may fail against the current one. This has happened in both 2024 and 2025 releases. Teams that had not built defensive parsing discovered it when their jobs started failing silently.
Chapter 99 is structurally different from the rest of the schedule
Most HTS chapters follow a consistent product hierarchy. Chapter 99 does not. It is organized around trade actions, not products, and its entries reference heading ranges in other chapters rather than describing goods directly. Many ingestion pipelines handle it incorrectly or skip it entirely — missing the additional duty layer entirely.
Rate calculation requires combining multiple sources
The effective duty rate on a given HTS code is not a single field. It is the base MFN rate, plus any applicable Section 232 additional duties, plus any applicable Section 301 additional duties, minus any exclusions that may apply. Getting this right requires correctly parsing Chapter 99 and cross-referencing the applicable action notices.
What Engineering Teams Should Do Now
Verify your Chapter 99 coverage
Query your own system for a few HTS codes in Chapters 72 and 76. Check whether the result includes applicable Section 232 additional duties. If it returns only the base MFN rate, your pipeline has a gap with direct compliance implications for your users.
Check your update frequency against the policy change cadence
HTS updates related to ongoing trade actions have been happening on a faster cycle than in stable periods. A monthly ingestion schedule adequate in 2022 may leave your application serving incorrect data for weeks at a time in 2026. Consider whether nightly ingestion is warranted for affected chapters.
Build change detection, not just ingestion
Knowing that the schedule updated is more useful than knowing you ran your pipeline. A diff against the prior version tells you which codes changed, which chapters were affected, and whether Chapter 99 moved. A pipeline that simply overwrites the previous dataset tells you nothing actionable.
Note on Canada: The Canadian Customs Tariff is maintained separately by the Canada Border Services Agency and has its own structure, update cadence, and classification system. For goods crossing the US-Canada border in either direction, both schedules are operationally relevant. TradeFacts.io is building Canada Customs Tariff support — that feature is on the roadmap and will be announced when it ships.
The Broader Point
The 2025–2026 US-Canada tariff situation is not an isolated event. It is an example of the general condition of trade policy: it changes faster than most engineering teams have planned for. The pipelines built against a stable tariff environment have structural assumptions baked in — update frequency, schema consistency, Chapter 99 handling — that are now exposed.
Teams that built defensively are watching the news and checking their dashboards. Teams that did not are finding out the hard way.
TradeFacts.io serves the full US HTS schedule as a normalized JSON API with nightly updates, stable schema, and change detection. When USITC publishes an update, we absorb the schema changes and your integration keeps working. The /changes endpoint returns a full diff of what moved and when. Tier 2 includes webhook delivery so you don't have to poll.
Stop maintaining a scraper. Start a free trial.
30-day free trial, no credit card required. Full HTS dataset, nightly updates, change detection included.
Request API Access