Calculate
Rate stacking
The full duty-rate stack for a code and origin — no shipment values needed.
POST
Requires the
calculate:read scope. Answers “which tariff lines stack for
this code from this origin, on this date?” — base duty plus additional
measures (Section 301/232, reciprocal, …), which Chapter 99 exclusion codes
suppressed what, and which claim codes could be filed — without needing
values or weights.
string
required
2–10 digit HS code (dots and spaces allowed).
string
required
ISO alpha-2 origin (case-insensitive).
string
default:"US"
ISO alpha-2 destination.
string
YYYY-MM-DD — the stack as of this date (defaults to today).Response
boolean
Whether a general (MFN) rate exists for this code.
array
The stack, base rate first. Each line:
{ name, rate, type, code? }, plus — when an exclusion fired —
exempted: true with exclusion_code / exclusion_name (the line’s
rate shows as zeroed).array
Present when claimable Chapter 99 codes overlap the applied stack:
{ code, name, applied: false, reason } — codes the importer could file.array
Present when measures exist that need shipment facts (metal content /
weight / manual claim): stack lines plus a
condition string. Never
auto-applied here.object | null
Which tariff publication answered:
{ version, source, imported_at }.string | null
Log id — appears in
GET /usage-history/calculate.Bulk stacking
For up to 500 codes at once, POST{ "items": [...] } to
/calculate/stacking/bulk — each item is the same shape plus an optional
ref (echoed back). The response is
{ "results": [...], "execution_time": … }, each result tagged with its
index, ref, and success; a failed item carries error instead of a
stack.