Provide Zonos with the conveyance and shipment data needed to quote and declare postal shipments into the European Union.
Sending data takes two calls:
manifestCreate creates the manifest for a conveyance (a flight, truck, or vessel) and returns an id.
manifestLineCreate adds one shipment (its items and parties) to that manifest, using the id from step 1. Use manifestLinesCreate to add many lines in one request.
Zonos calculates the landed cost for each line asynchronously after it is created. A successful manifestLineCreate response means the line was accepted, not that it has been quoted. Item and party data is checked during that calculation, so follow the field guidance below even where the API itself does not reject a missing value.
Product composition. Each entry takes material and percentage, plus optional countryOfMeltAndPour, countryOfCast, primaryCountryOfSmelt, and secondaryCountryOfSmelt.
Party fields
Each party has a type (ORIGIN for the sender, DESTINATION for the consignee), a person, and a location.
Field↕
Origin (sender)↕
Destination (consignee)↕
location.countryCode
Required
Required
location.line1
Required for EU
Required for EU
location.locality (city)
Required for EU
Required for EU
location.postalCode
Optional
Required for EU (except Ireland)
location.administrativeArea
Optional
Optional
person.firstName
Required for EU
Required for EU
person.lastName
Required for EU
Required for EU
person.email
Required for EU
Required for EU
person.companyName
Optional
Optional
person.phone
Optional
Optional
Origin addresses can be in any country, so postal code and state are optional there. Many origins, such as Hong Kong, the UAE, and Qatar, have no postal codes. EU consignee addresses reliably have one, except in Ireland, where Eircode use is still incomplete.
Send the IOSS number in taxIdNumber when the sale was made under IOSS. A valid IOSS number is IM, a 3-digit EU member state code, and 7 digits, for example IM3720000123. When it is valid, the line is quoted without import VAT, because the IOSS holder has already collected it. A number that is not in the IOSS format is ignored and the line is quoted with import VAT.
CIF values
EU duty and VAT are assessed on the CIF value: goods plus shipping. Send shippingCost and shippingCostCurrency on every EU line. Without them, shipping is treated as zero and the quote understates the value.
Destination party
Always send a DESTINATION party with the consignee's EU country code. The destination country decides which rules apply to the line, so a line without it cannot be quoted as an EU shipment.
Duplicate lines
referenceNumber must be unique across all of your lines. If you send a line with a referenceNumber Zonos already has, the existing line is returned and moved to the new manifest. Its items and parties are not updated. To correct a line, contact Zonos rather than resending it under the same reference.
Values
Send exactly one of amount or totalAmount per item. Sending both, or neither, fails the quote.
currencyCode is set once per line. Every item value on the line uses it.
If you send upc without gtin, the UPC is used as the GTIN.
Enum values are plain strings, for example "KILOGRAM".
Manifest API
Send manifest data for EU shipments
Provide Zonos with the conveyance and shipment data needed to quote and declare postal shipments into the European Union.
Sending data takes two calls:
manifestCreatecreates the manifest for a conveyance (a flight, truck, or vessel) and returns anid.manifestLineCreateadds one shipment (its items and parties) to that manifest, using theidfrom step 1. UsemanifestLinesCreateto add many lines in one request.Zonos calculates the landed cost for each line asynchronously after it is created. A successful
manifestLineCreateresponse means the line was accepted, not that it has been quoted. Item and party data is checked during that calculation, so follow the field guidance below even where the API itself does not reject a missing value.Field legend
Step 1: Create the manifest
carrierCodeserviceNumberarrivalDatedestinationCodeFRAorCDG.postalOperatorCodeJ1CGBA.originCodetransportationModeAIR,SEA,ROAD,RAIL,INLAND_WATERWAY, orOTHER. Defaults toAIR.weightweightUnitGRAM,KILOGRAM,OUNCE, orPOUND. Required whenweightis greater than zero.awbPrefixawbNumberamountmutation ManifestCreate($input: ManifestInput!) {manifestCreate(input: $input) {idarrivalDatecarrierCodedestinationCodepostalOperatorCodeserviceNumber}}RESPONSE
json
{ "data": { "manifestCreate": { "id": "manifest_abc123def456", "arrivalDate": "2026-10-15T09:00:00Z", "carrierCode": "LH", "destinationCode": "FRA", "postalOperatorCode": "J1CGBA", "serviceNumber": "LH901" } } }Step 2: Add manifest lines
manifestLineCreatetakes themanifestIdreturned in step 1 and oneManifestLineInput.Line fields
trackingNumbercurrencyCodeendUseDOCUMENTS,GIFT,FOR_RESALE,NOT_FOR_RESALE, orRETURN.itemspartiesORIGINand oneDESTINATIONparty. See party fields.shippingCostshippingCostCurrencyshippingCost. Defaults toUSDwhen omitted.taxIdNumberconsignmentWeightreferenceNumbershipperAccountIdItem fields
quantitycountryOfOriginamountamountortotalAmount.totalAmountamount, the unit value istotalAmount / quantity.descriptionmeasurementsWEIGHTper unit, orTOTAL_WEIGHTfor all units, not both). See below.hsCodecustomsDescriptiondescription.provinceOfOrigingtinupcgtinwhen nogtinis sent.skuproductIdnameproductCompositionmaterialandpercentage.marketplacenameandurl.Measurements. Each entry needs a
type,unitOfMeasure, andvalue.type:WEIGHT,TOTAL_WEIGHT,VOLUME,LENGTH,WIDTH,HEIGHT, orALCOHOL_BY_VOLUMEunitOfMeasure:GRAM,KILOGRAM,OUNCE,POUND,LITER,MILLILITER,CENTIMETER,METER,MILLIMETER,INCH,FOOT,YARD, orPERCENTAGEProduct composition. Each entry takes
materialandpercentage, plus optionalcountryOfMeltAndPour,countryOfCast,primaryCountryOfSmelt, andsecondaryCountryOfSmelt.Party fields
Each party has a
type(ORIGINfor the sender,DESTINATIONfor the consignee), aperson, and alocation.location.countryCodelocation.line1location.locality(city)location.postalCodelocation.administrativeAreaperson.firstNameperson.lastNameperson.emailperson.companyNameperson.phoneOrigin addresses can be in any country, so postal code and state are optional there. Many origins, such as Hong Kong, the UAE, and Qatar, have no postal codes. EU consignee addresses reliably have one, except in Ireland, where Eircode use is still incomplete.
Example
mutation ManifestLineCreate($manifestId: ID!, $input: ManifestLineInput!) {manifestLineCreate(manifestId: $manifestId, input: $input) {idtrackingNumberreferenceNumbertaxIdNumberlandedCost {id}}}RESPONSE
json
{ "data": { "manifestLineCreate": { "id": "manifest_line_def456ghi789", "trackingNumber": "LX123456789GB", "referenceNumber": "RMG-1001", "taxIdNumber": "IM3720000123", "landedCost": null } } }landedCostisnulluntil the asynchronous calculation finishes. Query the line again withmanifestLinesto read the quote.EU data notes
IOSS
Send the IOSS number in
taxIdNumberwhen the sale was made under IOSS. A valid IOSS number isIM, a 3-digit EU member state code, and 7 digits, for exampleIM3720000123. When it is valid, the line is quoted without import VAT, because the IOSS holder has already collected it. A number that is not in the IOSS format is ignored and the line is quoted with import VAT.CIF values
EU duty and VAT are assessed on the CIF value: goods plus shipping. Send
shippingCostandshippingCostCurrencyon every EU line. Without them, shipping is treated as zero and the quote understates the value.Destination party
Always send a
DESTINATIONparty with the consignee's EU country code. The destination country decides which rules apply to the line, so a line without it cannot be quoted as an EU shipment.Duplicate lines
referenceNumbermust be unique across all of your lines. If you send a line with areferenceNumberZonos already has, the existing line is returned and moved to the new manifest. Its items and parties are not updated. To correct a line, contact Zonos rather than resending it under the same reference.Values
amountortotalAmountper item. Sending both, or neither, fails the quote.currencyCodeis set once per line. Every item value on the line uses it.upcwithoutgtin, the UPC is used as the GTIN."KILOGRAM".Was this page helpful?