0% found this document useful (0 votes)
49 views38 pages

Integrator Guide v24101

Uploaded by

Beesou Shah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views38 pages

Integrator Guide v24101

Uploaded by

Beesou Shah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

Public API service

Technical User Guide and Supporting Information

Version 24.10.1

1 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Api overview....................................................................................................................................................... 3
Environment description ..................................................................................................................................... 4
Order creation – get your quote .......................................................................................................................... 7
Order creation – get countries, region, cities information ................................................................................ 14
Order creation – order request .......................................................................................................................... 15
Order – manage pickup timeframe ................................................................................................................... 23
Order – cancel order.......................................................................................................................................... 24
Order – get order details ................................................................................................................................... 25
Order – get order related documents ................................................................................................................. 27
Order – get order labels..................................................................................................................................... 28
Order – proforma create/upload ........................................................................................................................ 28
Order – delivery status ...................................................................................................................................... 30
Set up webhooks ............................................................................................................................................... 31
Appendix 1 Service types ................................................................................................................................. 34
Appendix 2 Warning codes ............................................................................................................................... 36
Appendix 3 Delivery substatuses ...................................................................................................................... 37

2 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Api overview

The Eurosender API offers businesses a fast and efficient solution for managing orders. Key functionalities
include:

• Quote Generation: Obtain detailed quotes, including pricing and shipping options, for various service
types.
• Order Validation: Validate orders before finalizing them to ensure accuracy.
• Order Creation: Seamlessly create an order in our system and generate label.
• Order Get Pickup Timeframes: Get pickup timeframes suitable for your shipment.
• Order Pickup Creation: Set pickup timeframe on created order.
• Order Cancellation: Cancel your order.
• Order Details and Statuses: Retrieve comprehensive details and statuses for each order.
• Document Access: Access essential documents, labels, and tracking numbers.
• Delivery Monitoring: Monitor delivery statuses in real time.
• Proforma Invoices: Create and upload proforma or commercial invoices with ease.

Real-Time Updates via Webhooks

The API features a robust set of webhooks, allowing you to subscribe to various events and receive real-time
updates, ensuring you always stay informed.

Available Webhooks

The Eurosender API offers various webhooks to provide real-time notifications and updates:

• Label Ready: Receive a notification when a shipping label is generated.


• Tracking Code Ready: Get alerted when a tracking code is available.
• Order Submitted to Courier: Be informed when an order is handed over to the courier.
• Order Cancelled: Get notified if an order is cancelled.
• Delivery Status: Receive updates on the delivery status of your shipments.

Environments

• Sandbox: A testing environment that replicates the production environment, allowing for safe testing and
development.
• Production: The live environment used for processing actual orders.

3 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Payment methods:

• User credit (Eurosender Wallet): prepayment with bank transfer, PayPal or Credit Card.
• Deferred payment: payment after the invoice is issued (subject to approved credit line and conditions).

Technical Specifications

The Eurosender API has the following key features:

• Currency: Only supported currency is EUR.


• Endpoints: Uses REST endpoints for integration.
• Documentation: Comes with comprehensive OpenAPI documentation.
• Date/Time Format: Follows the RFC 3339, section 5.6 standard. When only the date is relevant, the
time is included and set to 00:00:00.

Environment description

We provide separate environments for testing use and real ordering.


Description URL
Sandbox website, purpose testing https://sandbox.eurosender.com
Production website, purpose ordering https://www.eurosender.com

We provide separate API endpoint sets for production and sandbox environments.
Description URL
Endpoints URL for sandbox, purpose testing https://sandbox-api.eurosender.com
Endpoints URL for production, purpose https://api.eurosender.com
ordering

Please make sure your calls work on sandbox before creating production orders.

OpenAPI documentation available.

4 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Description URL
Sandbox API documentation https://sandbox-api.eurosender.com
Sandbox API OpenAPI https://sandbox-api.eurosender.com/docs.json
Production API documentation https://api.eurosender.com
Production API OpenAPI https://api.eurosender.com/docs.json

Account Requirements and API Access

To use the Eurosender API, users must have a business account with Eurosender. API access is enabled upon
request by Eurosender technical support by visiting https://www.eurosender.com/en/public-api.

Authentication Method

• x-api-key sent as a request header.

How to Obtain Your x-api-key

1. Log in to your Eurosender business account.


2. Navigate to the User Dashboard.
3. Go to the New Order section.
4. Select the Public API tab to retrieve your x-api-key.

5 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Example:

Header name Description Example


x-api-key Generated by tool in dashboard ce5fe737-00bb-498a-881e-8k453k0b1166

API Key Generation

• Sandbox x-api-key: Generated from the User Dashboard on the sandbox website. This key is valid
exclusively for the sandbox API.
• Production x-api-key: Generated from the User Dashboard on the production website. This key is valid
exclusively for the production API.
Sandbox balances

On sandbox environment, you can set your monetary balances to be able to test behaviour of your
integration in case of monetary limit hit.

6 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Order creation – get your quote

In quotes you can get available shipping options for your order and price for them. Also in quotes
response you can check for possibility to select custom pickup timeframes. Ensure a valid x-api-key is included in
the request header.

Example request for POST /v1/quotes endpoint:


{
"shipment": {
"pickupAddress": {
"country": "LU",
"zip": "1911",
"city": "Luxembourg",
"street": "9 Rue du Laboratoire"
},
"deliveryAddress": {

7 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
"country": "IT",
"zip": "33100",
"city": "Udine",
"street": "Via Galileo Galilei, 1A",
"region": "Udine"
},
"pickupDate": "2024-10-20"
},
"parcels": {
"packages": [
{
"parcelId": "A00001",
"quantity": 1,
"width": 14,
"height": 14,
"length": 15,
"weight": 2,
"content": "books",
"value": 150
}
]
},
"paymentMethod": "deferred",
"serviceType": "regular_plus",
"insuranceId": null
}

Object/field Mandatory Description Comment


"shipment": { required valid ISO 3166-1 valid ISO 3166-1
alpha-2 (two alpha-2 (two
"pickupAddress": { letters) code is letters) code is
"country": "LU" expected expected
"zip": "1911" optional string or null recommend filling
in to get precise
quote. Specific zips
can be subject to
surcharges
"street": "9 Rue du Laboratoire" optional string recommend filling
in to get precise
quote.
"deliveryAddress": { required valid ISO 3166-1 valid ISO 3166-1
alpha-2 (two alpha-2 (two
"country": "IT"
letters) code is letters) code is
expected expected
"zip": "33100" optional string or null recommend filling
in to get precise
quote. Specific zips
can be subject to
surcharges
"street": " Via Galileo Galilei, 1A " optional string recommend filling
in to get precise
quote.
"region": "Udine", optional string if required by
country and not
populated,

8 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Mandatory Description Comment
determined by zip
code
"pickupDate": "2024-09-04T00:00:00Z" optional we expect "2024- pickup date, can be
06- empty to retrieve
13T00:00:00+02:00 first possible date
" or "2024-06-13"
value
"parcels": { required shipments are required object
processed without
"packages": [ string, use
delays and
"envelopes" or
intervention of "packages" or
Technical Support if
“pallets”, use
dimensions are
separate array for
within service
each envelope or
limits:
package or pallet
"parcelId": "A00001", any value
STANDARD
"quantity": 1, (selection) integer
Max length: 200 default: 1
cm. example: 1
"width": 14, Length + girth ≤ 300 integer
cm example: 14
Max weight: 30 kg Width in
centimetres
"height": 14, PRIORITY integer
(regular_plus) example: 14
Max length: 274 cm Height in
Length + girth ≤ 400 centimetres
"length": 15, cm integer
Max weight: 68 kg example: 15
Length in
PRIORITY EXPRESS centimetres
"weight": 2, (express) number
One dimension can example: 2
exceed 120 cm (up Weight in
to max 300 cm) kilograms
"content": "books", Max weight: 68 kg string
example: books
"value": 150 PALLET integer
(freight) example: 150
Max height: 220 cm Parcel value in
Max weight: 1200 EUR.
kg

"paymentMethod": "deferred", optional string: “deferred” if payment


or “credit” method not
available for user,
then error
returned in
warnings array

9 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Mandatory Description Comment
Other payment
methods are not
supported.

"serviceType": "regular_plus", optional enum: "selection", recommended to


"flexi", define in request.
"regular_plus", If serviceType in
"express", request not
"freight" provided, order
part of response
cannot be
populated.
Service types
described in
Appendix 1
"insuranceId": null, optional integer, Additional
insurance ID

Successful response will return information that can be used to create an order request.

Object/field Usage in
following order Explanation
request
{
"options": {
"paymentMethods": [
{
"code": "credit",
"paymentDiscount": {
"rate": "0.00 %",
"discount": {
"original": {
"currencyCode": "EUR",
"gross": 0.0, “credit” and “deferred” (if enabled for an
yes account)
"net": 0.0
Other payment methods not supported
},
"converted": null
}
}
},
{
"code": "deferred",
"paymentDiscount": null
}

10 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Usage in
following order Explanation
request
],
"serviceTypes": [
service types described in Appendix 1
{ yes, use this
object to get all
available service
types and
additional info for
them. Rely on this
object for further
creation of order.

"name": "regular_plus", enum: "selection", "flexi", "regular_plus",


"express" and
"freight"
Service types described in Appendix 1

"minPickupDate": "2024-06-13T00:00:00+02:00", array of minimal pickup dates available,


based on the addresses provided
"isCallRequired": false, for some couriers, a phone call to the
courier to do the actual pickup is required.
If a call for pickup is required, is set to True
in response
"isLabelRequired": true, If labels must be printed, the field
isLabelRequired is set to True
"edt": "4", estimate delivery time for selected service
type
"price": {
"original": {
"currencyCode": "EUR",
"gross": 14.36,
gross and net price
"net": 12.27
},
"converted": null
},
"pickupDateFee": null, if any additional fee exists for selected
pickup date, then is populated.
Returns fee object or null.
"insurances": [
{
we provide the ability to select different
"id": 109, (additional) insurances for an additional
"coverage": 150.0, fee. Default insurance with price 0 is also
listed (depending on service type) but
"text": "Insurance coverage up to the given value of the shipment",
must not be selected as additional
"price": { insurance. Repeat quote with inserted Id
"original": { (integer) to get updated quote

"currencyCode": "EUR",

11 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Usage in
following order Explanation
request
"gross": 17.67,
"net": 15.1
},
"converted": null
}
}
],
"pickupExcludedDates": [ this array contains a list of dates that are
"2024-06-12T00:00:00+02:00", not available for pickup (e.g. weekends,
public holidays). If a date from this array is
], selected, an error will be returned by the
API.
"addOns": [], any available add-ons
"courierTermsAndConditionsLink": "***" link to courier Terms and Conditions
},
"generalTermsAndConditionsLink": "***" link to general Terms and Conditions
},
“PickupTimeFrameSelectionPossible": true yes, defines if
selected courier
If true then you can create order with
supports pickup
option to define pickup timeframes
request with
If false then timeframes are not supported
custom pickup
timeframes
"order": { If serviceType in request not provided,
order part of response cannot be
populated.
"totalPrice": {
"original": {
Order block lists
"currencyCode": "EUR",
sums for selected
"gross": 14.36, final price for selected service type
service type.
(including discounts and additional
"net": 12.27 If you want to add insurance cost). Gross and net
}, additional
"converted": null insurance to the
order, repeat the
},
quote with
"insuranceId": null, inserted insurance shows ID of insurance
"parcels": [ Id (integer) to get
{ the updated total
"parcelId": "A00001" price.
lists parcels that were used when calling
} quote
],
"paymentDiscount": null, user credit payment method can include a
discount

12 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Usage in
following order Explanation
request
discount amount depends on user type
and service type
returns discount object or null

"addOns": [], any addons if selected


"serviceType": "regular_plus", enum: "selection" "flexi" "regular_plus"
"express"
"freight"
service types described in Appendix 1
"minPickupDate": "2024-06-13T00:00:00+02:00", earliest available pickup dates
"estimatedDeliveryTime": "4", estimate delivery time for service type
"courierId": 119, courier ID
"courierTag": null not use
},
"warnings": [ warning block
{
"code": "region-mandatory-for-country",
"message": "This field is mandatory.", object lists all warnings to be fixed for
creation of order
"parameterPath": "shipment.deliveryAddress.region"
}
]
}

Key Information from the Response Body

• Warnings: Refer to appendix 2 for the list of warnings.

Quotes Response Details:

• Price Attempt. Quotes will attempt to return a price even if the order cannot be placed with the same
parameters (e.g., pickup date in the past, insufficient credits, etc.).
If serviceType in request not provided, order part of response cannot be populated.
• Time-Sensitive Variability. Response details can vary based on the time of day. For instance, a quote
request made in the morning may allow for a same-day pickup (depending on the service type), while an
afternoon request may shift the earliest pickup date to the next day.
• Price Changes. Prices are subject to change.
• If pickupTimeFrameSelectionPossible" parameter is true, then the selected courier provides an option to
select custom pickup timeframes.

13 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Order creation – get countries, region, cities information

For some countries, additional details such as region or city can be defined in an order request. This may
be indicated by a warning in the quotes response.
To obtain detailed information about all countries, use the GET /v1/countries endpoint. The response will provide:
• A comprehensive list of countries
• Supported service types for each country
• Any required custom fields
• Option for input region or city information, where applicable
• Full list of cities is returned from GET /v1/countries/:countryCode/regions endpoint (replace :countryCode
with proper code).
• Full list of cities is returned from GET /v1/countries/:countryCode/cities endpoint (replace :countryCode with
proper code).

Example Response for one country

Response Usage in following Explanation


order request
{
"id": 105, no integer, country Id
"code": "IT", can be used string, country code, to be used in
further references to Country
"name": " Italy", no string, country name
"requiresRegion": true, can be used, if has If "requiresRegion" has value “true”
value True then Region can be used for order
request with this country
"requiresCity": false, can be used, if has If "requiresCity" has value “true” then
value True City can be used for order request with
these countries
"active": true, if true then order can blocked countries (due to sanctions
be created from this etc.), are marked with a flag
country active=false. Blocked countries cannot
be used for ordering
"isEu": true, no If country is within EU
"countryCustomFields": { can be used Object with specific country
information
"supportedServiceTypeIds": [ can be used Here you can confirm supported
service types
"selection",
"flexi",
"express",
"regular_plus",
"individual_offer"
],
"customFields": [ can be used here lists any additional information
can be added per country

14 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Response Usage in following Explanation
order request
{
"name": "local_phone_required", can be used custom field object
"type": "info", no
"length": null, no
"required": false, can be used will be true if any additional
information can be provided per
"options": [], can be used
country
"label": "Local phone is required", can be used additional fields that can be provided
for some countries, like doorbell for
"additionalInfo": "The courier will call you before pick-up, a local phone can be used
Germany
number is mandatory",
"placeholder": null no Not used
{ indicates if some parts of the country
are considered as remote areas (can be
subject to delayed collection)
"name": "remote_area",
"type": "info",
"length": null,
"required": false,
"options": [],
"label": "Remote area info",
"additionalInfo": "Collection in remote areas may be delayed",
"placeholder": null
}

Order creation – order request

Orders are placed in our system with help of POST /v1/orders endpoint. Order validation with POST
/v1/orders/validate_creation endpoint is optional, same validations are performed during order creation.
Both orders and validation endpoints use the same payload. Ensure that a valid x-api-key is included in the
request header for each request.
Label generation and pickup request placement happens after order is created in our system.
Explanation how to define custom pickup timeframes in pickup request you can find in next chapter.

Example request to POST /v1/orders :


{
"shipment": {
"pickupAddress": {
"country": "LU",
"zip": "1911",
"city": "Luxembourg",
"cityId": null,
"street": "9 Rue du Laboratoire",
"additionalInfo": null,

15 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
"region": null,
"regionCode": null,
"regionId": null,
"customFields": []
},
"deliveryAddress": {
"country": "IT",
"zip": "33100",
"city": "Udine",
"cityId": null,
"street": "Via Galileo Galilei, 1A",
"additionalInfo": null,
"region": null,
"regionCode": "UD",
"regionId": null,
"customFields": []
},
"pickupDate": "2024-06-21",
"independentPickup": false,
"pickupContact": {
"name": "Eurosender SARL",
"email": "[email protected]",
"phone": "+3905530615"
},
"deliveryContact": {
"name": "Eurosender SARL",
"email": "[email protected]",
"phone": "+393402182161"
},
"addOns": []
},
"parcels": {
"packages": [
{
"parcelId": "A00001",
"quantity": 1,
"width": 14,
"height": 14,
"length": 15,
"weight": 2,
"content": "books",
"value": 150
}
]
},
"serviceType": "regular_plus",
"paymentMethod": "credit",
"insuranceId": null,
"orderContact": {
"email": "[email protected]"
},
"comment": null,
"labelFormat": "pdf"
}

16 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Mandatory Description Explanation

"shipment": { required required

"pickupAddress": { required required


string
"country": "LU", required example: LU
ISO 3166-1 alpha-2
string system can handle specific formats (e.g. zip codes
"zip": "1911", required example: 1911 containing dashes or spaces). For example, SI-1000
Latin characters only would be converted and stored as 1000
string or null
"city": example: Luxembourg if empty, then value from “zip” will be stored
optional
"Luxembourg", special characters not allowed if empty, might cause delays with shipment
latin characters only
supporting countries returned in /v1/countries
"cityId": null, optional integer or null List of values can be retrieved from endpoint
/v1/countries/{countryCode}/cities
string or null
if empty, then value “NO STREET PROVIDED” will be
"street": "9 Rue du example: 9 Rue du Laboratoire
optional stored
Laboratoire", special characters not allowed
if empty, might cause delays with shipment
latin characters only
string
"additionalInfo":
optional special characters not allowed
null,
latin characters only
"region": null, list of countries where supported is string, for example "Agrigento"
retrieved from endpoint
"regionCode": null, optional /v1/countries/{countryCode}/regions string, for example "AG"
if provided where not supported will not
"regionId": null, be stored integer, for example 2704
enum:
additional address fields that can be provided for
[property_type, property_name,
some countries, like doorbell for Germany. Availability
"customFields": [] optional doorbell, door_code, floor,
of the fields can be retrieved from endpoint
apartment_number, sector,
/v1/countries
neighborhood]
},

"deliveryAddress": { required required


string
"country": "IT", required example: LU
ISO 3166-1 alpha-2
string system can handle specific formats (e.g. zip codes
"zip": "33100", required example: 1911 containing dashes or spaces). For example, SI-1000
latin characters only would be converted and stored to 1000
string or null
example: Udine if empty, then value from “zip” will be stored
"city": "Udine", optional
special characters not allowed if empty, might cause delays with shipment
latin characters only
supporting countries returned in /v1/countries
"cityId": null, optional integer or null List of values can be retrieved from endpoint
/v1/countries/{countryCode}/cities

17 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Mandatory Description Explanation
string or null
if empty, then value “NO STREET PROVIDED” will be
"street": " Via example: 9 Rue du Laboratoire
optional stored
Galileo Galilei, 1A ", special characters not allowed
if empty, might cause delays with shipment
latin characters only
string
"additionalInfo":
optional special characters not allowed
null,
latin characters only
"region": null, string, for example "Agrigento"
list of countries where supported is
"regionCode": retrieved from endpoint
optional string, for example "AG"
"UD", /v1/countries/{countryCode}/reg
ions
"regionId": null, integer, for example 2704
enum:
additional address fields that can be provided for
[ property_type, property_name,
some countries, like doorbell for Germany. Availability
"customFields": [] optional doorbell, door_code, floor,
of the fields can be retrieved from endpoint
apartment_number, sector,
/v1/countries
neighborhood]
},
from Quotes endpoint response you can get list of
dates where pickup is not possible.
"pickupDate": example format "2024-06- if you request pickup for any date in past, then first
"2024-07- optional 13T00:00:00+02:00" or "2024-06-13" available pickup date will be booked.
04T00:00:00Z", if you request pickup for current day but pickup will
not be available, then first available pickup date will
be booked
enables option to define pickup timeframe
if false, then default pickup timeframe is used.
"independentPicku if true, timeframe can be defined with a call to POST
optional boolean
p": false, /v1/pickup/{orderCode} endpoint if not called within 30
minutes, pickup request created with default value
(explained in next chapter)
if whole array is missing, email from user profile is
"pickupContact": { optional
used as contact email.
string
"name": optional
special characters not allowed
"Eurosender SARL",
Latin only
"email":
optional if empty, null or missing then email from user profile is
"[email protected] string, example "[email protected]"
used as contact email.
om",
string if empty, null or missing then will be added mock
"phone": optional
national and international formats are number 000000
"+442031292884"
accepted. if empty, might cause delays with shipment
},

"deliveryContact": { optional
string
"name":
optional special characters not allowed
"Eurosender SARL",
Latin only
"email":
"[email protected] optional string, example "[email protected]" if empty, might cause delays with shipment
om",

18 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Mandatory Description Explanation
"phone": " string if empty, null or missing then will be added mock
+393402182161 optional national and international formats are number 000000
" accepted. if empty, might cause delays with shipment
}, - -

"addOns": [] optional for addons if any used

},
if request contains no parcels, system will create a
"parcels": { optional parcel order with one package array, default
dimensions and mock content value.
"packages": [ optional used for shipping packages

{
"parcelId": string
optional used to identify parcel in shipment
"A00001", example: A00001
if missing any of dimensions or value 0 then uses
"quantity": 1, optional
default dimension
if missing any of dimensions or value 0 then uses
"width": 14, optional
shipments are processed without delays default dimension
and intervention of Technical Support if if missing any of dimensions or value 0 then uses
"height": 14, optional
dimensions are within service limits default dimension
if missing any of dimensions or value 0 then uses
"length": 15, optional STANDARD default dimension
(selection)
Max length: 200 cm.
Length + girth ≤ 300 cm
Max weight: 30 kg

PRIORITY
(regular plus)
Max length: 274 cm
Length + girth ≤ 400 cm if missing any of dimensions or value 0 then uses
Max weight: 68 kg default dimension
"weight": 2, optional be sure to set correct weight as in some cases sending
PRIORITY EXPRESS wrong weight might cause charges or shipment might
(express) be delayed
One dimension can exceed 120 cm (up to
max 300 cm)
Max weight: 68 kg

PALLET
(freight)
Max height: 220 cm
Max weight: 1200 kg
integer
if empty, null or missing then will be added mock
"content": "books", optional special characters not allowed
content “default”
Latin only
"value": 150 optional integer parcel value recommended to be more than 0€

19 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Object/field Mandatory Description Explanation

],

},
"serviceType": enum: "selection", "flexi", "regular_plus",
required service types described in Appendix 1
"regular_plus", "express", "freight"
"paymentMethod": payment method, where credit is for User credits (pre-paid, Wallet). Deferred must be additionally
required
"deferred", approved to be enabled for use. Other payment methods are not supported
"insuranceId": null, optional can have Id of additional insurance or removed from request.
if whole block is missing, email from user profile is
"orderContact": { optional
used
"email":
if empty, null or missing then email from user profile is
"[email protected] optional string, example "[email protected]"
used as contact email
m",
},
"comment": "2nd
optional string
floor",
Important!
"labelFormat": optional string be sure to define the desired format of the label
"pdf" pdf or zpl before the order is created (PDF or ZPL). The default
label format is PDF.

A successful request with no validation errors will return a success response code (code 200). If validation fails
for any reason, the response will include a detailed error message.
Example Error Response (Redacted):
{
"status": 422,
"violations": [
{
"propertyPath": "paymentMethod",
"message": "Selected payment method is not appropriate",
"code": "payment-method-invalid"
}
],
"detail": "paymentMethod: Selected payment method is not appropriate",
"type": "/validation_errors/payment-method-invalid",
"title": "An error occurred"
}

Example Successful Response:


{
"orderCode": "625706-24",
"status": "Tracking",
"serviceType": "regular_plus",
"language": "en",
"email": "[email protected]",
"paymentMethod": "deferred",
"currencyCode": "EUR",
"vatRate": "17%",
"parcels": {
"envelopes": [],

20 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
"packages": [
{
"parcelId": "A00001",
"orderCode": "625706-24",
"type": "package",
"weight": 2.0,
"length": 15,
"width": 14,
"height": 14,
"content": "books",
"value": 150,
"price": {
"original": {
"currencyCode": "EUR",
"gross": 14.36,
"net": 12.27
},
"converted": null
},
"tracking": {
"number": "794998428077",
"url": "https://www.fedex.com/fedextrack/?trknbr=794998428077",
"deliveryStatus": null
}
}
],
"pallets": [],
"vans": [],
"trucks": [],
"nonStandard": []
},
"courier": {
"id": 119,
"shortName": "FedEx",
"countryCode": "IT",
"email": "[email protected]",
"phone": "+31622373485"
},
"shipment": {
"pickupAddress": {
"street": "9 Rue du Laboratoire",
"zip": "1911",
"city": "Luxembourg",
"region": null,
"country": "LU"
},
"pickupContact": {
"name": "Eurosender SARL",
"phone": "+3905530615"
},
"deliveryAddress": {
"street": "Via Galileo Galilei, 1A",
"zip": "33100",
"city": "Udine",
"region": {
"id": 2805,
"name": "Udine"

21 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
},
"country": "IT"
},
"deliveryContact": {
"name": "Eurosender SARL",
"phone": "+393402182161"
},
"pickupDate": "2024-06-21T00:00:00+02:00",
"addOns": [],
"routeDistance": 0.0
},
"estimatedDeliveryTime": "4",
"price": {
"original": {
"currencyCode": "EUR",
"gross": 14.36,
"net": 12.27
},
"converted": null
},
"discount": null,
"coupon": null,
"insurance": null,
"isCallRequired": false,
"isLabelRequired": true,
"labelLink": "https://s3.eu-central-1.amazonaws.com/www.eurosender.com-
stage/labels_test/f99a64e5f02c3cdbe43f918cfcf63dc3.zpl",
"labelFormat": "zpl",
"comment": "",
"documents": [],
"created": "2024-06-20T12:51:42+02:00"

Important Information from the Response Body

• Order Status: The status of an order can be:


o Pending
o Order Received
o Deferred Payment
o Confirmed
o Tracking
o Cancelled
o Label Error
o Awaiting Payment
o Awaiting Customs Documentation
o Awaiting Additional Payment

In a typical workflow, when an order is successfully placed via our API, the status becomes Order Received
(or Deferred Payment if using deferred payment; the status can also be tracking if labels are created immediately).
The next status, such as Confirmed or Tracking, depends on the courier. Delivery statuses are returned by specific

22 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
endpoint and webhook. If the status is Awaiting Customs Documentation, the next steps involve using the Proforma
endpoints.
• Courier Contact Details: Includes the contact details of the courier processing the order, which is
essential for "call for pickup" requirements.
• Label Link: The labelLink URL for retrieving labels is populated when labels are available. Note that not
all couriers generate labels at the same time the order is placed. We aim to provide the label as soon as
it can be generated by the carrier.
• Label Printing Requirement: If labels need to be printed, the isLabelRequired field is set to True. This is
indicated in the responses from the POST /v1/quotes, POST /v1/orders, and GET /v1/orders/{orderCode}
endpoints.
• Documents: Lists any additional documents that must be attached. Check the array to obtain the
document ID, which can be used with the orders/.../documents endpoint (described below).
• Tracking Information: The parcels->packages->tracking field contains a URL for viewing tracking
information on the courier's website once a tracking number is assigned to the order.

Troubleshooting tips: Seamless work of API depends on many interconnected systems. In case of scheduled
maintenance or technical issue courier api can be unavailable and this can cause labels not to be dispatched in
response of order request endpoint. Integrator might consider developing a fallback scenario for calling GET
/v1/orders/{orderCode} or GET /v1/orders/{orderCode}/labels in timespan of first 5 minutes, 10 minutes, 1 hour if label
or tracking number was not present in original response of order request endpoint.

Order – manage pickup timeframe

Our api provides an option to set pickup timeframe for your shipment. Option is available for couriers
that support it, and this is visible in api.

Quotes endpoint response returns option availability in “PickupTimeFrameSelectionPossible" parameter


per each service type in service types array.
If “PickupTimeFrameSelectionPossible": true then selected courier supports creation of pickup request with
custom timeframe.
If “PickupTimeFrameSelectionPossible": false then selection of pickup timeframe is not supported for
selected courier.

If option for custom pickup timeframe is supported and desired by User, then "independentPickup"
parameter can be specified in order request to POST /v1/orders endpoint.

If order request parameter "independentPickup": false then pickup request will be


placed with default pickup timeframe. By request to our Technical Support, we can configure custom default
timeframe for you.
If order request parameter "independentPickup": true then after order is cussessfully created you have
23 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg
VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
30-minute timespan to get pickup timeframes and trigger pickup request manually. Get pickup timeframes for
desired pickup date in response of GET/v1/pickup/{orderCode}/availability endpoint.

Example response GET/v1/pickup/{orderCode}/availability:


[
{
"pickupDate": "2019-08-24T14:15:22Z",
"timeFrom": [
"09:00",
"09:30",
"10:00",
"10:30",
"11:00"
],
"timeTo": [
"13:00",
"13:30",
"14:00",
"14:30"
]
}
]

Use desired timeframes from response in payload for POST /v1/pickup/{orderCode} endpoint.

Example request to POST /v1/pickup/{orderCode}:


{
"pickupTimeFrom": "09:00",
"pickupTimeTo": "14:00"
}
If request is successful then pickup request will be booked with custom pickup timeframe you defined.

Caveats:
If POST /v1/pickup/{orderCode} endpoint not called within 30 minutes after order with
"independentPickup": “true” placement, pickup request is automatically placed with default pickup timeframe.
Call to endpoint /v1/pickup/{orderCode} with order code that was created with "independentPickup":
false returns error.

Order – cancel order

You can submit cancel order request with help of endpoint DELETE /v1/orders/{orderCode}
Please use {orderCode} returned in response of order creation endpoint. Ensure that a valid x-api-key is included
in the request header for each request.
Successful 204 response code indicates that order was cancelled.
Please note that system will try to cancel label and pickup request with courier so orders where
shipment was already picked up by courier cannot be cancelled. Also attempt to cancel already cancelled order
results in an error.
24 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg
VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
In case specific order cancellation case is problematic our Technical Support will contact you.

Order – get order details

To obtain full order details, use the following endpoint: GET /v1/orders/{orderCode}. Replace
{orderCode} with the specific order code that was returned during order creation.
The response from this endpoint will be the same as that from the POST /v1/orders endpoint.

Ensure that a valid x-api-key is included in the request header.

Example response:
{
{
"orderCode": "625706-24",
"status": "Tracking",
"serviceType": "regular_plus",
"language": "en",
"email": "[email protected]",
"paymentMethod": "deferred",
"currencyCode": "EUR",
"vatRate": "17%",
"parcels": {
"envelopes": [],
"packages": [
{
"parcelId": "A00001",
"orderCode": "625706-24",
"type": "package",
"weight": 2.0,
"length": 15,
"width": 14,
"height": 14,
"content": "books”,
"value": 150,
"price": {
"original": {
"currencyCode": "EUR",
"gross": 14.36,
"net": 12.27
},
"converted": null
},
"tracking": {
"number": "794998428077",
"url": "https://www.fedex.com/fedextrack/?trknbr=794998428077",
"deliveryStatus": null
}
}
],

25 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
"pallets": [],
"vans": [],
"trucks": [],
"nonStandard": []
},
"courier": {
"id": 119,
"shortName": "FedEx",
"countryCode": "IT",
"email": "[email protected]",
"phone": "+31622373485"
},
"shipment": {
"pickupAddress": {
"street": "9 Rue du Laboratoire",
"zip": "1911",
"city": "Luxembourg",
"region": null,
"country": "LU"
},
"pickupContact": {
"name": "Eurosender SARL",
"phone": "+3905530615"
},
"deliveryAddress": {
"street": "Via Galileo Galilei, 1A",
"zip": "33100",
"city": "Udine",
"region": {
"id": 2805,
"name": "Udine"
},
"country": "IT"
},
"deliveryContact": {
"name": "Eurosender SARL",
"phone": "+393402182161"
},
"pickupDate": "2024-06-21T00:00:00+02:00",
"addOns": [],
"routeDistance": 0.0
},
"estimatedDeliveryTime": "4",
"price": {
"original": {
"currencyCode": "EUR",
"gross": 14.36,
"net": 12.27
},
"converted": null
},
"discount": null,
"coupon": null,
"insurance": null,
"isCallRequired": false,
"isLabelRequired": true,
"labelLink": "https://s3.eu-central-1.amazonaws.com/www.eurosender.com-

26 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
stage/labels_test/f99a64e5f02c3cdbe43f918cfcf63dc3.zpl",
"labelFormat": "zpl",
"comment": "",
"documents": [
{
"id": "label_zpl_f99a64e5f02c3cdbe43f918cfcf63dc3",
"type": "label",
"fileFormat": "zpl"
}
],
"created": "2024-06-20T12:51:42+02:00"
}

Key Information from the Response Body

• Label Printing Requirement: The isLabelRequired field will be set to true if labels need to be printed. This
is reflected in the responses from:
oPOST /v1/quotes
oPOST /v1/orders
oGET /v1/orders/{orderCode}
• Label Retrieval: The labelLink URL is provided for retrieving labels when they become available. Note that
not all couriers generate labels at the time of order placement.
• Document IDs: The documents array includes the IDs of documents, which can be used with specific
document endpoints for further actions.

Order – get order related documents

To obtain order-related documents, use the following endpoint: GET


/v1/orders/{orderCode}/documents/{id}
Replace {orderCode} with your specific order code and {id} with the document ID. The document ID can
be found in the documents array of the responses from the POST /v1/orders or GET /v1/orders/{orderCode}
endpoints.

Make sure to include a valid x-api-key in the request header.

The response will provide the requested order-related document (e.g., Invoice, Label). Additional documents
that need to be printed, such as a High Value Report, can also be retrieved through this endpoint.

Use the appropriate Accept header based on the document format:


• For PDF documents: application/pdf
• For ZPL (Zebra) documents: x-application/zpl

27 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Order – get order labels

To retrieve order labels, use the following endpoint: GET /v1/orders/{orderCode}/labels


Replace {orderCode} with the specific order code provided during order creation.

Include a valid x-api-key in the request header.

The response will return the order label in the format specified when the order was created.
• For PDF format, use the application/pdf Accept header.
• For ZPL (Zebra) format, use the x-application/zpl Accept header.

Order – proforma create/upload

If the order status after creation is "Awaiting customs documentation", you have to use the Proforma endpoints.
Alternatively, you can submit the proforma by following the link provided in the email, like orders placed via the
website.

Ensure that a valid x-api-key is included in the request header for all endpoints mentioned below.

An order with the status "Awaiting customs documentation" will not be processed further until the required
additional data is sent via the POST /v1/proforma endpoint, or the proforma is uploaded through the alternative
method (e.g., via the email link).

To upload any PDF documents (such as invoices), use the POST /v1/proforma/upload endpoint. The content must
be in base64 encoded format.

Example request:
{
"name": "some_invoice",
"mimetype": "application/pdf",
"content":
"Q2ZDhlZTk5OTBjNGFmYzk4ZmVlPgo8MDNiNmIwNzMxYjdiNDZkOGVlOTk5MGM0YWZjOThmZWU+IF0gPj4Kc3RhcnR4cmVmCjgz
OTgKJSVFT0Y=......"
}

The response will provide a hashName, which can be used in the subsequent call to the POST /v1/proforma
endpoint.

To create a proforma, send a request to the POST /v1/proforma endpoint. For detailed instructions on how to fill
out a proforma, please refer to the Proforma Invoice Guide.

Example request:

28 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
{
"shipper": {
"contactPerson": "Shipper-tester",
"companyName": "Shipper-comp",
"phone": "+442031292884",
"email": "[email protected]",
"street": "Rue du Laboratorue",
"zip": "1911",
"city": "Luxembourg",
"country": "LU",
"vat": "1223243",
"eoriNumber": "EOR1223243"
},
"receiver": {
"contactPerson": "Receiverexample",
"companyName": "Shiping-parts-receiver",
"phone": "+442031292884",
"email": "[email protected]",
"street": "Baker street",
"zip": "NW1 4NP",
"city": "London",
"country": "GB",
"vat": "129323232",
"eoriNumber": "EOR1223243"
},
"invoices": [
{
"hashName": "1e0af8f1180004a0f1a422b48e77ab600018032136.pdf",
"number": "INV-23-12019",
"date": "2024-06-13"
}
],
"items": [
{
"description": "Gear",
"country": "GB",
"quantity": 1,
"weight": 2,
"value": 150,
"hsCode": "87149630"
}
],
"orderCode": "102200-24",
"reason": "commercial",
"currency": "EUR"
}

A successful response code indicates that the proforma has been created.

Once the proforma is created, the order will be processed further and submitted to the courier.

29 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Order – delivery status

After courier picks up your shipment you can monitor status events up to delivery. Delivery statuses
start to be dispatched as they are updated by the courier.
You can get status list by calling the endpoint GET /v1/orders/{orderCode}/tracking, where {orderCode} is
the code, you received when creating the order.

The response will include tracking information and statuses inside checkpoints array.

Please note that this feature is only available in the production environment.

Example response:
{
"parcels": [
{
"parcelId": "ecab2e6a-917e-49b4-99aa-3b4dc9b3ee9a",
"orderCode": "740001-20",
"trackingNumber": "91120016997",
"currentStatus": "InTransit",
"currentSubstatus": "InTransit_001",
"updatedDate": "2024-06-10T13:11:27+02:00",
"expectedDeliveryDate": null,
"pickupDate": "2024-06-10T14:34:31+02:00",
"deliveryDate": null,
"signedBy": null,
"checkpoints": [
{
"eventDate": "2024-06-10T14:34:31+02:00",
"status": "InTransit",
"substatus": "InTransit_001",
"location": null,
"countryCode": null,
"message": "Data sent"
}
]
},
{
"parcelId": "c8f25422-0078-511e-8cec-00011206943f",
"orderCode": "120014-24",
"trackingNumber": "00931017539",
"currentStatus": "InTransit",
"currentSubstatus": "InTransit_001",
"updatedDate": "2024-06-10T13:11:27+02:00",
"expectedDeliveryDate": null,
"pickupDate": "2024-06-10T14:34:31+02:00",
"deliveryDate": null,
"signedBy": null,
"checkpoints": [
{
"eventDate": "2024-06-10T14:34:31+02:00",
"status": "InTransit",
"substatus": "InTransit_001",

30 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
"location": null,
"countryCode": null,
"message": "Data sent"
}
]
}
]
}

New delivery statuses are added as checkpoints and included in the checkpoints array as soon as they become
available. Regular updates with tracking information are also provided through webhook events.

The following delivery statuses are returned:

Delivery status Description


Information Received Courier has received request from shipper and is about to pick up the shipment.
In Transit Courier has accepted or picked up shipment from shipper. The shipment is on the way.
Out for Delivery Courier is about to deliver the shipment, or it is ready to pick up.
Failed Attempt Courier attempted to deliver but failed, and usually leaves a notice and will try to deliver again.
Delivered The shipment was delivered successfully.
Available for Pickup The package arrived at a pickup point near you and is available for pickup.
Exception Customs hold, undelivered, returned shipment to sender or any shipping exceptions.
Expired Shipment has no tracking information
Pending New shipments added that are pending to track, or new shipments without tracking information available yet.

A complete list of substatuses can be found in appendix 3.

Set up webhooks

You can subscribe to various events sent by our webhooks. To enable and manage webhooks, please
follow these steps:
1. Log in to your Eurosender business account.
2. Navigate to the User Dashboard.
3. Go to the New Order section and select the Public API tab. Here, you can enable webhooks and monitor
their status.
For example, how looks on sandbox:

31 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Supported Webhooks:

1. Label(s) Ready
o ID: 1
o Code: order_label_ready
o Trigger: When label(s) for the order become available. Applies for cases where label is not ready
immediately after order creation and only for orders that require label printing.

2. Order Submitted to Courier


o ID: 2
o Code: order_submitted_to_courier
o Trigger: When the shipping is booked in the courier's system.

3. Tracking Code(s) Ready


o ID: 3
o Code: order_tracking_ready

32 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
o Trigger: When tracking codes become available for the order, provided they were not available
when the order was submitted to the courier.

4. Order Cancelled
o ID: 4
o Code: order_cancelled
o Trigger: When the order is cancelled.

5. Delivery Status Updated


o ID: 5
o Code: delivery_status_updated
o Trigger: When a new delivery status event is dispatched.

For the webhooks “Label(s) Ready”, “Order Submitted to Courier”, “Tracking Code(s) Ready”, and “Order Cancelled”,
data is sent in the request header according to the specified pattern.

Example:
Webhook-Id: unique_id_for_each_webhook_sent
Webhook-Event: code
Webhook-Signature: ...
Data in request body (json): {
triggerId: id,
orderCode: "123456-12",
courierId: 23 // only for webhhok 2
trackingCodes: [ // only for webhooks 2, 3
{
orderCode: "123456-12",
trackingNumber: "11111111",
trackingUrl: "https://demo.com/?track=1111111"
}
]
}

The Delivery Status webhook sends data in the request header following the pattern specified below. The
payload structure is identical to that of the GET /v1/orders/{orderCode}/tracking endpoint.

Example:
{
"notifications": [
{
"trackingDetails": {
"parcels": [
{
"parcelId": "ebbfce6a-000e-00b4-99aa-004dc9b3ee9a",
"orderCode": "011231-24",
"trackingNumber": "10000010007",
"currentStatus": "InfoReceived",
"currentSubstatus": "InfoReceived_001",

33 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
"updatedDate": "2024-06-11T09:55:47+02:00",
"expectedDeliveryDate": null,
"pickupDate": "2024-06-10T14:34:31+02:00",
"deliveryDate": null,
"signedBy": null,
"checkpoints": [
{
"eventDate": "2024-06-10T14:34:31+02:00",
"status": "InTransit",
"substatus": "InTransit_001",
"location": null,
"countryCode": null,
"message": "Data sent"
},
{
"eventDate": "2024-06-11T11:18:24+02:00",
"status": "InfoReceived",
"substatus": "InfoReceived_001",
"location": "LJUBLJANA",
"countryCode": null,
"message": "P&S/P&R picked up"
}
]
}
]
},
"orderCode": "736361-24",
"triggerId": 5
}
]
}

Appendix 1 Service types

In API requests and responses, we use the following names for service types: "selection", "flexi",
"regular_plus", “express", "freight".

Below you can find a mapping to names used on the platform and a brief description.

Value (enum) Service name Allowed parcel type Description


selection Standard only parcels of type package allowed Road service. Label is brought by
driver at shipment collection.
Maximum shipment weight 30kg.
flexi Standard-Flexi only parcels of type package allowed Road service. Label is generated
together with order creation and
can be printed before collection.
Maximum shipment weight 30kg.

34 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
regular_plus Priority only parcels of type package allowed. Road service. Label is generated
together with order creation and
can be printed before collection.
Maximum shipment weight 68kg.
express Priority Express only parcels of type package or Air and road service. Fastest
envelopes allowed. available. Label is generated
together with order creation and
can be printed before collection.
Maximum shipment weight 68kg.
freight Standard Pallet only parcels of type package and Groupage service for shipment of
pallets allowed. pallets (and other bulky or heavy
loads). Maximum shipment weight
is 1200 kg.

35 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Appendix 2 Warning codes

• b2b-not-confirmed Account is not confirmed and don't have access to business price list
• user-restricted Account restricted and cannot place orders
• currency-not-supported-for-payment-method Selected currency is not available for selected payment
method
• payment-method-not-enabled
• insufficient-payment-balance
• pickup-in-past
• pickup-before-min
• pickup-date-not-available
• service-switched Service type was switched
• insurance-invalid
• addon-invalid
• coupons-not-supported-for-service
• coupon-code-invalid
• coupon-discount-inferior
• global-route-not-avail
• city-mandatory-for-country
• city-invalid-for-country
• region-mandatory-for-country
• region-invalid-for-country
• address-field-length
• distance-or-geolocation-required
• parcel-type-required
• parcel-type-not-supported
• parcel-type-exclusive
• parcel-type-exclusive-expr
• parcel-over-weight
• parcel-over-weight
• parcel-over-girth
• parcel-over-dimensions

36 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Appendix 3 Delivery substatuses

Delivered Shipment delivered successfully Delivered_001


Picked up by the customer Package picked up by the customer Delivered_002
Sign by customer Package delivered to and signed by the customer Delivered_003
Delivered and received cash Package delivered to the customer and cash collected on delivery Delivered_004
on delivery
Available for pickup The package arrived at a pickup point near you and is available for AvailableForPickup_001
pickup
Exception Delivery of the package failed due to some shipping exception Exception_001
Customer moved Delivery of the package failed as the customer relocated Exception_002
Customer refused delivery Delivery of the package failed as the recipient refused to take the Exception_003
package due to some reason
Delayed (Customs Package delayed due to some issues during the customs clearance Exception_004
clearance)
Delayed (External factors) Package delayed due to some unforeseen reasons Exception_005
Held for payment The package being held due to pending payment from the customer's Exception_006
end
Incorrect Address Package not delivered due to incorrect recipient address Exception_007
Pick up missed Package available for the pickup but not collected by the customer Exception_008
Rejected by carrier Package rejected by the carrier due to noncompliance with its Exception_009
guidelines
Returning to sender The package is on its way back to the sender Exception_010
Returned to sender The return package has been successfully received by the sender Exception_011
Shipment damage Shipment damaged Exception_012
Shipment lost Delivery of the package failed as it got lost Exception_013
Failed Attempt The delivery of the package failed due to some reason. Courier usually AttemptFail_001
leaves a notice and will try to deliver again
Addressee not available Recipient not available at the given address AttemptFail_002
Business Closed Business is closed at the time of delivery AttemptFail_003
In Transit Shipment on the way InTransit_001
Acceptance scan Shipment accepted by the carrier InTransit_002
Arrival scan Shipment arrived at a hub or sorting centre InTransit_003
Arrived at the destination International shipment arrived at the destination country/region InTransit_004
country/region
Customs clearance Customs clearance completed InTransit_005
completed
Customs clearance started Package handed over to customs for clearance InTransit_006
Departure Scan Package departed from the facility InTransit_007
Problem resolved Problem resolved and shipment in transit InTransit_008
Forwarded to a different Shipment forwarded to a different delivery address InTransit_009
delivery address
Info Received The carrier received a request from the shipper and is about to pick up InfoReceived_001
the shipment
Out for Delivery The package is out for delivery OutForDelivery_001
Customer contacted The customer is contacted before the final delivery OutForDelivery_003

37 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)
Delivery appointment A delivery appointment is scheduled OutForDelivery_004
scheduled
Pending No information available on the carrier website or the tracking number Pending_001
is yet to be tracked
Carrier account not It represents the shipments are pending due to no connection with Pending_002
connected carrier accounts
Label created, no updates The order has been processed/packaged, but not scanned at a Pending_003
yet shipping location yet
Wrong carrier There is no tracking info available because the carrier is wrong Pending_004
No recent updates There have been no new tracking updates in the last 120 days Pending_005
Unrecognized carrier AfterShip can’t track this type of shipment as the carrier is Pending_006
unrecognized.
Expired No tracking information of the shipment, from the last 30 days Expired_001

38 Eurosender S.à.r.l., 9 Rue du Laboratoire L-1911 Luxembourg


VAT ID: LU30797030, R.C.S. Luxembourg: B230321,
IBAN LU61 1111 7132 9655 0000 (POST Finance SWIFT / BIC: CCPLLULL)

You might also like