Changelog

Changes to the tariff data we serve, the government notices we read, and what shipped in the API, newest first. Data changes and notices marked "Affects our rates" change what the API returns; API changes are releases. Current API version v1.

Data change USITC

Section 232 pharmaceuticals now show the patent condition

From September 29, 2026, the Section 232 duty on the pharmaceutical provisions listed in U.S. note 40(c) depends on whether the article is a patented or a generic pharmaceutical (Proclamation 11020, as amended by Commerce's notice of September 23, 2026). Patented articles enter under heading 9903.04.60 (100% including the column 1 rate), 9903.04.62 (15% including the column 1 rate, for Japan, the European Union, South Korea, Switzerland and Liechtenstein) or 9903.04.63 (no additional duty, for the United Kingdom). Generic articles enter under 9903.04.67, with no additional Section 232 duty.

Patent status, Orange Book or Purple Book listing and the FDA approval pathway are not part of an HTS code or a country of origin. We were returning the patented rate as if it were certain. On these provisions the API now returns both cases in `rate_conditional`, `patented` and `generic`, each with the heading it enters under, its Section 232 rate, and the other duties it owes or is relieved of. That last part matters: on some provisions the Section 301 forced-labor duty, and the Brazil duty, are lifted only for patented articles, so the two cases can differ by more than the Section 232 rate.

If you read only the total: on these provisions it is now empty, with `summary.total_declined_reason` set to `scope_attribute` and the `SCOPE_ATTRIBUTE_REQUIRED` warning, unless both cases owe the same amount. Where they do, the total is stated as before, at full confidence, with `rate_conditional` still attached. Confidence on the other lines is 0.8.

Nothing changes before September 29, 2026, or on provisions outside note 40(c).

Effective September 29, 2026 Official source (opens in a new tab)

Data change Federal Register

Brazilian heavy drones: 25% Section 301 duty now added on top of the Section 232 drone duty

From September 3, 2026, heavy unmanned aircraft from Brazil under subheadings 8806.24.00, 8806.29.00, 8806.94.00 and 8806.99.00 owe the 100% Section 232 duty under heading 9903.08.21 and, on top of it, the 25% Section 301 duty on Brazilian goods under heading 9903.05.01. U.S. note 50 to chapter 99 relieves the Brazil duty only for goods under a closed list of Section 232 headings, and 9903.08.21 is not on that list. Until October 4, 2026 our responses for these four subheadings from Brazil left the 9903.05.01 duty out and named heading 9903.05.07 as relieving it, giving a total of 112.5% where 137.5% applies: 25 percentage points too low. Since October 4, 2026 they return 137.5%: Free under column 1, 100% under 9903.08.21, 25% under 9903.05.01 and 12.5% under 9903.05.27. If you entered these goods from Brazil between September 3 and October 3, 2026 using our figure, check the Section 301 line. This correction covers these four subheadings from Brazil only.

Effective September 3, 2026 Official source (opens in a new tab)
Data change Federal Register

Canada: alcoholic beverages, dairy-list products and motorcycles over 800 cc excluded from importation from 2026-09-29

Proclamations 11061, 11062 and 11063 exclude from importation into the United States products of Canada under 68 tariff provisions, for goods imported on or after 12:01 a.m. eastern time on 2026-09-29: 53 alcoholic-beverage provisions (beer, wine, cider and spirits), 14 dairy-list provisions (whey under 0404.10, molasses and syrups under 1702.90.35 and 1703, and non-alcoholic beer under 2202.91.00), and motorcycles over 800 cc under 8711.50.00.

For a query on these lines with origin CA dated 2026-09-29 or later, the API previously returned the 50% duty as a payable total, with no warning. It now returns no total: summary.total_declined_reason is "import_prohibited", the response carries an IMPORT_PROHIBITED warning at error severity, and a new import_prohibition block names the proclamation and its Federal Register citation (91 FR 58311, 91 FR 58319 and 91 FR 58325). Confirmed on production on 2026-10-04.

The 50% duty still applies to goods imported before 2026-09-29 and entered for consumption, or withdrawn from warehouse for consumption, on or after that date (clause (2) of each proclamation). A query carries an entry date, not an import date, so rate_conditional lists both cases. On 28 of the 53 alcohol provisions the exclusion reaches only product packaged in bottles, cans, boxes, kegs or similar direct-to-consumption containers; bulk product on those lines keeps the 50% duty, and rate_conditional lists that case as well.

Queries dated before 2026-09-29, and goods of any other origin, are unchanged.

Effective September 29, 2026 Official source (opens in a new tab)
Data change Federal Register

New zero-duty heading for pharmaceuticals used in clinical trials and research

Commerce corrected the Section 232 pharmaceutical tariff schedule from September 29, 2026. Pharmaceutical articles and ingredients used solely in clinical trials, research and development, or other non-commercial applications now have their own heading, 9903.04.70, with no additional duty. Unpatented animal health products now count as generic, so heading 9903.04.67 applies to them with no additional duty, and heading 9903.04.69 now also covers pharmaceutical articles that are neither patented nor generic. Commerce also published the jurisdictions eligible for the zero rate under heading 9903.04.66. The 100% and 15% rates are unchanged. Since October 2, 2026, our responses for all 149 covered pharmaceutical provisions describe these reliefs; before that they listed the reliefs as they stood before the correction. Each relief depends on whether the product is patented or how it will be used, which an HTS code and origin cannot show, so the full rate applies unless the importer claims one.

Effective September 29, 2026 Official source (opens in a new tab)
Data change Federal Register

Section 232 autos: Japan, EU and South Korea passenger cars capped at 15% all-in, light trucks get no add-on

Passenger vehicles and light trucks from Japan, the 27 European Union member states and
South Korea fall under their own Section 232 headings (U.S. note 33, headings 9903.94.40
to 9903.94.61), not the general 25% autos duty under 9903.94.01. Where the column 1 rate
is below 15%, the total of column 1 and the Section 232 duty is 15%. Where column 1 is
15% or more, as for light trucks, no Section 232 duty is added.
Electric goods vehicles under 8704.60.00, which U.S. note 38 also lists as medium and
heavy trucks, keep the 25% Section 232 duty for now.

We were applying the general 25% to these vehicles instead. A Japanese or EU passenger car
at a 2.5% column 1 rate showed 27.5% where 15% is owed; a South Korean car (free under
KORUS) showed 25% where 15% is owed; a Japanese, EU or Korean light truck showed 50% where
25% is owed. From 2026-10-02, the API returns the capped figure.

The caps apply to entries on or after 2025-09-16 for Japan (90 FR 44638), 2025-08-01 for
the European Union (90 FR 46136) and 2025-11-01 for South Korea (90 FR 55964). Queries for
earlier dates keep the 25% duty.

API change

The Terminal has a home page at /tariff-terminal

The Terminal is a single dense screen for the lanes you import: the fully stacked duty on a lane today, how that rate moved over the past year, your watchlist as a grid, and one HTS code compared across every origin we model. There is now a page explaining it at tariffsapi.com/tariff-terminal. The Terminal itself is in private beta while we finish it, so the page tells you how to request access rather than promising it is already in your plan.

API change

Brazil guide corrected: 24 July is a step up, not a step down

Our Brazil Section 301 importer guide said that from 24 July a Brazilian line costs base plus 25 percent, because the Section 122 surcharge sunsets that day. That was wrong. A second Section 301 leg, the forced-labour duty under heading 9903.05.27, takes effect the same day. Measured across seven Brazilian lines, every one that owes duty rises by 2.5 points rather than falling by ten. Ceramics go from 44.8 to 47.3 percent, footwear from 55.0 to 57.5. The guide has been corrected throughout, including the summary that restated the error. If you priced a shipment landing on or after 24 July using that guide, the duty was understated.

API change

Per-unit duties quoted as zero on 92 tariff lines

Some tariff lines carry a duty per unit rather than a percentage, for example a fraction of a cent per kilogram on bulk agricultural goods. Our calculator and the get_by_hts MCP tool were reading a stored figure that had been rounded to two decimal places, so any rate below half a cent became zero. On 92 lines this meant a quoted duty of nothing where duty was owed. The API resolve endpoint was not affected; it already read the unrounded value. Both surfaces now read the same figure the resolver uses. If you priced a shipment on one of these lines through the calculator or the MCP tool, the duty figure was understated.

API change

Status page briefly reported 293 failing tariff checks

On 10 September our public status page reported 293 critical tariff regressions failing, for about 40 minutes. No rate was wrong at any point and no API response was affected. An internal check lost its database connection partway through and recorded all 366 of its checks as failures, and the page published that count. A run that cannot reach the database is now refused rather than recorded, and the page reports the run as inconclusive instead of showing a number.

Data change

Unmanned aircraft (8806): two possible Section 232 duties, no single total

For six unmanned aircraft subheadings (8806.21, .22, .23, .91, .92 and .93) from any origin other than the United States, the Section 232 duty depends on whether the aircraft carries thermal imaging: 100% if it does, 25% if it does not. These are Section 232 rates and they apply on top of the other duties already owed on the line. Nothing in the HTS code, the origin or the entry date distinguishes the two cases, so we previously returned a single figure, which understated the duty owed in both of them. We now return both rates as alternatives, decline to state a single total, and flag the response with SCOPE_ATTRIBUTE_REQUIRED. If your integration reads only the total, these lines will now come back without one: read the alternatives and the flag instead. The underlying measures took effect on 3 September 2026 under Proclamation 11055.

Effective September 3, 2026

API change

confidence now drops when a measure is uncertain or the lane has a known gap

A measure could say uncertain: true, and the response could carry a REGRESSION_KNOWN_FAILURE warning, while confidence.score still came back 1.0. The score only ever reacted to an unknown effective date; a low-confidence parse, a bare-heading match, and our own regression corpus flagging the lane never touched it.

Two changes. data_completeness now scores 0.9 whenever an applied measure is flagged uncertain for any reason other than its date (the reason string names the Chapter 99 codes), keeping the existing 0.95 step for an unknown effective date. And a sixth factor, known_regression, scores 0.8 when the HTS/origin pair carries a REGRESSION_KNOWN_FAILURE warning, so the number says what the warning already said. Nothing is double-counted: date, prefix-match and unparsed-base warnings were already modelled by their own factors and still are.

/resolve_batch now uses the same calculator as /resolve and emits the same regression warning, so the two endpoints agree on score, factors and warnings on every lane.

If you gate on score >= 1.0 you will see fewer 1.0s from today. That is the intended behaviour change: a 1.0 now means no factor found a reason to doubt the answer. The factor list grew from five to six; each factor still carries its own score and reason.

Data change

Brazil Section 301: note 50 exemptions now applied (9903.05.03)

Brazilian-origin goods on the U.S. note 50(a)(ii) exemption list (864 tariff lines, heading 9903.05.03) were being charged the 25% Section 301 Brazil duty under 9903.05.01. As of the 2026-09-08 deploy the duty is suppressed on those lines and the response shows 9903.05.01 in suppressed_measures with exempting heading 9903.05.03. Civil-aircraft (9903.05.05) and pharmaceutical-use (9903.05.06) lines remain charged by default and surface as claimable exemptions. Applies to entries from 2026-07-22.

Data change

Guatemala and El Salvador now receive their DR-CAFTA duty-free rate

Goods originating in Guatemala and El Salvador were being quoted the Column 1 general duty rate instead of the DR-CAFTA preferential rate on every line whose Special column carries symbol P, on all surfaces (API, batch, HTS pages, MCP). As of 2026-09-07 those origins resolve at their DR-CAFTA rate, and on the textile and apparel provisions enumerated in U.S. note 52(j)(6)(iii) the Section 301 forced-labour duty is correctly removed via headings 9903.06.06 (GT) and 9903.06.09 (SV). Example: 6116.93.08.00 from Guatemala went from 12.8% to 0.0%; 1006.30.10 (rice) from 21.2% to 10.0%, because the forced-labour carve-out is scoped to the enumerated provisions and rice is not one of them. Costa Rica, the Dominican Republic, Honduras and Nicaragua are unchanged for now: their relief under note 52(i) depends on General Note 29(d)(v), which we have not been able to read from a primary source, so they continue to resolve conservatively at the general rate, with heading 9903.05.95 now surfaced as an available exemption on chapter 50-63 lines so filers know it exists.

Effective September 7, 2026

Data change Section 338 CBP CSMS

Canada Section 338 duties: start date corrected to August 22, 2026

Proclamation 11056 temporarily suspended the Section 338 duties on Canadian alcohol, dairy, and motor vehicles, moving their start from August 19, 2026 to August 22, 2026 (headings 9903.03.12, 9903.03.13 and 9903.03.14). For entry dates of August 19, 2026 through August 21, 2026 our API previously included the additional 50% duty; it now correctly returns no Section 338 duty for those three days, and applies the 50% from August 22, 2026 onward. In the same release, 6-digit queries on the default API surface now return an explicit scope-varies indicator when a heading's 10-digit lines carry different measures, instead of silently omitting the additional duty.

Effective August 22, 2026 Official source (opens in a new tab)

Government notice No rate change Federal Register

2026 Review of Notorious Markets for Counterfeiting and Piracy: Comment Request

USTR comment request for the 2026 Notorious Markets List review (Special 301 IP program, 19 USC 2242); no tariff or duty content.
USTR opened the comment period for its 2026 Notorious Markets List review, covering markets linked to counterfeiting and piracy, with comments due October 7, 2026. This is an intellectual-property review under the Special 301 program and carries no tariff measures. No duty rates or HTS codes are affected.

Published August 26, 2026 Official source (opens in a new tab)
Government notice No rate change Federal Register

Automated Commercial Environment (ACE) Electronic Export Manifest for Rail Cargo

Final rule mandates electronic export manifest in ACE for rail cargo (effective 2026-10-26, enforced 2027-10-26); export manifest data elements only, HTSUS mentioned only as a cargo-description field, no duty rates touched.
CBP finalized a rule requiring electronic export manifests in ACE for rail cargo leaving the United States, effective October 26, 2026 with enforcement starting October 26, 2027. It concerns export documentation only; HTS numbers appear in it solely as an optional cargo-description field on manifests. No import duty rates are affected.

Published August 26, 2026 Official source (opens in a new tab)
Government notice No rate change Federal Register

Establishment of Four Customs-Enforcement Areas

CBP Dec. 26-17 establishes four Customs-Enforcement Areas in near-shore waters under the Anti-Smuggling Act (19 USC 1701); maritime enforcement jurisdiction only, no tariff content.
CBP established four Customs-Enforcement Areas in the near-shore waters of South Florida, Central/Southern California, Puerto Rico, and the Texas Gulf Coast, effective August 25, 2026, expanding maritime anti-smuggling enforcement authority. This changes where CBP can board and inspect vessels, not what anything costs to import. No tariff rates or HTS codes are affected.

Published August 25, 2026 Official source (opens in a new tab)
Government notice No rate change IEEPA CBP CSMS

CSMS # 69635410 - Update to ACE CATAIR Error Dictionary: New Error F883 PSC NOT ALLOWED TO MODIFY IEEPA HTS

CSMS 69635410 adds ACE validation error F883 blocking Post Summary Corrections that modify IEEPA HTS on FTZ type 06 entries; filing-procedure change only, no rate, scope, or exemption change.
CBP added a new ACE filing validation (error F883) that blocks Post Summary Corrections from modifying the IEEPA tariff line on Foreign Trade Zone type 06 entries, deployed August 21, 2026. This is a customs filing-procedure change for brokers and self-filers. No duty rates, tariff scopes, or exemptions change, so the rates returned by our API are unaffected.

Published August 24, 2026 Official source (opens in a new tab)

Data change

Calculator was understating duty; AGOA countries now get their duty-free rate

The free tariff calculator was leaving the base duty out of its total. Any origin without a US free-trade agreement was quietly given the duty-free rate, so the calculator returned only the Section 301/232 surcharges and omitted the underlying HTS rate. A $10,000 shipment of soap from Poland showed 0.3% instead of 4.3%; sugar from the Netherlands 5.2% instead of 10.3%; knit fabric from Brazil 37.8% instead of 41.8%. The HTS pages and the API were always correct, so this affected the calculator only. Fixed 2026-08-09: the calculator now checks trade-agreement membership the same way the API does. Separately, goods from the 32 AGOA countries now correctly receive their duty-free rate everywhere; they had been charged the full rate because the beneficiary list was never populated.

API change

Bulk lookups now include the Section 301 forced-labour duty

Bulk lookups (POST /api/v1/tariffs/resolve_batch) were leaving the Section 301 forced-labour duty out of the result. Single lookups (GET /api/v1/tariffs/resolve) were always correct, so only the batch endpoint was affected.

Any bulk lookup for goods originating in one of the 86 economies covered by that duty came back too low, by 10 or 12.5 percentage points depending on origin, between 24 July 2026 and 7 August 2026. Bulk and single lookups now return identical results.

If you priced shipments from bulk results in that window, re-run them. The corrected duty is higher, not lower, so entries filed on the old figures may be short.

Government notice Affects our rates Federal Register

Quartz surface products: new Section 201 safeguard returns two rates, not one

A Section 201 safeguard took effect on 15 August 2026 for quartz surface products under HTS 6810.99.00.20, 6810.99.00.40 and 7020.00.60.00 (Proclamation 11051).

It is a tariff-rate quota, so there are two rates: 25% within the quota and 50% above it. Which one applies depends on whether the quarterly quota is still open when your entry is filed, and that is not something we can know from an HTS code and a country of origin.

So we do not guess. On these lanes `summary.total_resolved_ad_valorem_rate` is now `null`, and `rate_conditional.alternatives` carries both rates with their conditions. If your integration totals our response, it will need to read that block rather than the summary. The rates step down each year: 23%/49% from August 2027, then 21%/48%, then 19%/47%.

Most origins are exempt. The proclamation excludes 124 countries and territories, including Canada, Mexico, South Korea, Australia, Israel, Singapore, Brazil and the CAFTA-DR and Caribbean Basin parties. Those lanes are unchanged.

If you ask about an 8-digit heading that spans both covered and uncovered lines, such as 6810.99.00, we return a normal total and show the safeguard as advisory, because whether it applies depends on the 10-digit line your goods classify to.

We were late: the safeguard was in force from 15 August and our answers did not reflect it until 16 August. Lookups on these three codes in that window came back too low. If you priced shipments from them, re-run them.

API change

rate_conditional, for rates that depend on a fact only your entry knows

Some rates cannot be settled from an HTS code, an origin and a date. Until now we picked a branch and served it at confidence 1.0 with no warning, which is the shape nobody thinks to report. /resolve and /resolve_batch now return a rate_conditional block on those lanes, naming what the answer turns on and what the other branch would be.

The live case is the ad valorem equivalent. Where a Section 301 floor or cap sits on a column 1 rate that is not ad valorem, U.S. note 52(k) makes the test a percentage of your entry's declared customs value, so two shipments of the same code at different values fall on opposite sides of the floor. Those lanes return reason: "ad_valorem_equivalent" with an AD_VALOREM_EQUIVALENT_REQUIRED warning and confidence 0.8. This is not a rare corner: 8.3% of general duties carry a per-unit term.

Read the bound before you total anything. The number on those lanes has not changed and it is a ceiling, not a certainty: where column 1 is a specific rate we net out nothing and charge the full floor, which over-states the duty. It is now marked rate_is_bound: "upper" instead of being served silently at full confidence. If you read only applicable_ad_valorem_rate you get exactly what you got before. Letting you pass the entered value on the request so we can compute the equivalent is the real fix and it is not built yet; tell us if you need it and it moves up.

The confidence reduction is its own named factor, rate_conditional, sitting beside base_rate rather than folded into the score, so you can see what cost you the 0.2.

A second reason, tariff_rate_quota, uses the same structure for in-quota versus over-quota. No lane emits it today. The textile and apparel quotas of the July 2026 forced-labor memo are directed but not established: USTR's own notice says it will establish them "when feasible", no Chapter 99 quota heading exists, and Bangladesh, Cambodia, Indonesia and Malaysia correctly carry the flat rate. Publishing in-quota alternatives now would headline a zero percent no importer can claim, so those four origins instead carry an info-severity TARIFF_RATE_QUOTA_DIRECTED warning with no confidence reduction. It flags a lane likely to move, not a doubt about today's number.

Additive. rate_conditional is always present and is null on almost every lane, and no existing field changed shape or meaning.