Determine which form applies: CN22 is for goods valued under the applicable threshold (typically around 300 SDR) sent as letter post or small packet; CN23 is required for higher-value items or parcel post — confirm the carrier or postal operator's threshold.
Gather required fields for the CN23: sender name and address, recipient name and address, a line-item description of contents (each item: quantity, weight in kg, value in currency, HS tariff number, country of origin), total gross weight, total declared value, and Incoterms or postage category.
Determine the customs category: gift, documents, commercial sample, returned goods, or other merchandise — this affects duty treatment at destination.
Provide the data to the carrier API (e.g., EasyPost CustomsInfo and CustomsItem objects, or the postal carrier's customs fields) when generating the international label; the API generates a customs declaration embedded in or attached to the label.
Retain a copy of the declared values for your records; discrepancies between declared value and actual value at destination customs can result in delays, re-assessment, or penalties.
Known gotchas
HS code at the customs form level is typically required at 6 digits minimum; some destination countries require 8 or 10 digits — omitting the HS code on a CN23 commonly causes clearance delays in stricter customs regimes.
Undervaluing goods on a CN22/CN23 to avoid duties is illegal in both origin and destination countries; many postal carriers now X-ray packages and share manifest data with destination customs electronically (PEN/AMS data) so declared values are cross-checked.
Lithium batteries, certain foods, medications, and other restricted items trigger additional customs requirements beyond the CN22/CN23; the declaration alone does not authorize import — verify destination-country import restrictions before shipping.
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