Select Courier API offers a fast and convenient way to access Select Courier service information using the Internet.
With this API, Select Courier lets you easily incorporate Select Courier technology in your own applications or your own website. Your users running your applications or visiting your website can have fast and safe access to the Select Courier services.
Any tool that is fluent in HTTP can communicate with our API simply by requesting the correct URI. Requests should be made using the HTTPS protocol so that traffic is encrypted. The API responds to different methods depending on the action required.
After the API is implemented you will be able to obtain the services we offer, generate quotes, place bookings, generate labels, arrange collections and get tracking information.
Requirements
! JSON library and Internet connection.
! API supports only ASCII characters.
To make API requests we would advise you to use cURL library. You will also need an API key API secret. API keys are unique codes that identify you or your application each time you make a call to one of our API’s. API Secret is another code which severs like a password for the API key. After creating an account with us, you will be able to generate API key and API secret in your settings environment.
Use this method to get information about available services and their prices. Requires authentication request elements.
Name | Required | Description | Example |
---|---|---|---|
action | Mandatory | Describes what type of request will be sent to the server. | quote |
o_company | Optional | Shipper’s company name. | SelectCourier |
o_name | Mandatory | Contact persons name. | John White |
o_email | Optional | Shipper’s email address. | test@selectcourier.com |
o_phone | Mandatory | Shipper’s phone number. | 001123456789 |
o_street_1 | Mandatory | Shipper’s street address. | Examplestreet |
o_street_2 | Optional | Additional shipper’s address information, preferably building, room or floor. |
Second floor |
o_street_3 | Optional | Additional shipper’s address information, preferably room or floor. |
Room 8 |
o_street_no | Mandatory | Shipper’s house number. | 27B |
o_postal | Conditional | Shipper’s postal/zip code. Conditionally required if shipper’s country uses postal/zip |
100010 |
o_city | Mandatory | Shipper’s city. | New York |
o_province | Conditional | Shipper’s province/state. Conditionally required if shipping from the United States or Canada. The official State code is required. |
NY for New York, BC for British Columbia |
o_country | Mandatory | Shipper’s ISO Country Code. | US |
o_eori | Conditional | Shipper’s EORI number (Economic Operators Registration and Identification number). |
NL012345678 |
d_company | Optional | Consignee’s company name. | SelectCourier |
d_name | Mandatory | Contact name at the consignee’s. | David Black |
d_email | Optional | Consignee’s email address. | test@selectcourier.com |
d_phone | Mandatory | Consignee’s phone number. | 0123-456789 |
d_street_1 | Mandatory | Consignee’s street address. | Teststreet |
d_street_2 | Optional | Additional consignee’s address information, preferably building, room or floor. |
1st floor |
d_street_3 | Optional | Additional consignee’s address information, preferably room or floor. |
Room 212 |
d_street_no | Mandatory | Consignee’s house number. | 27C |
d_postal | Conditional | Consignee’s postal/zip code. Conditionally required if consignee’s country uses postal/zip codes. |
3045 AB |
d_city | Mandatory | Consignee’s city. | Rotterdam |
d_province | Conditional | Consignee’s province/ state. Conditionally state code required if shipping to United States or Canada. |
Zuid Holland |
d_country | Mandatory | Consignee’s country code. | NL |
d_eori | Conditional | Consignee’s EORI number (Economic Operators Registration and Identification number). |
|
type | Mandatory | Consignment type (Parcel, document, pallet). |
parcel |
reference | Optional | Shipment reference. | AB0000 |
inco | Optional | Incoterms - party who has to pay duties. | DAP (default value) or DDP |
stackable | Optional | Either stackable on top of other shipments and stackable on top of your shipment (1 or 0). |
1 |
has_batteries | Optional | Whether shipment contains batteries (1 or 0). | 0 |
delivery_instructions | Optional | Instructions for courier upon shipment delivery. | Deliver at the door |
return_service | Mandatory | Creates return label for shipment. For swap purposes. |
1 |
items | Mandatory | Array of items. |
Name | Required | Description | Example |
---|---|---|---|
contents | Mandatory | Contents of shipment. | Electronic Device. |
value | Mandatory | Value of the item. | 55.00 |
value_currency | Optional | Item value currency. | EUR |
weight | Mandatory | Weight of the package (in kg). | 10.5 |
length | Mandatory | Length of the package used to determine dimensional weight (in cm). |
35 |
width | Mandatory | Width of the package used to determine dimensional weight (in cm). |
35 |
height | Mandatory | Height of the package used to determine dimensional weight (in cm). |
35 |
hs_code | Conditional | Harmonized System Code. | 85183000 |
products | Optional | Array of products. |
Name | Required | Description | Example |
---|---|---|---|
quantity | Mandatory | Number of same products. | 2 |
product_code | Mandatory | Product Code. | |
o_country | Mandatory | Country where the product was manufactured in. | NL |
weight | Mandatory | Weight of the product (in kg). | 5.3 |
description | Mandatory | Product Description. | Headset |
value | Mandatory | Product value per piece. | 20.00 |
value_currency | Mandatory | Product value currency. | EUR |
hs_code | Mandatory | Harmonized System Code. | 85183000 |
{
"action": "quote",
"shipment": {
"o_company": "Test",
"o_name": "Test",
"o_email": "test@test.com",
"o_phone": "0000000",
"o_eori": "",
"o_street_1": "Test street",
"o_street_no": "27B",
"o_postal": "3045 AB",
"o_city": "Rotterdam",
"o_province": "",
"o_country": "NL",
"d_company": "Test",
"d_name": "Test",
"d_email": "test@test.com",
"d_phone": "0000000",
"d_eori": "",
"d_street_1": "Test street ",
"d_street_no": "35C",
"d_postal": "1000",
"d_city": "Brussels",
"d_province": "",
"d_country": "BE",
"type": "Parcel",
"reference": "AB0000",
"stackable": "1",
"items": [
{
"contents": "Keyboard",
"value": "55.00",
"weight": "5.0",
"length": "50",
"width": "15",
"height": "5"
},
{
"contents": "Electronic Device",
"value": "10.00",
"weight": "10",
"length": "15",
"width": "20",
"height": "15",
"products": [
{
"quantity": "2",
"product_code": "023232",
"o_country": "NL",
"weight": "5.3",
"description": "Headset",
"value": "20.0",
"value_currency": "EUR",
"hs_code": "85183000"
}
]
}
]
}
}
$request += array(
"action" => "quote",
"shipment" => array(
"o_company" => "Test",
"o_name" => "Test",
"o_email" => "test@test.com",
"o_phone" => "0000000",
"o_eori" => "",
"o_street_1" => "Test street",
"o_street_no" => "27B",
"o_postal" => "3045 AB",
"o_city" => "Rotterdam",
"o_province" => "",
"o_country" => "NL",
"d_company" => "Test",
"d_name" => "Test",
"d_email" => "test@test.com",
"d_phone" => "0000000",
"d_eori" => "",
"d_street_1" => "Test street ",
"d_street_no" => "35C",
"d_postal" => "1000",
"d_city" => "Brussels",
"d_province" => "",
"d_country" => "BE",
"type" => "Parcel",
"reference" => "AB0000",
"stackable" => "1",
"items" => array(
array(
"contents" => "Keyboard",
"value" => "55.00",
"weight" => "5.0",
"length" => "50",
"width" => "15",
"height" => "5",
),
array(
"contents" => "Electronic Device",
"value" => "10.00",
"weight" => "10",
"length" => "15",
"width" => "20",
"height" => "15",
"products" => array(
array(
"quantity" => "2",
"product_code" => "023232",
"o_country" => "NL",
"weight" => "5.3",
"description" => "Headset",
"value" => "20.0",
"value_currency" => "EUR",
"hs_code" => "85183000",
)
)
)
)
)
);
Name | Description |
---|---|
result | This element contains a response from server with information about available services and their prices. |
errors | This element contains error messages. |
Name | Description | Example |
---|---|---|
services | Dataset of services |
Name | Description | Example |
---|---|---|
service_id | Service ID | 12604 |
courier_keycode | Courier keycode. | sc |
courier_name | Courier name. | SELECTCOURIER |
service_keycode | Service keycode. | EXPRESS WORLDWIDE |
service_name | Service name. | Express Worldwide |
etc | Estimated time of collection. | 2021-01-25 before 18:00 |
eta | Estimated time of arrival. | 2021-01-25 before 23:30 |
origin_service_points | Origin service point availability indicator (1=available, 0=not available). | 1 |
destination_service_points | Destination service point availability indicator (1=available, 0=not available). | 0 |
co2 | CO2 availability indicator (1=available, 0=not available). | 1 |
co2_price | CO2 price. | 1.37 |
insurance | Insurance availability indicator (1=available, 0=not available). | 1 |
insurance_price | Insurance price. | 9.38 |
sub_total | Price without VAT. | 18.00 |
vat_total | VAT. | 3.21 |
total_price | Total shipping price. | 21.21 |
currency | Currency. | EUR |
{
"result": {
"services": [
{
"service_id": 12613,
"courier_keycode": "sc",
"courier_name": "SELECT COURIER",
"service_keycode": "EXPRESS 12:00",
"service_name": "Express 12:00",
"etc": "2021-01-25 before 20:00",
"eta": "2021-01-25 before 12:00",
"origin_service_points": 1,
"destination_service_points": 1,
"currency": "EUR",
"co2": 1,
"co2_price": 1.37,
"insurance": 1,
"insurance_price": 9.38,
"sub_total": 29.91,
"vat_total": 5.68,
"total_price": 35.59
}
]
},
"errors": []
}
$response = array(
"result" => array(
"services" => array(
0 => array(
"service_id" => 12613,
"courier_keycode" => "sc",
"courier_name" => "SELECT COURIER",
"service_keycode" => "EXPRESS 12:00",
"service_name" => "Express 12:00",
"etc" => "2021-01-25 before 20:00",
"eta" => "2021-01-25 before 12:00",
"origin_service_points" => 1,
"destination_service_points" => 1,
"currency" => "EUR",
"co2" => 1,
"co2_price" => 1.37,
"insurance" => 1,
"insurance_price" => 9.38,
"sub_total" => 29.91,
"vat_total" => 5.68,
"total_price" => 35.59
)
)
),
"errors" => array()
);
Use this method to create booking. Shipment label will be retrieved as an encoded PDF string. Requires authentication request elements.
Name | Required | Description | Example |
---|---|---|---|
action | Mandatory | Describes what type of request will be sent to the server. |
ship |
service_id | Mandatory | Service id retrieved from quoting process. | 3851 |
co2 | Optional | Use 1 to compensate for co2 emission. | 0 (default value) or 1 |
insurance | Optional | Use 1 to insure your shipment. | 0 (default value) or 1 |
label_format | Optional | Describes what format label will be in. | PDF (default value) or ZPL |
d_sp_name | Optional | Destination service point name. | Royal Mini Market |
d_sp_keycode | Optional | Destination service point keycode. | 1382551 |
d_sp_street_1 | Optional | Destination service point address line 1. | Burgemeester Baumannlaan 151 |
d_sp_street_2 | Optional | Destination service point address line 2. | |
d_sp_street_3 | Optional | Destination service point address line 3. | |
d_sp_postal | Optional | Destination service point postal code. | 3042 AC |
d_sp_city | Optional | Destination service point city. | Rotterdam |
d_sp_province | Optional | Destination service point province. | |
d_sp_country | Optional | Destination service point country code. | NL |
Name | Description |
---|---|
result | This element contains response from server with information about available services and their prices. |
errors | This element contains error messages. |
Name | Description | Example |
---|---|---|
order_no | Order number. | SCTEST |
consignment_no | Courier consignment number. | COURIERCONN |
label | Label encoded as PDF or ZPL string. | |
remarks | Additional documents as encoded PDF string. | |
items | Shipment item details. |
{
"result": {
"order_no": "SCTEST",
"consignment_no": "COURIERCONN",
"label": "DawNjE1MiAwMDAwMCBuIAp0cmFp...",
"remarks": "RawNjE1MiAwMDAwMCBuIAp0cmFp..."
},
"errors": []
}
$response = array(
"result" => array(
"order_no" => "SCTEST",
"consignment_no" => "COURIERCONN",
"label" => "DawNjE1MiAwMDAwMCBuIAp0cmFp...",
"remarks" => "RawNjE1MiAwMDAwMCBuIAp0cmFp...",
),
"errors" => array()
);
Use this method to arrange collections. Requires authentication request elements.
Name | Required | Description | Example |
---|---|---|---|
action | Mandatory | Describes what type of request will be sent to the server. |
Pickup |
date | Mandatory | Collection date. | 2022-01-01 |
r_time | Mandatory | Ready time. | 09:00 |
c_time | Mandatory | Closing time. | 17:00 |
instructions | Optional | Instructions for courier. | Pickup at front door |
shipments | Mandatory | Array of order numbers. | |
o_sp_name | Optional | Origin service point name. | Royal Mini Market |
o_sp_keycode | Optional | Origin service point keycode. | 1382551 |
o_sp_street_1 | Optional | Origin service point address line 1. | Burgemeester Baumannlaan 151 |
o_sp_street_2 | Optional | Origin service point address line 2. | |
o_sp_street_3 | Optional | Origin service point address line 3. | |
o_sp_postal | Optional | Origin service point postal code. | 3042 AC |
o_sp_city | Optional | Origin service point city. | Rotterdam |
o_sp_province | Optional | Origin service point province. | |
o_sp_country | Optional | Origin service point country code. | NL |
{
"action": "pickup",
"date": "2021-01-24",
"r_time": "09:00",
"c_time": "17:00",
"instuctions": "test collection",
"shipments": [
"SCXXXXXX1",
"SCXXXXXX2"
]
}
$request += array(
"action" => "pickup",
"date" => "2021-01-24",
"r_time" => "09:00",
"c_time" => "17:00",
"instuctions" => "test collection",
"shipments" => array(
"SCXXXXXX1", "SCXXXXXX2"
)
);
Name | Description |
---|---|
result | This element contains a response from server with information about available services and their prices. |
errors | This element contains error messages. |
Name | Description | Example |
---|---|---|
collection_no | Collection number. | 12604 |
manifest | Manifest encoded as PDF string. |
Use this method to receive information about your order (status, location, date, time).
Name | Required | Description | Example |
---|---|---|---|
order_numbers | Mandatory | Array or order numbers. (For multiple shipment tracking) |
“SCXXXXXX1”, “SCXXXXXX2” |
Name | Description |
---|---|
result | This element contains response from server with information about available services and their prices. |
errors | This element contains error messages. |
Name | Description | Example |
---|---|---|
order_no | Order Number. | SCXXXXXX1 |
status | Order’s status. | Arranged |
consignment_no | Courier consignment number. | COURIERCONN |
courier_keycode | Courier keycode. | sc |
courier_name | Courier name. | SELECT COURIER |
service_keycode | Service keycode. | EXPRESS_WORLDWIDE |
service_name | Service name. | Express Worldwide |
items | Array of items |
Name | Description | Example |
---|---|---|
item_no | Item number. | SCXXXXXXX-1 |
status | Item status. | Arranged |
tracking_no | Tracking number. | XXXXXXXXX |
courier_tracking_link | Hyperlink to the tracking environment of the courier website. | https://courier.com/trackingpage |
trackings | Array of track and trace information. |
Name | Description | Example |
---|---|---|
status | Order’s status. | Collected |
courier_status | Delivery status of consignment as of the local event date and time. | Shipment collected |
location | Location where status was updated. | Rotterdam |
date | Date and time when status was updated. | 2021-01-24 15:46:59 |
signer | The person who signes for receiving the shipment. | J. Smith |
{
"result": [
{
"order_no": "SCXXXXXX1",
"status": "Collected",
"consignment_no": "COURIERCONN",
"courier_keycode": "sc",
"courier_name": "SELECT COURIER",
"service_keycode": "EXPRESS_WORLDWIDE",
"service_name": "Express Worldwide",
"items": [
{
"item_no": "SCXXXXXX1-1",
"status": "Collected",
"tracking_no": "XXXXXXXXX",
"courier_tracking_link": "https:\/\/courier.com\/trackingpage",
"trackings": [
{
"status": "Collected",
"courier_status": "Shipment collected",
"location": "Rotterdam",
"date": "2021-01-24 15:46:59",
"signer": ""
}
]
}
]
},
{
"order_no": "SCXXXXXX2",
"status": "Delivered",
"consignment_no": "COURIERCONN",
"courier_keycode": "sc",
"courier_name": "SELECT COURIER",
"service_keycode": "standard",
"service_name": "Standard",
"items": [
{
"item_no": "SCXXXXXX2-1",
"status": "Booked",
"tracking_no": "XXXXXXXXX",
"courier_tracking_link": "https:\/\/courier.com\/trackingpage",
"trackings": [
{
"status": "Delivered",
"courier_status": "Delivered",
"location": "Rotterdam",
"date": "2017-06-07 10:55:45",
"signer": "J. Smith"
},
{
"status": "In Transit",
"courier_status": "In Transit",
"location": "Delft",
"date": "2017-06-06 10:55:19",
"signer": ""
}
]
}
]
}
],
"errors": []
}
$response = array(
"result" => array(
0 => array(
"order_no" => "SCXXXXXX1",
"status" => "Collected",
"consignment_no" => "COURIERCONN",
"courier_keycode" => "sc",
"courier_name" => "SELECT COURIER",
"service_keycode" => "EXPRESS_WORLDWIDE",
"service_name" => "Express Worldwide",
"items" => array(
0 => array(
"item_no" => "SCXXXXXX1-1",
"status" => "Collected",
"tracking_no" => "XXXXXXXXX",
"courier_tracking_link" => "https://courier.com/trackingpage",
"trackings" => array(
0 => array(
"status" => "Collected",
"courier_status" => "Shipment collected",
"location" => "Rotterdam",
"date" => "2021-01-24 15:46:59",
"signer" => ""
)
)
)
)
),
1 => array(
"order_no" => "SCXXXXXX2",
"status" => "Delivered",
"consignment_no" => "COURIERCONN",
"courier_keycode" => "sc",
"courier_name" => "SELECT COURIER",
"service_keycode" => "standard",
"service_name" => "Standard",
"items" => array(
0 => array(
"item_no" => "SCXXXXXX2-1",
"status" => "Booked",
"tracking_no" => "XXXXXXXXX",
"courier_tracking_link" => "https://courier.com/trackingpage",
"trackings" => array(
0 => array(
"status" => "Delivered",
"courier_status" => "Delivered",
"location" => "Rotterdam",
"date" => "2017-06-07 10:55:45",
"signer" => "J. Smith"
),
1 => array(
"status" => "In Transit",
"courier_status" => "In Transit",
"location" => "Delft",
"date" => "2017-06-06 10:55:19",
"signer" => ""
)
)
)
)
)
),
"errors" => array()
);
Use this method to retrieve multiple or single shipment labels after a shipment has already been created. Requires authentication request elements.
Name | Required | Description | Example |
---|---|---|---|
order_numbers | Mandatory | Array or order numbers. (For multiple shipment tracking) |
“SCXXXXXX1”, “SCXXXXXX2” |
Name | Description |
---|---|
result | This element contains a response from server with information about available services and their prices. |
errors | This element contains error messages. |
Name | Description | Example |
---|---|---|
order_numbers | Order numbers. | SCTEST |
labels | Labels encode as PDF or ZPL string. |
This method is used to retrieve the address, opening hours and distance of service points.
There can be two types of requests, based on the type of service point. The first request is the origin service point
where the shipment will be dropped off by the sender. The order number is required for this type of request.
The second request is the destination service point where the shipment will be picked up by the receiver. For this
type of request, the quote service ID is required. Requires authentication request elements.
Name | Required | Description | Example |
---|---|---|---|
action | Mandatory | Describes what type of request will be sent to the server. | service_points |
type | Mandatory | Origin - service point where the shipment will be dropped off by the sender; Destination - service point where the shipment will be picked up by the receiver. | “origin” or “destination” |
order_no | Conditional | Order number. Required for origin type service points. | SCXXXXXXX |
service_id | Conditional | Service id retrieved from quoting process. Required for destination type service points. | 3851 |
Name | Description |
---|---|
result | This element contains a response from server with information about available services and their prices. |
errors | This element contains error messages. |
Name | Description | Example |
---|---|---|
keycode | Service point keycode. | 1382551 |
name | Name of the service point. | Royal Mini Market |
street_1 | Adress where the service point is located. | Burgemeester Baumannlaan 151 |
postal | Service point postal code. | 3042 AC |
city | City of the service point. | Rotterdam |
country | Country of the service point. | NL |
lat | Coordinate of the service point—latitude. | 51.9364411250671 |
lng | Coordinate of the service point—longitude. | 4.42779022507839 |
business_hours | Dataset of service point opening hours. | |
distance | The distance in kilometres from the service point address to either sender / receiver address. Determined by service point type. | 2 |
Name | Description | Example |
---|---|---|
Monday | Service point opening hours on Mondays. | 08.00-17.30 |
Tuesday | Service point opening hours on Tuesdays. | 08.00-17.30 |
Wednesday | Service point opening hours on Wednesdays. | 08.00-17.30 |
Thursday | Service point opening hours on Thursdays. | 08.00-17.30 |
Friday | Service point opening hours on Fridays. | 08.00-17.30 |
Saturday | Service point opening hours on Saturdays. | 08.00-17.30 |
Sunday | Service point opening hours on Sundays. | 08.00-17.30 |
{
"result": [
{
"keycode": "1382551",
"name": "Royal Mini Market",
"street_1": "Burgemeester Baumannlaan 151",
"postal": "3042 AC",
"city": "Rotterdam",
"country": "NL",
"lat": "51.9364411250671",
"lng": "4.42779022507839",
"business_hours": {
"Monday": "08.00-20.00",
"Tuesday": "08.00-20.00",
"Wednesday": "08.00-20.00",
"Thursday": "08.00-20.00",
"Friday": "08.00-20.00",
"Saturday": "08.00-20.00",
"Sunday": []
},
"distance": 2
},
{
"keycode": "1364013",
"name": "Primera",
"street_1": "Burgemeester Baumannlaan 191",
"postal": "3042 AD",
"city": "Rotterdam",
"country": "NL",
"lat": "51.9345596226563",
"lng": "4.42854295007801",
"business_hours": {
"Monday": "08.00-17.30",
"Tuesday": "08.00-17.30",
"Wednesday": "08.00-17.30",
"Thursday": "08.00-17.30",
"Friday": "08.00-17.30",
"Saturday": "10.00-17.00",
"Sunday": []
},
"distance": 2.16
}
],
"errors": []
}
$response = array(
"result" => array(
0 => array(
"keycode" => "1382551",
"name" => "Royal Mini Market",
"street_1" => "Burgemeester Baumannlaan 151",
"postal" => "3042 AC",
"city" => "Rotterdam",
"country" => "NL",
"lat" => "51.9364411250671",
"lng" => "4.42779022507839",
"business_hours" => array(
"Monday" => "08.00-20.00",
"Tuesday" => "08.00-20.00",
"Wednesday" => "08.00-20.00",
"Thursday" => "08.00-20.00",
"Friday" => "08.00-20.00",
"Saturday" => "08.00-20.00",
"Sunday" => array()
),
"distance" => 2
),
1 => array(
"keycode" => "1364013",
"name" => "Primera",
"street_1" => "Burgemeester Baumannlaan 191",
"postal" => "3042 AD",
"city" => "Rotterdam",
"country" => "NL",
"lat" => "51.9345596226563",
"lng" => "4.42854295007801",
"business_hours" => array(
"Monday" => "08.00-17.30",
"Tuesday" => "08.00-17.30",
"Wednesday" => "08.00-17.30",
"Thursday" => "08.00-17.30",
"Friday" => "08.00-17.30",
"Saturday" => "10.00-17.00",
"Sunday" => array()
),
"distance" => 2.16
)
),
"errors" => array()
);
By default, our API is using development (sandbox) environment.
When you have finished testing required methods, you can change the environment variable passed in the request elements to “production” so you can actually start sending your shipments via our platform.
Name | Required | Description | Example |
---|---|---|---|
environment | Mandatory | Use production environment to start shipping. | “production” or “development” |
account | Optional | Used if your user has multiple accounts enabled. | Select Courier B.V. |
Effortlessly integrate your own courier contract and business software!
The business shipping platform for all your worldwide shipments!
Advanced integration of your customised shipping process!
Or any other questions or feedback? Please feel free to contact us.
+31 (0) 10 223 7006
Rotterdam Airportplein 27
3045 AP Rotterdam
The Netherlands
CoC No.: 52767574
VAT No.: NL823638017B03
Do you have questions about sending your shipments, our platform and services or about something completely different? Our Customer Service is available Monday to Friday from 08:45 to 17:30.