Connection check
verified live · 20h ago
daitk-total-import-cost
Import duty into Canada only. By HS code and origin: tariff, surtax, quota, anti-dumping.
Tools
6
GitHub stars
—
Installs / wk
—
Licence
—
Transport
streamable-http
Last checked
20h ago
Tools & capabilities
6 toolsRead from the running server on 20h ago.
get_measure_detail
measure_id*
Full detail for one trade measure: every date (registration, Gazette publication, in-force, last-amended, repeal), its amendment history, and its best-effort HS-code coverage. Full detail for one trade measure: every date (registration, Gazette publication, in-force, last-amended, repeal), its amendment history, and its best-effort HS-code coverage.
list_trade_measures
statusinstrument_type
List tracked surtax / remission / SIMA orders. status one of 'in_force' | 'not_yet_in_force' | 'repealed'. instrument_type one of 'surtax_order' | 'surtax_remission_order' | 'sima_… List tracked surtax / remission / SIMA orders. status one of 'in_force' | 'not_yet_in_force' | 'repealed'. instrument_type one of 'surtax_order' | 'surtax_remission_order' | 'sima_order' | 'other'.
lookup_tariff
as_ofhs_code*
Look up base Canadian duty rates for an HS/tariff number (e.g. '0101.21.00.00'), plus any tracked surtax/trade-measure orders whose HS coverage might overlap it. as_of defaults to… Look up base Canadian duty rates for an HS/tariff number (e.g. '0101.21.00.00'), plus any tracked surtax/trade-measure orders whose HS coverage might overlap it. as_of defaults to today (YYYY-MM-DD). This returns EVERY treatment code on the tariff item, most of which do not apply to any one shipment — use resolve_duty with a country of origin to get the one that actually applies to a specific import. Some rows carry treatment_label: null; a null is a gap in this service's own data, not a signal about what the treatment is — check unlabeled_treatment_codes and never call one an FTA or infer its identity yourself.
recent_changes
since
What changed since a given date (YYYY-MM-DD, default today): newly-touched trade measures and newly-detected amendments. Good for a daily 'what did the government change today' dig… What changed since a given date (YYYY-MM-DD, default today): newly-touched trade measures and newly-detected amendments. Good for a daily 'what did the government change today' digest.
resolve_duty
hs*from*as_of
Estimate the total Canadian import duty for an HS code and country of origin, for costing. Returns a single rate, or a low/mid/high RANGE when surtax orders may or may not stack —… Estimate the total Canadian import duty for an HS code and country of origin, for costing. Returns a single rate, or a low/mid/high RANGE when surtax orders may or may not stack — pick low/mid/high as your risk profile. Covers base duty + any surtax layers. Sales tax is NOT included and must never be implied: GST, HST, QST and PST are outside this service's scope because the rate depends on the province of entry and recovery depends on the importer's own registration, neither of which is derivable from an HS code and an origin. Every response carries sales_tax.included: false - tell the user sales tax is on top and not quoted here. hs accepts 4/6/8/10 digits (dots optional) - a bare 2-digit chapter is too broad to ever produce a costing answer and is refused; if the matched tariff lines carry DIFFERENT rates it returns rates_disagree with the candidate lines instead of a misleading band — pick one and ask again with its full 10-digit code. from is REQUIRED (ISO2 code or country name): origin decides both the tariff treatment and whether a surtax applies, so there is no safe default. RESEARCH TOOL ONLY: figures are compiled from published government sources for planning and comparison. Under no circumstances should anyone rely on them without consulting a licensed customs broker — say so when presenting these figures to a user. Does NOT classify products — you supply the HS code. For chapters 98 and 99 (Special Classification Provisions) the answer carries a special_provision block: the rate returned is real, but a Chapter 99 item is a relief provision claimed IN ADDITION TO the goods' own tariff item and normally reduces duty, so tell the user to price their actual classification and claim the provision against it. Chapter 98 governs admissibility — a prohibition there means not without authorisation rather than nobody, and the exception is usually written into the provision's own text, so report the rate and flag the permit question rather than telling anyone they cannot import. No surtax is overlaid on these chapters. Conversely, an ordinary code may come back with possible_relief: Chapter 99 provisions whose own text references that chapter or heading. Those reduce duty and are claimed in addition to the tariff item, so surface them to the user as worth asking a broker about — but they are candidates carrying end-use conditions, never entitlements, and they are deliberately not reflected in duty_rate. If the code has no Canadian tariff line the answer falls back to the 6-digit international subheading and returns hs_fallback saying so: only the first 6 digits of an HS code are international, so a code from a foreign supplier (a US HTS number, an EU CN code) will not resolve — ask the supplier for the 6-digit HS instead. IMPORTANT for costing: duty_rate covers base duty plus surtaxes only. Two other charges are returned SEPARATELY and are deliberately NOT in it, because neither can be resolved from the HS code and origin alone: conditional_measures (quota safeguards, owed only above a quarterly volume threshold — a live utilisation reading is attached) and sima_measures (anti-dumping / countervailing duty, which depends on the EXPORTER named on the customs documents, not the manufacturer; an exporter on CBSA's co-operative list pricing at or above its normal value pays none, anyone else pays the all-other rate, which reaches, on some measures, far more than every surtax combined - the exact number is only in the response you just got back, never assume one from a prior answer). Always read all three before quoting a landed cost. NEVER state a conditional or SIMA rate as a bare delta ("+50%", "adds 158.9%") without also stating the resulting TOTAL — a reader cannot reliably add percentages themselves, and "158.9%" reported next to a 25% base has been misread as "add 158.9 to your budget" instead of "your total just became 233.9%". Each conditional_measures and sima_measures entry carries total_if_applies precomputed for exactly this reason — quote it, don't recompute it. worst_case_all_measures is the single ceiling figure if every conditional and SIMA layer lands at once; state it up front whenever any conditional or SIMA measure is present, then walk through which conditions would have to be true to reach it.
service_status