The shape
Every landed-cost response returns abreakdown array. Each entry is
a CostLayer:
exempted: true and amount: 0 so the audit trail shows why a
duty did not apply.
Duty layers
Duty layers stack per statute. See Tariff stacking for the overlay families. Every duty layer’samount equals the
customs value times its rate, unless a specific-rate line
overrides. All calculations round to two decimal places on output.
The statutory fees
The customs fees below are not duties. They ship as their ownCostLayer rows so downstream systems can categorize them
separately for accounting (typically a broker-payable expense
account, not landed cost of goods).
MPF (Merchandise Processing Fee)
CBP fee under 19 CFR 24.23. 0.3464 percent of customs value, subject to a per-entry minimum (634.62), locked at statutory values for FY 2026. Applies to formal entries only; not charged on Section 321 de-minimis shipments.HMF (Harbor Maintenance Fee)
CBP fee under 19 CFR 24.24. 0.125 percent of customs value on ocean-mode entries at HMF-collecting US ports. Not applied to air, truck, rail, or express modes. Not applied when the response detects a non-HMF port.ISF (Importer Security Filing)
Broker-billed fee for 10+2 filing on ocean imports. Returned as an expected-value estimate (amount with rate: null) based on
typical broker rates. Actual charges are broker-specific.
Broker fee
Estimated brokerage fee for the entry. Ranges by tier of complexity (single-line vs multi-tariff, PGA-touched vs clean). Returned whentransport_mode is not express; express couriers embed the fee.
Exam EV (exam expected value)
Probabilistic estimate of the cost of a CBP exam (X-ray, tailgate, intensive). Weighted by the historical exam rate for the port plus commodity plus origin combination and the average per-exam cost. Returned as a singleEXAM_EV line with rate: null. Not billed
unless the entry actually gets pulled; use it for accrual, not
invoicing.
Destination-country taxes
VAT (EU), GST (AU, IN, CA), IGST plus BCD plus SWS plus AIDC (India), ICMS plus PIS plus COFINS plus IPI (Brazil), and GST/HST provincial splits (Canada) each ship as their own layers. Codes areVAT,
GST, IGST, GST_HST, BCD, II, IPI, ICMS, and so on. See
CalcBreakdownLayer.code in the OpenAPI spec.
Why the fees stay separate
Bundling MPF, HMF, broker, ISF, and exam EV into “fees” would hide the entries an accounting team needs to reconcile. It would also make it impossible to audit a specific fee against the underlying statute. The engine returns each fee as its own row so:- Accounting can post each expense to the correct GL account.
- The compliance team can trace an MPF or HMF line back to the CFR section that authorized it.
- A finance query like “how much did we spend on Section 301 last
quarter?” is a straight
SUM(amount) WHERE code = 'SEC_301'.
Summing the total
duty_amount, taxes_amount, and fees_amount in the
response are pre-summed for convenience. The breakdown[] array is
the source of truth.