How do I ship internationally with ShipEngine?

With ShipEngine you can create international shipments through any major carrier that we support. Packages created with ShipEngine’s API must ship from the country that matches the originating ShipEngine account. Currently, you can create ShipEngine accounts in the United States, Canada, the United Kingdom, and Australia.

For international shipments, customs must be declared. You will need to include a customs object with the label request for international shipments. 

Some carriers may require that a customs form (also referred to as a commercial invoice) is included with your international shipment. The customs form will be included in the JSON response as form_download

This article includes:

Customs Forms

ShipEngine automatically submits your customs forms electronically for UPS* (via Electronic Data Interchange, or EDI), DHL Express (Paperless Trade, or PLT) and FedEx (via Electronic Trade Documents, or ETD).

*UPS users must apply to UPS directly for this service, and once enabled on the UPS side, it will be enabled on the ShipEngine side. To apply online, go to the UPS Paperless Invoice Enrollment page and click on the option to enroll in the paperless invoice.

The ETD and PLT features are enabled by default for FedEx and DHL users shipping through ShipEngine. However, certain restrictions may apply based on destination.

Forms are submitted electronically when you create labels for shipments that require a customs form and are being sent via either of these carriers.

UPS & FedEx

When you print UPS labels, there will be “EDI” printed on them signifying that you've electronically submitted your customs forms.


Likewise, we will print “ETD” on your FedEx labels when we've submitted your customs forms electronically. If you don’t see ETD on your label, you will need to print the forms and send them on the package.


NOTE: If you see INV instead of EDI on UPS labels, this means the customs information will not be transmitted electronically.


If this happens, you will need to print your customs forms from ShipEngine to include with the shipment. It is possible EDI is not enabled on your UPS account.

DHL Express

DHL Express also transmits Customs Declarations electronically by default for all connected accounts, depending on the destination country. See  DHL Paperless Clearance Countries  for more information.

If you are shipping to a country that supports Paperless Trade, then you don't need to print out the customs form.

If Paperless Trade is supported for a shipment, the label will include C-PLT*, as shown below. If PLT is not supported, PLT will not be present on the label.


You can also see Paperless Trade listed on the archive document that prints out with the label under the Features/Services section.

If the label does not display PLT and the archive document does not list Paperless Trade below the Features/Services section, you will need to print your customs forms.  

Harmonization Codes

The purpose of a Harmonization Code (also referred to as Tariff Code, Customs Tariffs, Harmonized Tariff Codes, and Harmonized System Code) is to expedite the shipping process for international orders. They are used for tax assessment purposes. This is a system used to trade most of the merchandise that is sent internationally and is a universal economic language and code for your goods. 

Once an order reaches an international border, these codes will help the customs office to identify what it is that you are shipping. It is recommended to have your harmonization codes listed and properly-identified at time of label creation.

For a full list of Harmonization Codes, use the Harmonized Tariff Schedule search. 

Address Validation

You can validate addresses before creating labels in order to save costs and avoid getting charged by carriers for address correction. ShipEngine can validate addresses for the following countries: United States, Canada, Great Britain, Australia, Germany, France, Norway, Spain, Sweden, Israel, Italy, and over 160 others.

Our developer documentation also includes an address validation level by country guide to help when validating international addresses.



Error message

What the error means 

How to resolve

 "International shipments require customs items"

 You are attempting to ship internationally but do not have a customs object included in your request. 

 Add a customs object to your create label request.

 "A shipping carrier error occurred: Unable to create FedEx shipment. Destination country is not Thermal Air WayBill enabled. "

 This error will appear when attempting to ship international packages with FedEx International Ground service if the destination country is not valid. 

 If you are shipping from the US, FedEx International Ground service can only be used when shipping to Canada. If the destination country  is not Canada, try using a different FedEx international service. 

 "Server was unable to process request. ---> Failed to convert parameter value from a Int32 to a Byte. ---> Value was either too large or too small for an unsigned byte."

 This error means that at least one of the customs declaration line items has a quantity over 255. 

 Adjust your customs declarations quantity value to be below 255 per line item. You can have separate declarations for the same item to break up the quantity when it exceeds 255.