Skip to main content

The shape

Every landed-cost response returns a breakdown array. Each entry is a CostLayer:
The engine returns one entry per layer that touched the calculation, whether it added dollars or zeroed out. Exempted layers (FTA preferences, Section 301 exclusions) are included with 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’s amount 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 own CostLayer 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 (32.71)andmaximum(32.71) and maximum (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 when transport_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 single EXAM_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 are VAT, 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

The top-level duty_amount, taxes_amount, and fees_amount in the response are pre-summed for convenience. The breakdown[] array is the source of truth.