Table of Contents 📖
Variables
merchantAPIEndpoint:/apiorderId:GR--3001--MER78trackingNumber:10123456789
Shipments
1. Get Shipments
GET {merchantAPIEndpoint}/shipmentsResponse
✅ Status: 200 OK
Content-Type: application/json
{
"params": {
"page": 1, // Current page number of shipments
"items_per_page": 10, // Number of items per page
"total_items": 10, // Total number of items
"status": null, // The status of the shipment (if applicable)
"date_from": "2020-01-01 00:00:00", // Start date for the shipments filter
"date_to": null // End date for the shipments filter
},
"shipments": [
{
"shipment_id": 90, // ID of the shipment
"shipment_timestamp": false, // UNIX timestamp for when the shipment occurred (false if not available)
"comments": null, // Any comments for the shipment
"status": "P", // The current status of the shipment (P = Pending)
"order_id": 3006, // ID of the associated order
"order_reference": "GR--3006--MER78", // The reference code for the order
"order_timestamp": 1738323842, // UNIX timestamp when the order was created
"s_firstname": "Sarah", // Shipping address first name
"s_lastname": "Muller", // Shipping address last name
"firstname": "Sarah", // Customer's first name
"lastname": "Muller", // Customer's last name
"shipping": "Courier Center", // Shipping carrier (e.g., "Courier Center")
"tracking_number": null, // Tracking number for the shipment (if available)
"carrier_info": {
"tracking_url": null, // URL for tracking the shipment (if available)
"name": "Courier Center (Standard)", // Carrier name
"method": "Standard", // Carrier shipping Method
"delivery_key": "courier_center_standard" // Carrier Method key
},
"products_info": [
{
"product_id": "SF-2", // ID of the product being shipped
"product_qty": 1 // Quantity of the product being shipped
},
{
"product_id": "SF-2",
"product_qty": 1
},
{
"product_id": "SF-2",
"product_qty": 1
},
{
"product_id": "SF-2",
"product_qty": 1
}
],
"products": {
"308": {
"item_id": 308, // ID of the specific item in the order
"order_id": 55, // ID of the order to which this product belongs
"product_id": 217, // Product ID
"product_code": "SF-2", // Unique product code
"price": 2346, // Price of a single unit of the product
"total_price": 9384, // Total price for the quantity of the product being shipped
"amount": 4, // Quantity of this product
"product": "Phone", // Product name
"base_price": 2346, // Base price of the product
"original_price": 2346 // Original price of the product (before any discounts)
}
}
}
]
}2. Retrieve single Shipment
GET {merchantAPIEndpoint}/shipments/{shipmentId}Response
✅ Status: 200 OK
Content-Type: application/json
{
"shipment_id": 90, // ID of the shipment
"shipment_timestamp": false, // UNIX timestamp when the shipment occurred (false if not available)
"comments": null, // Comments related to the shipment
"status": "P", // The current status of the shipment (P = Pending)
"order_id": 3006, // ID of the associated order
"order_reference": "GR--3006--MER78", // Reference code for the associated order
"order_timestamp": 1738323842, // UNIX timestamp when the order was placed
"s_firstname": "Sarah", // First name of the person receiving the shipment
"s_lastname": "Muller", // Last name of the person receiving the shipment
"firstname": "Sarah", // Customer's first name
"lastname": "Muller", // Customer's last name
"shipping": "Courier Center", // Shipping carrier (e.g., "Courier Center")
"tracking_number": null, // Tracking number for the shipment (if available)
"carrier_info": {
"tracking_url": null, // URL for tracking the shipment (if available)
"name": "Courier Center (Standard)", // Carrier name
"method": "Standard", // Carrier shipping Method
"delivery_key": "courier_center_standard" // Carrier Method key
},
"products_info": [
{
"product_id": "SF-2", // ID of the product being shipped
"product_qty": 1 // Quantity of the product being shipped
},
{
"product_id": "SF-2",
"product_qty": 1
}
],
"products": {
"308": {
"item_id": 308, // ID of the specific item in the order
"order_id": 55, // ID of the order to which this product belongs
"product_id": 217, // Product ID
"product_code": "SF-2", // Unique product code
"price": 2346, // Price of a single unit of the product
"total_price": 9384, // Total price for the quantity of the product being shipped
"amount": 4, // Quantity of this product
"product": "Phone", // Product name
"base_price": 2346, // Base price of the product
"original_price": 2346 // Original price of the product (before any discounts)
}
}
}3. Create Voucher
GET {merchantAPIEndpoint}/courier/{shipment_id}?number_of_packages={X}⚠️ Note: The "Number of Packages" parameter is ignored for the Box Now and CleverPoint shipping methods, as it will automatically be set to 1.
Response
✅ Status: 200 OK
Content-Type: application/json
{
"voucher": {
"ShipmentNumber": "0123456789", // Unique shipment number associated with the voucher
"TrackingNumbers": ["0123456789"], // List of tracking numbers for the shipment
"ShipmentMasterId": "b6422f45-6518-4df0-8d23-f95fb9deb0ea", // Unique identifier for the shipment master (can refer to the parent shipment)
"ShipmentAlreadyExist": false, // Boolean indicating if the shipment already exists (false = not existing)
"Result": "Success" // The result of the shipment action (Success, Failed, etc.)
}
}❌ Status: 400 BAD REQUEST
Response If the shipment has already created a voucher.
{
"message": "Internal Server Error: Voucher already exists",
"errors": [
"Voucher already exists"
],
"status": 500
}Response If the shipment ID is wrong.
{
"error": "Company name of consignee is required"
}4. Cancel Voucher
GET {merchantAPIEndpoint}/courier?cancel={trackingNumber}Response
✅ Status: 204 No Content
❌ Status: 400 BAD REQUEST
Response If the Shipment already exists
{
"ShipmentAlreadyExist": false,
"Result": "Success"
}Response If the Shipment already canceled
{
"ShipmentAlreadyExist": false, // Boolean indicating if the shipment already exists (false = does not exist)
"Result": "Failure", // The result of the shipment action (e.g., Success, Failure)
"Errors": [
{
"Code": "SHIPMENT_ALREADY_CANCELLED", // Error code identifying the type of issue (e.g., shipment already canceled)
"Severity": "Hard", // Severity of the error (e.g., Hard = critical issue that stops the process)
"Message": "Shipment Is Already Canceled" // Description of the error
}
]
}Response If the Shipment voucher is wrong
{
"ShipmentAlreadyExist": false, // Boolean indicating if the shipment already exists (false = does not exist)
"Result": "Failure", // The result of the shipment action (e.g., Success, Failure)
"Errors": [
{
"Code": "SHIPMENT_NOT_FOUND", // Error code identifying the type of issue (e.g., shipment not found)
"Severity": "Hard", // Severity of the error (e.g., Hard = critical issue that stops the process)
"Message": "No shipment found with AWB 0135633275111" // Description of the error, in this case, no shipment found with the provided tracking number
}
]
}5. Print Voucher
GET {merchantAPIEndpoint}/courier?print={trackingNumber}Parameters
| Name | Type | Description | Required | Default |
|---|---|---|---|---|
label-format | number | Voucher format | No | None |
Available Label Format Options
| Service | Available Values | Example |
|---|---|---|
| Diakinisis | a4, a6, a4-3 | &labelFormat=a4 |
| Courier Center | thermiko, pdf, singlepdf, singleclean | &labelFormat=thermiko |
| Box Now | singlepdf_100x150 | &labelFormat=singlepdf_100x150 |
Example
GET {merchantAPIEndpoint}/courier?print={trackingNumber}&labelFormat=pdfResponse
✅ Status: 200 OK
Content-Type: application/json
{
"VoucherFormat": "PDF", // The format of the voucher (e.g., PDF)
"VoucherDataList": [], // An array that holds any data related to the voucher (currently empty)
"VoucherDataReturnList": [], // An array that holds data returned from the voucher (currently empty)
"Voucher": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmpl ...... jwhhj34t34nmxzvkl4tDGDF909=", // The actual voucher data, encoded in a format such as Base64
"Result": "Success" // The result of the action (e.g., Success, Failure)
}❌ Status: 400 BAD REQUEST
{
"Result": "Failure", // The result of the operation (e.g., Success, Failure)
"Errors": [
{
"Code": "SHIPMENT_NOT_FOUND", // The error code that identifies the type of issue
"Severity": "Hard", // The severity level of the error (e.g., Hard, Soft)
"Message": "No shipment found with AWB 0135633275111" // A descriptive message explaining the error
}
]
}6. Print Mass Shipment Vouchers
GET {merchantAPIEndpoint}/courier?printmass={trackingNumber,trackingNumber}&labelFormat=pdfResponse
✅ Status: 200 OK
[
{
"VoucherFormat": "PDF", // The format of the voucher (e.g., PDF, HTML)
"VoucherDataList": [], // A list of voucher data (currently empty)
"VoucherDataReturnList": [], // A list of returned voucher data (currently empty)
"Voucher": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmpl ...... jwhhj34t34nmxzvkl4tDGDF909=", // The encoded voucher content (base64)
"Result": "Success"
},
{
"VoucherFormat": "PDF", // The format of the voucher (e.g., PDF, HTML)
"VoucherDataList": [], // A list of voucher data (currently empty)
"VoucherDataReturnList": [], // A list of returned voucher data (currently empty)
"Voucher": "FASDFASGSD214GFDG657VHGFHFGJGFHJ ...... jwhhj34t34nmxzvkl4tDGDF909=", // The encoded voucher content (base64)
"Result": "Success"
}
// Additional entries can be added here...
]❌ Status: 400 BAD REQUEST
Error Response if wrong voucher number
{
"Result": "Failure", // The result of the operation, indicating that it failed
"Errors": [
{
"Code": "SHIPMENT_NOT_FOUND", // The error code, indicating the specific issue (shipment not found)
"Severity": "Hard", // The severity level of the error (Hard means it's a critical error)
"Message": "No shipment found with AWB 0135633275111" // A descriptive error message providing more details about the issue
}
]
}7. Tracking Shipment
⚠️ deprecated — This endpoint is no longer recommended for use and may be removed in future versions.
GET {merchantAPIEndpoint}/courier?trackingnumber={trackingNumber}Response
✅ Status: 200 OK
{
"TrackingList": [
{
"EntityID": "76d6a07b-d5c2-4ce3-b9bf-67d5292364b8", // A unique identifier for the tracking entry
"StationName": "WEB STATION" // The name of the station associated with the tracking
}
],
"Result": "Success"
}8. Create Manifest
Note: You must provide the shipmentID of the order(s) to generate the manifest.
Only orders that are ready for shipment can have a manifest created.
GET {merchantAPIEndpoint}/courier?custom_manifest=1&shipments={shipmentID,shipmentID}Response
✅ Status: 200 OK
{
"manifestContent": "FASDFASGSD214GFDG657VHGFHFGJGFHJ ...... jwhhj34t34nmxzvkl4tDGDF909=", // The encoded voucher content (base64)
"error": null
}❌ Status: 400 BAD REQUEST
The requested order(s) could not be found, so the manifest creation failed.
{
"manifestContent": null,
"error": {
"errorMessage": "The manifest could not be created due to the absence of sales orders",
"errorCode": 10400
}
}Possible Reasons
- Order does not exist for the given shipment_id.
- Order is not ready for shipment.
Example order (to get the shipmentID):
{
"order_id": 3257,
"user_id": 2,
"order_reference": "GR--3257--MER78",
// Other fields...
"shipment_ids": [ // List of shipment IDs
462
],
"products": [
"307": {
"item_id": 307,
// Other fields...
}
]
}