You can create international shipments through any major carrier that ShipEngine supports. 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.
Customs must be declared for international shipments. You will need to include a customs object with the label request.
Some carriers may require that a customs form (also referred to as a commercial invoice) be included with your international shipment. The customs form will be included in the JSON response as form_download.
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).
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.
UPS Paperless Invoice Enrollment
UPS users must apply to UPS directly for the Electronic Data Interchange service. Once this service is enabled on the UPS side, it will be enabled on the ShipEngine side.
Go to the Eliminate Paper Invoices section of the UPS International Tools and Resources page and click Enroll Now.
When you print UPS labels, there will be “EDI” printed on them signifying that you've electronically submitted your customs forms.
UPS international shipments with electronically submitted customs forms or paperless invoicing must be shipped with 14 days of the label creation date to reduce the chances of the shipment being held at customs.

If you see "INV" instead of "EDI" on UPS labels, this means the customs information will not be transmitted electronically. You must include three copies of the printed commercial invoice on the outside of the package or in the plastic sleeve outside of the box.
UPS from ShipEngine Automatically Submits Customs Information
If you are using UPS from ShipEngine Carriers, customs information will be electronically submitted for your shipments. UPS from ShipEngine labels will print with the EDI designation.
You do not need to print additional copies of your customs form or commercial invoice.
If your shipment is insured for over $1,000, ShipEngine will also generate a High-Value Package Document titled "UPS Control Log" for insurance coverage up to $50,000.
You must print two copies of the High-Value Package Document. Include one copy with your package.
The second copy must be signed by a UPS employee and returned to you. The signed document is your proof that UPS has accepted the package(s) and will be required to submit an insurance claim.
If the High-Value Package Document is dropped off at a UPS Access Point™ and not signed by a UPS employee, the maximum coverage is $1,000.
Similar to UPS labels, 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.

By default, DHL Express transmits customs declarations electronically for shipments to over 150 countries worldwide. Learn more about the DHL customs process and Paperless Trade.
If you are shipping to a country that supports Paperless Trade, then you don't need to print out the customs form. The label will include "C-PLT", as shown below.

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 "C-PLT" and the archive document does not list Paperless Trade below the Features/Services section, then you will need to print your customs forms.
The purpose of a Harmonization Code (also referred to as Tariff Code, Customs Tariffs, Harmonized Tariff Codes, and Harmonized System Code or HS Code) is to expedite the shipping process for international orders. The codes 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 the time of label creation.
For a full list of Harmonization Codes, use the Harmonized Tariff Schedule search.
New Harmonized Code Requirement for the EU
As of March 1, 2023, all shipments to and passing through most countries in the EU will require HS (Harmonized System) codes included on customs forms along with a more detailed description of the package contents.
This means that descriptions such as "Clothes" will not be accepted. Instead, a more detailed description such as "Men's Cotton Shirt" or "Women's Leather Shoes" will be required.
Learn more about the new HS code requirements from the following resources:
Look up HS codes for your products using the following resources:
-
GlobalPost HS Classification Tool (may limit the number of codes you can look up in a 24-hour period)
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: the 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 |
The create label request for an international shipment is missing a customs declaration. |
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. |
The FedEx International Ground service cannot be used because the destination country is not valid. |
If you are shipping from the US, FedEx International Ground 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. |
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. |