Customs Info for Shipments
Provide customs details about your package in your API calls.
About customs and shipments
In international shipping, customs commonly refers to any applicable duties, fees, or taxes charged on items being shipped from one country to another. When shipping internationally, your organization may be required to provide additional customs details about your package.
This document includes example API calls for customs-specific shipping scenarios, including when international document printing is required, when electronic export information (EEI) is not required, when EEI is required, and when you want to pass all customs details for a shipment.
Finally, common definitions associated with customs and international shipping are included.
Carrier-specific requirements
Customs information needed may differ by carrier. Shipium recommends checking specific carrier requirements when shipping internationally. You can find guidance for Shipium-supported carriers with additional customs requirements in the following carrier-specific documentation: Amazon - Ship With Amazon, AMPM, Estafeta, LaserShip, and Paquetexpress.
In addition, UPS recommends including an email address for both the shipper and recipient for international shipments. You can include this information in the shipmentParameters or multiParcelShipmentParameters of your API call as the shipFromAddress.emailAddress and destinationAddress.emailAddress.
Customs items to order item quantity mapping
For certain carriers, accurate customs declaration requires a precise mapping between the individual items declared in your customs information and the corresponding items within each parcel. Shipium facilitates this by connecting the productId values provided in your customsInfo.customsItems with the productId values in your package's orderItemQuantities.
How it works. When you provide customs information for a shipment with the following carriers, Shipium expects that each customsItem will have a productId that matches a productId in one of the orderItemQuantities. This connects each item declared for customs with its corresponding item in your parcel.
Important. If the productId values do not match between your customsInfo.customsItems and your orderItemQuantities, the system will be unable to send complete and accurate customs and item information to the carrier. This may result in:
- Shipment delays
- Customs clearance issues
- Incorrect duties and taxes calculations
- Shipment rejection by the carrier
Carriers requiring this mapping. The following carriers require this explicit productId mapping for customs declarations:
- Amazon - Ship With Amazon
- Cirro
- ECMS
- FlavorCloud
- Reliable Logistics
Action required. When preparing shipments for these carriers, you'll want to ensure that:
- Every item you declare in
customsInfo.customsItemshas a unique and accurateproductId. - Every item listed in your package's
orderItemQuantitiesalso has aproductId. - The
productIdfor each item incustomsInfo.customsItemsprecisely matches theproductIdof its corresponding item inorderItemQuantities.
Example API calls and responses for international shipping customs
Minimum fields required for international, no EEI required for shipment
This is a sample cURL call to the API including the minimum required information for international shipping when an EEI is not required.
{
...
"labelParameters": {...},
"shipmentParameters": {
...,
"shipOption": "InternationalTwoToFiveDay",
"customsInfo": {
"totalCustomsValue": 54.95,
"totalCustomsValueCurrency": "usd",
"customsDescription": "9 mm steel screws",
"reasonForExport": "sale",
"invoiceDate": "2022-06-13",
"customsItems": [
{
"customsValue": 18.31,
"customsValueCurrency": "usd",
"commodityDescription": "9 mm steel screws",
"countryOfManufacture": "US",
"customsWeight": {
"weight": 4,
"weightUnit": "lb"
},
"quantity": 3,
"quantityUnitOfMeasurement": "box",
"harmonizedTariffNumber": "9876543210"
}
]
}
}
}Minimum fields for a shipment that requires an EEI, and EEI is filed through AES Direct
This is a sample cURL call to the API including the minimum required information for international shipping when an EEI is required and it is filed through the Automated Commercial Environment (ACE) AESDirect.
{
...
"labelParameters": {...},
"shipmentParameters": {
...,
"shipOption": "InternationalTwoToFiveDay",
"customsInfo": {
"totalCustomsValue": 54.95,
"totalCustomsValueCurrency": "usd",
"customsDescription": "9 mm steel screws",
"reasonForExport": "sale",
"invoiceDate": "2022-06-13",
"aesInternalTransactionNumber": "X20220613366903",
"customsItems": [
{
"customsValue": 18.31,
"customsValueCurrency": "usd",
"commodityDescription": "9 mm steel screws",
"countryOfManufacture": "US",
"customsWeight": {
"weight": 4,
"weightUnit": "lb"
},
"quantity": 3,
"quantityUnitOfMeasurement": "box",
"harmonizedTariffNumber": "9876543210"
}
]
}
}
}Sample API call with customs information included
This is a sample cURL call to the API including customs information. Importer of record and broker are not included in this sample call; the Broker & Importer of Record document provides details about these optional fields that can be included in your API call. The Tax Identification Number document includes information about the optional tax ID field in the sample call.
{
...
"labelParameters": {...},
"shipmentParameters": {
...,
"shipOption": "InternationalTwoToFiveDay",
"customsInfo": {
"totalCustomsValue": 54.95,
"totalCustomsValueCurrency": "usd",
"customsDescription": "9 mm steel screws",
"reasonForExport": "sale",
"invoiceDate": "2022-06-13",
"invoiceNumber": "123-abc-456",
"europeanUnionInfo": {
"vendorIossNumber": "123456789012"
},
"ultimateConsigneeAddress": {
"name": "Wile E. Coyote",
"phoneNumber": "1112223333",
"emailAddress": "[email protected]",
"street1": "123 Test",
"city": "St. John's",
"state": "NL",
"countryCode": "CA",
"postalCode": "A1A 2H4",
"addressType": "residential"
},
"ultimateConsigneeType": "direct_consumer",
"aesInternalTransactionNumber": "X20220613366903",
"electronicExportInformation": { // Note: not needed if an aesInternalTransactionNumber is provided
"exportDate": "2022-06-15",
"pointOfOrigin": "CO"
},
"b13AFilingOption": "NOT_REQUIRED",
"exportComplianceStatement": "AESX20220714987654",
"permitNumber": "12345",
"incoterm": "ddp",
"declarationStatement": "I declare that the information provided is true and accurate. These commodities are licensed by the United States for export to the destination country",
"taxIdentificationNumber": "12345",
"customsItems": [
{
"customsValue": 18.31,
"customsValueCurrency": "usd",
"commodityDescription": "9 mm steel screws",
"countryOfManufacture": "US",
"customsWeight": {
"weight": 4,
"weightUnit": "lb"
},
"quantity": 3,
"quantityUnitOfMeasurement": "box",
"harmonizedTariffNumber": "9876543210",
"productId": "ABC123",
"commodityPartNumber": "12345",
"marksAndNumbers": "1 of 1",
"electronicExportCommodityInformation": { // Note: not needed if the carrier is not filing an EEI
"exportType": "domestic",
"exportInformationCode": "LC",
"scheduleBInformation": {
"scheduleBNumber": "6404195500",
"scheduleBQuantity": 3,
"scheduleBUnitOfMeasurement": "pack"
},
"eccnNumber": "EAR99",
"exportLicenseInformation": {
"licenseType": "C33",
"licenseExemptionCode": "NLR",
"exportLicense": { // Note: not needed if you have provided a licenseExemptionCode
"licenseNumber": "123ABC",
"licenseLineValue": 1000,
"licenseExpiration": "2025-06-13"
}
}
}
}
]
}
}
}Sample response with customs information included in the API call
This is a sample JSON response from the API when customs information was included in the API call.
{
"carrierSelection": {
....
},
....,
....,
"carrierLabel": {
....,
....,
"documents": [
{
"labelExpiration": "2023-11-19T21:08:54.305Z",
"labelFormat": "zpl",
"labelImage": {
"imageContents": "BASE64LOOKINGSTUFFANDWHATHAVEYOUETCETCETC",
"imageEncoding": "base64"
},
"labelUrl": "https://api.shipium.com/labels/1a486afc-2ffc-4c37-928f-8d6aa014b35b.zpl"
}
],
"internationalDocuments": [
{
"documentType": "commercial_invoice", // "commercial_invoice", "electronic_export_information", "ps_2976", "air_waybill" or "multiple"
"documentExpiration": "2023-11-19T21:08:54.305Z",
"documentFormat": "pdf",
"documentImage": {
"documentEncoding": "base64",
"documentContents": "BASE64LOOKINGSTUFFANDWHATHAVEYOUETCETCETC"
},
"electronicallySubmitted": false
}
]
....,
....,
},
....,
....
}Minimum fields required for U.S. territory, APO, FPO, DPO
Shipium’s guidance is that as much of the following information be provided as possible for a shipment to a U.S. territory or a military region to ensure that the shipment is not returned. While some fields are marked as not required for one carrier and required for another carrier, it is not known which carrier will be chosen during carrier selection. Therefore, it is best to supply enough information for all carriers.
{
...
"labelParameters": {...},
"shipmentParameters": {
...,
"customsInfo": {
"totalCustomsValue": 54.95,
"totalCustomsValueCurrency": "usd",
"reasonForExport": "sale", // not strictly required for USPS
"invoiceDate": "2022-06-13", // required for UPS
"customsItems": [
{
"customsValue": 18.31,
"customsValueCurrency": "usd",
"commodityDescription": "9 mm steel screws",
"countryOfManufacture": "US", // not strictly required for USPS
"customsWeight": {
"weight": 4,
"weightUnit": "lb"
},
"quantity": 3,
"quantityUnitOfMeasurement": "box" // required for UPS
}
]
}
}
}Definitions of API request fields for customs and international shipping
This section includes Shipium descriptions of API request fields common to customs and international shipping. All fields are included within customsInfo in the shipmentParameters (or multiParcelShipmentParameters for multi-parcel shipments) of your call, with the exception of shipOption, which is included at the shipmentParameters (or multiParcelShipmentParameters) level.
Importer of record and broker are not included here; the Broker & Importer of Record document provides details about these optional fields that can be included in your API call. Likewise, the Tax Identification Number document includes information about tax IDs that is not included here.
Ship option
The shipOption field is included in the shipmentParameters of the API call (or in multiParcelShipmentParameters for a multi-parcel shipment). You can find more information about ship options in our Ship Options documentation.
Request field | Details |
|---|---|
| Type: String (enumeration) |
Customs info
The customsInfo fields are included in the shipmentParameters (or in multiParcelShipmentParameters for a multi-parcel shipment) of the API call.
Required fields
Request field | Details |
|---|---|
| Type: Float |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: LocalDate |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: Array |
Conditional fields
Request field | Details |
|---|---|
| Type: Object |
| Type: String |
| Type: String (enumeration) |
| Type: String (date-time) |
| Type: String |
Optional fields
Field | Details |
|---|---|
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: Object |
| Type: String (enumeration) |
| Type: Object |
| Type: Object |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: String (enumeration) |
| Type: Array |
| Type: String (enumeration) |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
| Type: Array |
| Type: String |
| Type: String |
| Type: String |
| Type: String |
Understanding soldTo vs. importerOfRecordThe
soldTofield represents the party who purchased the goods, whileimporterOfRecordrepresents the party legally responsible for customs compliance. These may be the same entity or different parties depending on your shipping scenario. For detailed guidance on when to use each field, see Broker & Importer of Record.
Customs items
The customsItems fields are included within customsInfo in the API call.
Required fields
Request field | Details |
|---|---|
| Type: Float |
| Type: String |
| Type: String |
| Type: String |
| Type: Float |
| Type: String (enumeration) |
| Type: Integer (int32) |
| Type: String (enumeration) |
| Type: String |
Conditional fields
Request field | Details |
|---|---|
| Type: String (enumeration) |
| Type: String |
| Type: Array |
| Type: String |
| Type: Integer (int32) |
| Type: String (enumeration) |
| Type: String |
| Type: Array |
| Type: String |
| Type: String |
| Type: Integer (int32) |
| Type: String (date-time) |
Optional fields
Request field | Details |
|---|---|
| Type: String |
| Type: String |
| Type: String |
| Type: Array Description: Customs item information that is particular to the Electronic Export Information (EEI), only used when the EEI will be filed directly by the carrier (i.e., not filed by the partner using AES Direct or otherwise) |
| Type: String |
| Type: Array |
Resources
Your Shipium team member is available to help along the way. However, you might find these resources helpful:
Updated 2 days ago
