Orders and Shipments
Shipments API endpoints
Depending on your usage, the Get delivery options endpoint might also apply to your process if you are purchasing labels from bol.
Get a list of orders
Get a list of orders: Retrieves a list of all open and handled orders. Handled orders will only remain visible for 48 hours after being handled.
This endpoint sorts all your currently open and handled orders by the creation date in the descending order. This means that the new orders appear at the top of the list. It supports pagination and allows you to filter your orders based on the fulfilment methods. For more information about the fulfilment methods, see Filtering order items by fulfilment method.
In the response, this endpoint returns a summary of the order consisting of the following information:
-
The order Id.
-
Details of the items present in an order.
-
Date and time when the order was placed.
Use the order-id
as an input parameter to the Get an order by order id endpoint to get all the information about a single order.
Filtering order items by fulfilment method
Get a list of orders endpoint provides you the following fulfilment methods to filter your orders:
-
Fulfilment by retailer (
FBR
) - Specifies that the logistics of the order is handled by the retailer. -
Fulfilment by bol (
FBB
) - Specifies that the logistics of the order is handled by bol. -
ALL
- Includes bothFBR
andFBB
orders.Filtering orders by FBB
is useful if you are participating in logistics through bol.
Filtering order items by status
Using the Get a list of orders endpoint, orders can be filtered by the following statuses:
-
OPEN
: Retrieves all order items that still need to be shipped or cancelled.The following scenarios also fall under the category of
OPEN
orders:-
Order items that have received the cancellation request but are yet to be cancelled.
-
Order items for which the ordered quantity is partially shipped or cancelled.
-
-
ALL
: Retrieves all order items that were shipped or cancelled within the last 48 hours in addition to the open items. -
SHIPPED
: Retrieves all order items that are fully handled and were shipped within the last 48 hours.
Shipped items
When a part of the total quantity of an order item is shipped and the order item is fully handled, the status of the order item changes to SHIPPED
. Then:
-
The order item remains visible when filtered with
status=ALL
for the next 48 hours. -
The order item remains visible when filtered with
status=SHIPPED
for the next 48 hours. -
The order item becomes visible in Get shipment list and Get a shipment by shipment id list.
Cancelled items
Once an order item is cancelled:
-
It remains visible when filtered with
status=ALL
for the next 48 hours.
If an FBR order item is not handled within three days of the expected delivery date, the order item will expire and automatically be cancelled by bol. The expiration date of an order item can be tracked through the expiryDate response field of the Get an order by order id endpoint.
|
Retrieving new or changed orders only
Use the change-interval-minute
parameter of the Get a list of orders endpoint, to retrieve a list of all the new and changed orders within the specified timeframe. It sorts all your new and changed orders by the time of the latest change in the descending order. This means that orders that are changed last appear at the top of the list.
The events that are recognised as a change are:
-
A new order.
-
A cancellation requested by customer for one or more order items in an order.
-
Shipped order items within an order.
-
Cancelled order items within an order.
To avoid missing any orders, the value assigned to this parameter should be equal to or larger than the time elapsed between polling the API. For example, if you poll every 10 minutes, then assign a value of 12 minutes to the change-interval-minute
parameter. As a result, you get a list of order items each having latestChangedDateTime
field. You can use this field as a version identifier to check if version of the order item has changed compared to the most recent version in your system.
To use this parameter to its greatest advantage, combine it with the status
parameter to filter on OPEN
, SHIPPED
or ALL
order items. Combining the change-interval-minute
parameter with status=ALL
will return both open and handled orders. In case the status
parameter is not specified, change-interval-minute
parameter will return only open orders for the specified timeframe.
Retrieving orders for a specific date
Use the latest-change-date
parameter of the Get a list of orders endpoint, to retrieve a list of all the order items that were last changed on a given date for up to three months in the past. It sorts all your changed orders by the time of the latest change in the descending order. This means that orders that are changed last appear at the top of the list.
The events that are recognised as a change are:
-
A new order.
-
A cancellation requested by customer for one or more order items in an order.
-
Shipped order items within an order.
-
Cancelled order items within an order.
To use this parameter to its greatest advantage, combine it with the status
parameter to filter on ALL
order items. Combining the latest-change-date
parameter with status=ALL
will return both open and handled orders. In case the status
parameter is not specified, latest-change-date
parameter will return only open orders for the specified date.
It is recommended to not use the latest-change-date parameter in combination with the change-interval-minute parameter while using the Get a list of orders endpoint. This will result in an error.
|
Use the latest-change-date parameter only in case of emergency. Do not use it as a part of the standard workflow.
|
Retrieving VVB Only Orders
The vvb-only
parameter is used in the Get a list of orders endpoint to filter results specifically for VVB orders. In this context, VVB refers to orders fulfilled via the FBR (Fulfillment by Retailer) method and the bol distribution party.
-
When
vvb-only=true
- The response includes only new or changed VVB orders. If combined withfulfilment-method=FBB
, the response will be empty, as FBB orders are excluded by design. -
When
vvb-only=false
or the parameter is not set - The API returns all orders, for either FBR, VVB, FBB, or all, as per the standard behavior.
Get an order by order id
Get an order by order id: Retrieves specific details of an order using the orderId
. It returns all open items in addition to the items that were shipped or cancelled within the last three months.
This endpoint gives you the following details about an order in its response body:
-
Order identifier - The items within the order are known as order items, and the `orderItemId`corresponds to each order item in a particular order . You can use this Id to perform specific tasks such as shipping or cancelling an order item within an order.
-
Order items in the order - This can either be 1 if the customer ordered only 1 item, or more if the customer ordered more than 1 item within the same order. The total price of an order item is calculated by multiplying the
unitPrice
withquantity
.It includes details of the amount of products ordered, shipped products and cancelled products for a particular order item Id. Additionally, it offers the details related to products, fulfilment, offers and commisions. For more information on
orderItems
, see Orders Redoc. -
Pick up point details (if applicable for an order).
-
Date and time of placing the order.
-
Billing and shipping details.
This endpoint gives you insights on the shipment and billing details that can be used for your shipments and to make invoices.
Since billing and shipping details include sensitive customer information such as address, vatNumber
and kvkNumber
, the customer can choose to conceal all their personal information. If this option is enabled by the customer, the Get an order by order id endpoint returns the value ANONYMISED
for all the fields in the shipmentDetails
and billingDetails
element except the Salutation
field, which returns the value UNKNOWN
.
The retailer must erase all the customer data from their own database if the customer chooses to conceal their information. The`Salutation` field returns the value UNKNOWN when the customer has not provided information about their gender. The email field returns no value after 61 days of placing the order. The billing information is not exposed to the retailer if the order has been created one month ago.
|
By default, a single order request returns all items in the order, including the FBB
and FBR
fulfilment methods.
To verify this, check the fulfilment method per orderItem
when reviewing your open order.
The order items can also be a mixture of Verzenden via bol and non-Verzenden via bol shipping methods, which will be indicated by the distributionParty
being either BOL
or RETAILER
.
Shipment time frame
The timeFrameType
field in Get an order by order id indicates which delivery time option was selected by the customer during the checkout. The possible values are:
Value | Delivery type | Remarks |
---|---|---|
|
All delivery types |
This is the default value for FBR orders being delivered during the daytime. |
|
All delivery types |
This is the default value for FBR orders being delivered during the evening. |
|
Logistics via bol. Currently not available for FBR orders. |
Delivery option for oversized or overweighted orders for which the standard delivery option is not possible. This requires the customer to agree on a timeslot for the appointment. |
|
Logistics via bol |
Delivery option for orders to be delivered on the same day as the order is placed. |
|
Logistics via bol |
Delivery option for orders to be delivered on Sunday during the daytime. |
Cancel an order item by an order item id
Cancel an order item by an order item id: Cancels an order item and provides a reason for the cancellation.
There are two scenarios that can occur regarding cancelling an order item:
-
Cancellation by the customer
When retrieving a single order or a list of orders, you receive a
cancellationRequest
value for every order item. If this value is set toTrue
, this implies that the order item is requested to be cancelled by the customer. In such cases, you should confirm the cancellation request through the Cancel an order item by an order item id endpoint and not ship this order item.The customer’s payment will be refunded by bol.It is possible that a customer only cancels a single item within an order.In such cases, you only have to cancel this one item and can ship the other order items.
To confirm the cancellation of an order item within an order, assign the value
REQUESTED_BY_CUSTOMER
to thereasonCode
parameter.A cancellation from the customer will not impact your cancellation performance indicator negatively. During the time between retrieving an open order and actually shipping an order item or cancelling an order item yourself, a customer can still request a cancellation. If there is a lot of time between retrieving an open order and shipping the order item, it is advisable to retrieve all the open orders again just before shipping the order item to check for a possible cancellation request from the customer.
-
Cancellation by the retailer
If you cannot ship an order item to the customer, for example due to missing stock, it is possible to cancel an order item from the order yourself.
Cancelling an order item without a cancellation request from the customer will lead to a negative score on your cancellation performance indicator. You can track your performance scores through the Get performance indicators endpoint. bol will manage the refund towards the customer when cancelling an order item yourself.
Using the reason REQUESTED_BY_CUSTOMER
without a customer cancellation request will impact your performance scores negatively.
Create a shipment
Create a shipment: Creates a shipment and provides shipment information.
With this endpoint, it is possible to ship one or multiple order items for a specific customer order. There are two ways to do this:
-
Shipping using your own shipping label. If you want to ship an order item using your own shipment, you need to provide transport information. For this we require a
transporterCode
(see table below) and atrackAndTraceCode
. Note that thetrackAndTraceCode
can optionally be left empty in this call.If you want to send them to bol later, you can use the Add transport information to a shipment endpoint. However, there is no need to do so if you send all the data to us at once.
If you ship this order item by using your own transporter, you need to leave the
shippingLabelId
empty. It is not possible to submit transport information and also ashippingLabelId
. -
Shipping using a purchased shipping label from bol. If you purchased a shipping label from bol, you can either:
-
Add the
shippingLabelId
which you obtained from get delivery options to the response. In this case, you need to omit the transport information. -
Or, use the fields in the response from Get a shipping label in the
transport
object.-
All items bearing a bol shipping label must be dispatched using a single shipment request.
-
In cases where VVB items are combined with non-VVB items, it is possible to transport them in the same package by generating multiple shipment requests utilizing the same Track and Trace code.
-
In case you want to create multiple shipments for one order item, the quantity field can be used. In the optional quantity field, you can specify the quantity so multiple shipments can be created for one order item. If the quantity field is not provided, the remaining open item quantity will be used.
-
-
Get shipment list
Get shipment list: Returns a list of shipments.
This endpoint is used to get all your shipments, sorted by the shipment date in descending order.
The endpoint supports pagination by using the page query parameter, and allows you to filter on FBB orders if you are participating in Logistics Via bol and FBR orders.
Moreover, you can search within all the shipments on orderId
, so that you can find easily and quick a single shipment based on the orderId
.
In the response, you will find – among other attributes – the shipmentId
, shipmentItems
and the related transport information.
You can use the shipmentId
to fetch more shipment details using the Get a shipment by shipment id endpoint.
Moreover, the transportId
is in the same response, and can be used to add transport information in case you didn’t do so while shipping the order item.
This endpoint will only return shipments that were created over the past three months. |
Get a shipment by shipment id
Get a shipment by shipment id: Returns a single shipment.
To fetch the details of a shipment, you can use this endpoint to get all the shipment details based on the shipmentId
.
In the response, you will find the items that where shipped, the transport information, and the details of the customer.
In compliance with GDPR, we omit the transport information from the response when the transport is more than a year old.
With the specific |
Monitoring a shipment
The transport.transportEvents
element in Get a shipment by shipment id allows you to track the shipment events when they are updated in the system.Transport events will show the entire history of the shipment with timestamps.You can use Subscriptions to receive updates whenever a new transport event is added to a shipment.
For a multi-line order which is shipped with one Track and Trace code, you will see transport events for only one of the orderlines in the order, even though they apply to the whole order.This will be improved in the future. |
Add transport information to a shipment
Add transport information by transport id: Adds transport information to a shipment.
It is possible that you already want to ship an order item, but you don’t know the track and trace details at that moment in time. When this occurs, the customer will not be informed of the track and trace-related information. This is not an optimal customer experience for your customer. In this scenario, this endpoint allows you to still send us the track and trace code. From that moment on, the customer will also receive updates on events when this track and trace code is scanned.
Customers pay attention to the track and trace code, and it is therefore important that you provide this data.
This endpoint only allows you to add the tracking information only when the trackAndTrace code is missing. It is recommended to not use this endpoint to update the transporterCode
or to update the current trackAndTrace code of a shipment.
|
You are not required to use this endpoint if you provide us directly with the track and trace code, and the transporter information when shipping an order item. For that reason, this step is optional in your flow when shipping an order item. |
Transporters
The table below shows all available transporter codes that can be used while creating a shipment or adding a transporter code to a shipment that was created earlier. Please make sure that the transporter code is available for the version of the API that you are using at that time.
Some transporters use a DASH while others use an UNDERSCORE. Please make sure to use the correct notation. This list applies to the current version of the Retailer API and could change between versions. |
Transporter / service | API transporter code | URL template | URL language | Receiver country |
---|---|---|---|---|
Briefpost |
|
N/A |
N/A |
N/A |
UPS |
|
https://wwwapps.ups.com/tracking/tracking.cgi?tracknum={trackTraceCode} |
EN |
NL and BE |
PostNL |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=NL&T=C&L=NL |
NL |
NL |
PostNL |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=BE&T=C&L=NL |
NL |
BE |
PostNL |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=BE&T=C&L=FR |
FR |
BE |
PostNL extra@home |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=NL&T=C&L=NL |
NL |
NL |
PostNL extra@home |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=BE&T=C&L=NL |
NL |
BE |
PostNL Briefpost Netherlands |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=NL&T=C&L=NL |
NL |
NL |
PostNL Briefpost Belgium |
|
https://postnl.nl/tracktrace/?B={trackTraceCode}&P={zipCode}&D=BE&T=C&L=NL |
NL |
BE |
TNT Express |
|
https://www.tnt.com/webtracker/tracking.do?navigation=1&searchType=CON&respLang=en&respCountry=GENERIC&genericSiteIdent=.&cons={trackTraceCode} |
EN |
NL and BE |
Dynalogic |
|
https://trackentrace.dynalogic.eu/?ordernumber={trackTraceCode}&zipcode={zipCode} |
EN |
NL and BE |
DPD Nederland |
|
https://tracking.dpd.de/parcelstatus?query={trackTraceCode}&locale=nl_BE |
NL |
BE |
DPD België |
|
https://tracking.dpd.de/parcelstatus?query={trackTraceCode}&locale=nl_BE |
NL |
NL and BE |
Bpost België Dutch Netherlands and Belgium |
|
https://track.bpost.cloud/btr/web/#/search?itemCode={trackTraceCode}&postalCode={zipCode}&lang=NL |
NL |
NL and BE |
Bpost België |
|
https://track.bpost.cloud/btr/web/#/search?itemCode={trackTraceCode}&postalCode={zipCode}&lang=FR |
FR |
BE |
Bpost Briefpost |
|
https://track.bpost.cloud/btr/web/#/search?itemCode={trackTraceCode}&postalCode={zipCode}&lang=NL |
NL |
NL and BE |
DHLFORYOU |
|
https://dhlparcel.nl/nl/particulier/ontvangen/volg-uw-zending?tt={trackTraceCode}&pc={zipCode} |
NL |
NL and BE |
GLS |
|
https://gls-group.eu/BE/vl/pakket-volgen?match={trackTraceCode} |
NL |
BE |
GLS |
|
https://www.gls-info.nl/Tracking?parcelno={trackTraceCode}&zipcode={zipCode} |
NL |
NL |
FedEx Nederland |
|
https://www.fedex.com/apps/fedextrack/?tracknumbers={trackTraceCode}&cntry_code=NL |
NL |
NL |
FedEx Belgie |
|
https://www.fedex.com/apps/fedextrack/?tracknumbers={trackTraceCode}&cntry_code=BE |
EN |
BE |
Anders |
|
N/A |
N/A |
N/A |
DHL |
|
https://dhlparcel.nl/nl/particulier/ontvangen/volg-uw-zending?tt={trackTraceCode}&pc={zipCode} |
NL |
NL and BE |
DHL Germany |
|
https://www.dhl.com/nl-nl/home/tracking/tracking-parcel.html?submit=1&tracking-id={trackTraceCode} |
NL |
NL |
DHL Germany |
|
https://www.dhl.com/be-nl/home/tracking/tracking-parcel.html?submit=1&tracking-id={trackTraceCode} |
NL |
BE |
DHL Germany |
|
https://www.dhl.com/be-fr/home/tracking/tracking-parcel.html?submit=1&tracking-id={trackTraceCode} |
FR |
NL and BE |
DHL Germany |
|
https://www.dhl.com/nl-en/home/tracking/tracking-parcel.html?submit=1&tracking-id={trackTraceCode} |
EN |
NL |
DHL Germany |
|
https://www.dhl.com/be-en/home/tracking/tracking-parcel.html?submit=1&tracking-id={trackTraceCode} |
EN |
BE |
DHL Global mail |
|
https://webtrack.dhlglobalmail.com/?trackingnumber={trackTraceCode} |
EN |
NL and BE |
DHL Global mail |
|
https://webtrack.dhlglobalmail.com/?trackingnumber={trackTraceCode}&locale=nl |
NL |
NL and BE |
DHL Same Day |
|
https://dhlparcel.nl/nl/particulier/ontvangen/volg-uw-zending?tt={trackTraceCode}&pc={zipCode} |
NL |
NL |
Transportservice Nederlands |
|
N/A |
N/A |
N/A |
TransMission |
|
https://www.mijnzending.nl/portal/index.php?view=tt/vAnoniem&zendingnummer={trackTraceCode}&postcode={zipCode}` |
NL |
NL and BE |
Parcel.nl |
|
https://www.dpost.be/Parceltracking/tracking/trackingnumber/{trackTraceCode} |
NL |
NL and BE |
Packs |
|
https://www.packs.nl/tracktrace/?zendingnr={trackTraceCode}&pc6hnr={zipCode} |
NL |
NL and BE |
Bezorgafspraak |
|
N/A |
N/A |
N/A |
Parts Express |
|
https://tnt.partsexpress.nl/#/orderdetail/{trackTraceCode}/{zipCode} |
NL |
NL |
Amperé and BUDBEE |
|
https://tracking.budbee.com/{UniqueHashId}auth={UniqueHash} |
NL |
NL |
Trunkrs |
|
https://parcel.trunkrs.nl/{trackTraceCode}/{zipcode} |
EN |
NL and BE |