Gather required commodity data for each item in the shipment: product description (in English), HS/HTS code, country of manufacture, quantity, unit weight, unit value, and total line value; inaccurate data can cause customs delays or fines.
For EasyPost: create a 'CustomsItem' for each commodity via the custom items endpoint, then create a 'CustomsInfo' object referencing the item IDs, specifying 'contents_type' (e.g., 'merchandise', 'gift'), 'restriction_type', 'customs_certify' (boolean), 'customs_signer', and 'non_delivery_option'; attach the CustomsInfo ID to the Shipment before purchasing.
For Shippo: include a 'customs_declaration' object directly in the shipment request with 'contents_type', 'non_delivery_option', 'certify', 'certify_signer', 'incoterm', and a 'items' array with per-commodity details (description, quantity, net_weight, mass_unit, value_amount, value_currency, tariff_number, origin_country).
For FedEx and UPS REST APIs: populate the 'customsClearanceDetail' (FedEx) or 'InternationalForms' (UPS) section of the shipment request; include 'commodities' with the same fields; specify 'dutiesPayment' (who pays duties: shipper, recipient, or third party) and 'documentContent' or 'freightOnValue' as required.
Specify the correct Incoterm (e.g., 'DAP' or 'DDP') in the customs payload; DDP means the shipper is responsible for duties and taxes which requires advance duty payment arrangements.
If the carrier supports Electronic Trade Documents (ETD), submit the commercial invoice data electronically and enable ETD to reduce paper documentation requirements; verify ETD availability per carrier and destination country.
Known gotchas
HS codes are destination-country specific at the 8-10 digit level even though the first 6 digits are internationally harmonized; do not use the same HS code for all destinations without verification against the destination country's tariff schedule.
Customs value must reflect the actual transaction value (not discounted or inflated); under-declaring value to reduce duties is a customs violation and can result in shipment seizure and fines.
Some carriers reject international label requests if mandatory customs fields are missing or if the declared value exceeds country-specific thresholds without additional documentation; test thoroughly in sandbox environments before production.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp