On the night of April 8–9, 2026, the USITC published the largest single-night update to the Harmonized Tariff Schedule we have seen since TradeFacts launched. By 02:01 ET, our nightly ingest had processed 857 individual changes — the downstream result of two presidential proclamations strengthening Section 232 duties on steel, aluminum, and copper, both published in the Federal Register that same morning.

Here is exactly what changed, what it means for compliance systems, and how TradeFacts handled it.

857
Total changes
259
Chapter 99 changes
508
Ch. 72–76 changes
02:01
ET — live in API

What Changed in Chapter 99

Chapter 99 is the special provisions chapter — home to tariff surcharges, country-specific quotas, and duty exemptions. It does not represent physical products. Each code represents a provision: a condition under which special treatment applies. When a provision is terminated, the code is removed entirely. There is no zero-rate version to update; the code ceases to exist.

Last night, 242 codes in the 9903.80.xx and 9903.81.xx series were removed. These were product-specific Section 232 exemption codes — granular entries covering individual steel products by country of origin under quota arrangements that the new proclamation terminated or restructured. In their place, 16 new codes in the 9903.82.xx series were added, covering derivative copper and steel articles under a consolidated framework, including new Russia-specific and UK-specific provisions.

The 9903.01.xx IEEPA series — the Canada, Mexico, and China surcharge codes — were not affected. All IEEPA codes are intact.

What Changed in Chapters 72–76

The remaining 599 changes were modifications to base product codes in Chapters 72 through 76: iron and steel (72), articles of iron and steel (73), copper and articles (74), nickel and articles (75), and aluminum and articles (76). These chapters saw duty rate field updates reflecting the new Section 232 structure. 508 changes across five chapters in a single night is a significant data event by any measure.

Why This Is Hard to Catch Without a Nightly Diff

A rate change on a familiar code is straightforward — your cached value is wrong, your validation catches it, you update. The Chapter 99 restructuring is a harder class of problem. The 9903.80 and 9903.81 codes that anchored many Section 232 exemption workflows no longer exist. A system that checks for those codes returns no match, not an error. Silence is harder to detect than a failure.

If your system caches Chapter 99 lookups: last night’s update invalidated the entire 9903.80 and 9903.81 series. Any cached exemption logic referencing those subheadings needs to be re-evaluated against the new 9903.82 structure.

This is the pattern that makes tariff data management genuinely difficult in the current environment: the operative change is not a rate update on a familiar code. It is a wholesale replacement of one code series with another, published as 857 records in a nightly USITC diff at 2am.

The Federal Register Lead Time

TradeFacts runs a Federal Register monitor every four hours. Both source proclamations — FR Doc 2026-06960 (Section 232 steel/aluminum/copper strengthening) and FR Doc 2026-06956 (pharmaceutical tariffs) — were flagged within four hours of their publication on April 9.

For the Section 232 proclamation, the USITC processed the changes into the base HTS data the same night. For the pharmaceutical proclamation, the operative Chapter 99 codes are specified in Annex I — which is published as scanned TIFF images in the Federal Register rather than machine-readable text. That is a known gap we are actively working on closing via vision-based extraction.

The gap between a presidential proclamation and the USITC updating the HTS schedule is real and variable — days to weeks depending on complexity. The Federal Register monitor is built specifically around this lag: surfacing provisional rate information with full FR document provenance before the USITC update lands.

How TradeFacts Processed It

The nightly ingest ran at 02:00 UTC as scheduled. The diff engine compared the incoming USITC data against the live dataset, identified 857 changes, wrote a structured changelog with before/after values for each modified record, performed an atomic swap of the live data file, restarted the API, and completed validation — all before 02:02 UTC. API consumers had updated responses from the moment the US workday started.

Tier 3 and Tier 4 customers with registered webhooks would have received a payload listing all 857 changes with full before/after field data, delivered to their endpoint within minutes of the ingest completing. No polling, no manual check required.

Accessing the Data

The current Chapter 99 structure, including all new 9903.82.xx codes, is available now via the standard HTS endpoints:

# Look up a specific new Section 232 derivative steel code
curl "https://tradefacts.io/api/hts/9903.82.12" \
  -H "X-API-Key: your_api_key"

# Retrieve the full Chapter 99 to see current structure
curl "https://tradefacts.io/api/chapter/99" \
  -H "X-API-Key: your_api_key"

# Pull the change log to see last night's diff
curl "https://tradefacts.io/api/changes" \
  -H "X-API-Key: your_api_key"

The change log endpoint returns the most recent diff with timestamps, change types (added/removed/modified), and before/after field values for each record. For a night like last night, it is the fastest way to assess the scope of what changed and which of your cached codes need re-evaluation.

Stay Ahead of Nightly HTS Changes

TradeFacts delivers nightly diffs on the US HTS, Canadian Customs Tariff, and Mexico TIGIE — with webhook delivery and a Federal Register monitor for IEEPA and Section 232 actions. Free 30-day trial, no credit card required.

Request Trial Key