0% found this document useful (0 votes)
17 views49 pages

NEW API Documentation IDE V.2.4.0

ID Express API Documentation V.2.4.0 provides a RESTful API for order management, including order creation and modification. Users must obtain an appId and securityKey for authentication and follow specific guidelines for request formatting and data integrity. The document includes detailed instructions for API calls, required parameters, and example requests for creating and modifying waybills.

Uploaded by

luthfi
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)
17 views49 pages

NEW API Documentation IDE V.2.4.0

ID Express API Documentation V.2.4.0 provides a RESTful API for order management, including order creation and modification. Users must obtain an appId and securityKey for authentication and follow specific guidelines for request formatting and data integrity. The document includes detailed instructions for API calls, required parameters, and example requests for creating and modifying waybills.

Uploaded by

luthfi
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/ 49

+

NAVIGATE ADVANCE DELIVERY

API Documentation
V.2.4.0
ID Express provides a simple and powerful RESTful API (Application Programming
Interface) to integrate seamlessly with other applications. This documentation
explains how to successfully generate a new order, manage the orders and check
the shipping fee from ID Express.

Before You Start


You will need an appId and securityKey, please contact IDExpress Tech Division to
get them. And at the end of this document there will be a standard Waybill paper
specification that needs to be met.
Notes: the appId and securityKey in this document are only used as examples.
● Call the interface using HTTP POST
● Sandbox base URL: https://api-stg.idexpress.tech
● POST encoding format: “application/x-www-form-urlencoded”
● Data field is used to indicate the JSON / data content to be requested
during POST. For data security, a called request must contain a signature
(sign) value. To get signatures, please use the Md5 algorithm:
md5(data+appId+securityKey).
● The response (return value) will be in JSON format:
{
"code": if no error = 0, else return errorCode
(int) "desc": error description (String)
"total": total_records (Long)
"data": Object or Array result
}

Key Description Example


{
"senderCityId": 42,
"recipientDistrictId": 14896,
data JSON data value
"weight": "1",
"expressType":"00"
}
appId client app identifier 123456

To make confidential
securityKey ABCDEFGHI123456
requests to another server.

To ensure information integrity.


Signatures are used to ensure that API
sign 07bb98b114726acb8c748f2a3e9fa012
requests or responses have not been
tampered with transit.

PHP example: JS example:


<?php const utf8 = require('utf8');
$appId = '123456'; const md5 = require("js-md5");
$secKey = 'ABCDEFGHI123456'; var data = `{
"senderCityId": 42,
$data = '{
"recipientDistrictId": 14896,
"senderCityId": 42, "weight": "1",
"recipientDistrictId": 14896, "expressType":"00"
"weight": "1", }`;
"expressType":"00" var app_id = '123456';
}'; var secret = 'ABCDEFGHI123456';
$sign = md5($data.$appId.$secKey); var encoded = utf8.encode(data+app_id+secret);
var output = md5(encoded);
echo $sign;
console.log("output : " + output);
?>
The sign should be: The sign should be:
07bb98b114726acb8c748f2a3e9fa012 07bb98b114726acb8c748f2a3e9fa012
API List

1.1. Create Batch Orders

Function:
● To create one or more orders
Validation:
● If ServiceType = 00 (Pickup), then pickupStartTime and pickupEndTime
parameters are mandatory.
● pickupStartTime must be > 1.5 hours greater than orderTime & current time
● pickupEndTime must be at least 4 hours greater than pickupStartTime
Methods:
● POST
Request URL:
● {{base_url}}/open/v1/waybill/create

Request Body (x-www-form-urlencoded):

Key Description Type Mandatory Notes


appId client app identifier String Yes

sign Signature String Yes

data Order List JSON Array Yes

Order List Data (JSON):

Param Description Type Mandatory Notes


String Max 32 CHAR,
orderNo Order Number Yes
(32) Alphanumerical
Only if using
Reserved Waybill
waybillNo String (15) No reserved/booking
Number
waybill
Order creation 10 digit - Unix
orderTime Long Yes
time Timestamp

ID Express Shipping 00 = STD (Standard)


expressType String (2) Yes 03 = iDlite (iDlite)
Service
06 = iDtruck (Cargo)
itemName Name of Item String (1024) Yes
0 = No (Default)
insured Insurance Status String (1) No
1 = Yes
itemRemarks Item Notes String (1024) No

itemQuantity Quantity of item Integer Yes


00 = Items
itemCategory Category of item String (2) Yes 01 = Document
02 = Bird Nest
Total weight all Unit: Kilograms (KG)
weight items in String Yes Support 2 decimal
Kilogram (KG) places
Item’s length in
length Integer No Unit: Centimeters (CM)
Centimeters (CM)
Item’s width in
width Integer No Unit: Centimeters (CM)
Centimeters (CM)
Item’s height in
height Integer No Unit: Centimeters (CM)
Centimeters (CM)
Pick up / Drop 00 = Pickup
serviceType String (2) Yes
Off Service Type 01 = Drop off

- Max value is
Yes, 100,000,000
itemValue Item value String
if insured= 1 - Max value is 5,000,000
if codAmount > 0

senderName Sender Name String (128) Yes


senderEmail Sender Email String (128) No
Must be started with
Sender Phone
senderCellphone String (16) Yes “0” or “62”, max. 16
Number
CHAR
Must be started with
Sender Secondary
senderPhoneNumber String (16) No “0” or “62”, max. 16
Phone Number
CHAR
Sender Province Get code from Area List
senderProvinceId Long No
Code provided
Get code from Area
senderCityId Sender City Code Long Yes
List provided

Get code from Area


senderDistrictId Sender District Id Long Yes
List provided

If serviceType = 00, then


Depends on
Sender Address senderAddress is
senderAddress String (512) Service Type,
Details mandatory, else not
default = No
mandatory

senderZipCode Sender Zip Code String (5) No

recipientName Recipient Name String (128) Yes


recipientEmail Recipient Email String (128) No
Must be started with
Recipient Phone
recipientCellphone String (16) Yes “0” or “62”, max. 16
Number
CHAR
Recipient Must be started with
recipientPhoneNumber Secondary Phone String (16) No “0” or “62”, max. 16
Number CHAR
Recipient Province Get code from Area
recipientProvinceId Long No
Code List provided
Get code from Area
recipientCityId Recipient City Code Long Yes
List provided
Get code from Area
recipientDistrictId Recipient District Id Long Yes
List provided
Recipient
recipientAddress String (512) Yes
Address Details
Recipient Zip
recipientZipCode String (5) No
Code
COD Amount in Min value 10,000
codAmount String No
Rupiah Max value 5,000,000

paymentType Settlement Type String (2) Yes 01 = Periodic

10 digit- Unix
Timestamp
Starting time Depends on
pickupStartTime Long (Must be 90 minutes
range of Pick-up Time serviceType
greater than orderTime
& current time)
10 digit - Unix
Timestamp
End time range Depends on
pickupEndTime Long (Must be 240 minutes
of Pick-up Time serviceType
greater than
pickupStartTime)

Only for VIP client


shippingclient VIP User Name String No (client who are using
our VIP Portal)
Response Parameter:

Parameter Description Type Remark


code Business code Integer

desc Return description String

total Total Integer

data Return result object Array

Data

Parameter Description Type Remark


code Business code Integer

orderNo Order No. String

waybillNo Waybill No. String Will shown if orderNo is duplicated

sortingCode Sorting Code String Will shown if orderNo is duplicated


minSla Min SLA in days Integer
minSla Max SLA in days Integer

msg Message String


Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/waybill/create
● Request Body:
● x-www-form-urlencoded:

data=[

{
"orderNo":"IDTEST234220",
"waybillNo":"",
"orderTime": 1609144242,
"expressType":"00",
"itemName":"Colorful Clothes",
"insured":"0",
"itemRemarks":"Size: L, Black Blue White",
"itemQuantity":1,
"itemCategory":"00",
"weight":"1",
"length":11,
"width":15,
" height":17,
"itemValue":"200000",
"senderName":"John Doe",
"senderEmail":"[email protected]",
"senderPhoneNumber":"081292823829",
"senderCellphone":"081292823829",
"senderProvinceId":1,
"senderCityId":37,
"senderDistrictId":14905,
"senderAddress":"512 Daugherty Circles New Dejuanburgh, DE 63176-1395",
"senderZipCode":"10060",
"recipientName":"Kevin",
"recipientEmail":"[email protected]",
"recipientPhoneNumber":"085921065965",
"recipientCellphone":"085921065965",
"recipientProvinceId":1,
"recipientCityId":39,
"recipientDistrictId":14918,
"recipientAddress":"JL Gatot Subroto X No 9",
"serviceType":"00",
"codAmount":"100000",
"paymentType":"01",
"pickupStartTime":1609194642,
"pickupEndTime":1609453842,
},
{
"orderNo": "IDTEST2343320",
"orderTime": 1609144242,
"expressType":"00",
"itemName": "Milego Jeans",
"insured":"0",
"itemRemarks": "Size: 32, Black Washed",
"itemQuantity":1,
"itemCategory":"00",
"weight": "0.5",
"length":0,
"width":0,
"height":0,
"insuranceAmount":"120",
"itemValue":"100000",
"senderName":"John Doe",
"senderEmail":"[email protected]",
"senderPhoneNumber":"081292823829",
"senderCellphone":"081292823829",
"senderProvinceId":1,
"senderCityId":37,
"senderDistrictId":14905,
"senderAddress":"512 Daugherty Circles,New Dejuanburgh, DE 63176-1395",
"senderZipCode":"10060",
"recipientName": "Kevin",
"recipientEmail":"[email protected]",
"recipientPhoneNumber":"085921065965",
"recipientCellphone":"085921065965",
"recipientProvinceId":1,
"recipientCityId":39,
"recipientDistrictId":14918,
"recipientAddress":"JL Gatot Subroto X No 9",
"serviceType":"01",
"codAmount":"100000",
"paymentType":"01"
}
]
&appId=xxxxxxx&sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Successful Response (Created Successfully)

Failed Response
Failed Response (Duplicated Order/Already existed)
1.2. Modify Waybill / Edit Waybill

Function:
● To edit waybill information
Note: Waybill that has been picked up cannot be modified.

Methods:
● POST
Request URL:
● {{base_url}}/open/v1/waybill/update

Request Body (x-www-form-urlencoded):

Key Description Type Mandatory Notes


data Order Information Object Yes

appId client app identifier String Yes

sign sign String Yes

Order Information (JSON):


Param Description Type Mandatory Notes

Order creation Unix Timestamp


orderTime Long Yes
time (GMT+00) (GMT+00)

00 = STD (Standard)
expressType Express type String (2) Yes 03 = iDlite (iDlite)
06 = iDtruck (Cargo)

itemName Item name String (1024) Yes


0=No (Default)
insured insured String (1) No
1=Yes

itemRemarks Item Remarks String (1024) No

itemQuantity Item Quantity Integer Yes

00 Items
itemCategory Item Category String (2) Yes
01 Document

Unit: KG. Support two


weight weight String Yes
decimal places

length length Integer No CM

width width Integer No CM

height height Integer No CM


- Max value is 100,000,000
Yes,
itemValue Item value String - Max value is 5,000,000 if
if insured= 1
codAmount > 0

senderName Sender Name String (128) Yes

senderEmail Sender Email String (128) No


Sender Phone Must be started with “0”
senderCellphone String (16) Yes
Number or “62”, max. 16 CHAR
Sender Secondary Must be started with “0”
senderPhoneNumber String (16) No
Phone Number or “62”, max. 16 CHAR
Sender Province Get code from Area List
senderProvinceId Long Yes
Code provided
Get code from Area List
senderCityId Sender City Code Long Yes
provided
Get code from Area List
senderDistrictId Sender District Code Long Yes
provided
If serviceType = 00, then
Depends on
senderAddress is
senderAddress Sender Address String (512) Service Type,
mandatory, else not
default = No
mandatory
senderZipCode Sender ZipCode String (5) No

recipientName Recipient Name String (128) Yes

recipientEmail Recipient Email String (128) No


Recipient Phone Must be started with “0”
recipientCellphone String (16) Yes
Number or “62”, max. 16 CHAR
Recipient Secondary Must be started with “0”
recipientPhoneNumber String (16) No
Phone Number or “62”, max. 16 CHAR
Recipient Province Get code from Area List
recipientProvinceId Long Yes
Code provided
Get code from Area List
recipientCityId Recipient City Code Long Yes
provided
Recipient District Get code from Area List
recipientDistrictId Long Yes
Code provided
recipientAddress Recipient Address String (512) Yes

recipientZipCode Recipient ZipCode String (5) No


00 = Pickup
serviceType Service Type String (2) Yes
01 = Drop off
COD Amount in Min value 10,000
codAmount String No
Rupiah Max value 5,000,000
paymentType Payment Type String (2) Yes 01 = Periodic
Pickup StartTime Unix Timestamp
pickupStartTime Long No
(GMT+00) (GMT+00)
Pickup EndTime Unix Timestamp
pickupEndTime Long No
(GMT+00) (GMT+00)
Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/waybill/update
● Request
body:
data =
{
"orderTime": 1609144242,
"expressType":"00",
"itemName":"Colorful Shoes",
"insured":"0",
"itemRemarks":"Size 33",
"itemQuantity":1,
"itemCategory":"01",
"weight":"1","length":11,"width":15,"height":17,
"itemValue":"124000",
"senderName":"John Doe",
"senderEmail":"[email protected]",
"senderPhoneNumber":"628192920911",
"senderCellphone":"628382139111",
"senderProvinceId":1,"senderCityId":37,"senderDistrictId":14905,
"senderAddress":"512 Daugherty Circles New Dejuanburgh, DE 63176-1395",
"senderZipCode":"10060",
"recipientName":"Kevin",
"recipientEmail":"[email protected]",
"recipientPhoneNumber":"085921065965",
"recipientCellphone":"085921065965",
"recipientProvinceId":1,"recipientCityId":39,"recipientDistrictId":14918,
"recipientAddress":"JL Gatot Subroto X No 9",
"serviceType":"00",
"codAmount":"123",
"paymentType":"01",
"pickupStartTime":1609194642,
"pickupEndTime":1609453842,
}
&appId=100101&sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Successful Response

{
"code": 0,
"desc": null,
"total": null,
"data": null
}

Failed Response (Business Exception)


{

"code": 1100,
"desc": "The waybill has been picked up and cannot be updated",
"total": null,
"data": null
}

Failed Response (System Exception)

"code": -100000,

"desc": "System exception",

"total": null,

"data": null

}
1.3. Cancel Waybill

Function:
● To cancel waybill
Note: Waybills that have been picked up cannot be canceled.

Methods:
● POST
Request URL:
● {{base_url}}/open/v1/waybill/cancel

Request Body (x-www-form-urlencoded):

Key Description Type Mandatory Notes


data Waybill No Object Yes

appId client app identifier String Yes

sign sign String Yes

Response Parameter

Parameter Description Type Remark


code Business code Integer

desc Return description String

total Total Integer

data Return Content Array

Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/waybill/cancel
● Request Body:
x-www-form-urlencoded:

data=
{
"waybillNo": "IDP003699812429"
}
&appId=100101&sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Successful Response

{
"code": 0,
"desc": null,
"total": null,
"data": null
}

Failed Response (Business Exception)

"code": 1100,
"desc": "The waybill has been taken and cannot be canceled",
"total": null,
"data": null
}

Failed Response (System Exception)

{
"code": -100000,
"desc": "System exception",
"total": null,
"data": null
}
2.1. Tracking Waybill

Function:
● To track the waybill progress.
Supported for order number and waybill number.

Methods:
● GET
Request URL:
● {{base_url}}/open/v1/waybill/get-tracking

Request Parameter

Key Description Type Mandatory Notes

appId client app identifier String Yes

sign Signature String Yes

data Waybill No or Order No JSON Array Yes

Response Parameter

Parameter Description Type Notes

code Business Code Integer

desc Description String

Total Total of Waybill Integer

Data List of Waybill Shipping Information Array


Data

Object Description Type Notes

basicInfo Waybill Basic Information Object

itemInfo Item’s Information Object

senderInfo Sender’s Information Object

recipientInfo Recipient’s Information Object

history Scan history Array

basicInfo

Parameter Description Type Notes

orderNo Order No. String

waybillNo Waybill No. String

orderTime Order create time Long Unix Timestamp

itemInfo

Parameter Description Type Notes

itemName Item Name String

insured Insured String

itemRemarks Item Remarks String

itemQuantity Item Quantity Integer

itemCategory Item Category Integer

weight weight String Unit: KG, 2 decimals

length length Integer in CM

width length Integer in CM

height height Integer in CM

insuranceAmount Insurance Amount String

itemValue Item value String


senderInfo

Parameter Description Type Notes

senderName Sender Name String

senderEmail Sender Email String

senderPhoneNumber Sender PhoneNumber String

senderCellphone Sender Cellphone String

senderProvince Sender Province String

senderCity Sender City String

senderDistrict Sender District String

senderAddress Sender Address String

senderZipCode Sender ZipCode String

recipientInfo

Parameter Description Type Notes

senderName Sender Name String

senderEmail Sender Email String

senderPhoneNumber Sender PhoneNumber String

senderCellphone Sender Cellphone String

senderProvince Sender Province String

senderCity Sender City String

senderDistrict Sender District String

senderAddress Sender Address String

senderZipCode Sender ZipCode String


history

Parameter Description Type Notes

waybillNo Waybill No. String


List of Operation type:
1. Pick up scan
2. Loading scan
3. Sending scan
4. Arrival scan
5. Unloading scan
6. Delivery scan
7. POD scan / POD Entry
operationType Operation Type String
8. Return Confirm
9. Return POD Scan
10. Problem On Shipment scan

11. Create Return Bill

12. Confirm Return Bill

13. Pickup failure

14. Dropped Off at Store

15. Cancel Order New

operationTime Operation Time Long Unix Timestamp


courierName Courier Name String
currentBranch Current Branch String
nextBranchName Next Branch Name String
signer Signer String
problemCode Problem Code String
description Description of status String
Proof of Pickup, Problem on
proofOfStatus Image of proof String
Shipment and POD in form of URL
00 - Parent

01 - Security
relation Relation of signer String
02 - Receptionist

03 - Siblings

Request Example
● Method: GET
● URL: https://api-stg.idexpress.tech/open/v1/waybill/ get-
tracking?data=IDD654963289986&appId=100001&sign=xxxxxxxxxxxxxx
Successful Response

{
"code":0,
"desc":null,
"total":null,
"data":
{
"basicInfo":
{
"orderNo":"OR0111666000999",
"waybillNo":"IDD955255915888",
"shipingTime":1294890876859
},
"itemInfo":
{
"itemName":"ITEMNAME",
"insured":"0",
"itemRemarks": "itemRemarks",
"itemQuantity":122,
"itemCategory":"01",
"weight":"12.34",
"length":222,"width":222,"height":222,
"insuranceAmount":"123",
"itemValue":"124"
},
"senderInfo":
{
"senderName":"senderName",
"senderEmail":"[email protected]",
"SenderPhoneNumber":"1599090889",
"SenderCellphone":"5678999",
"SenderProvince":"DKI JAKARTA",
"SenderCity":"JAKARTA TIMUR",
"SenderDistrict":"KUNINGAN",
"SenderAddress":"SenderAddress House 521",
"SenderZipCode":"5035",
},
"recipientInfo":
{
"recipientName":"recipientName",
"recipientEmail":"[email protected]",
"recipientPhoneNumber":"15990908888",
"recipientCellphone":"5678888",
"recipientProvince":"JAWA TENGAH",
"recipientCity":"CILACAP",
"recipientDistrict":"CILACAP",
"recipientAddress":"recipientAddress House 677",
},
"historys":
[
{
"waybillNo":"IDD955255915888",
"operationType":"pick up scan",
"operationTime":1294890876859,
"courierName":"CourierAdmin",
"currentBranch": "HEADQUARTER",
"nextBranchName":"BranchName",
"proofOfStatus": "https://google.com/image.jpg",
"relation":"Parent",
"signer":"signer1"
},
{
"waybillNo":"IDD955255915888",
"operationType":"Loading scan",
"operationTime":1294890876859,
"courierName":"CourierAdmin",
"currentBranch": "HEADQUARTER",
"nextBranchName":"BranchName",
"proofOfStatus":" ",
"relation":"Parent",
"signer":"signer1"
}
]
}
}

Failed Response (Business Exception)

{
"code": 100002,
"desc": "Unable to find waybill",
"total": null,
"data": null
}

Failed Response (System Exception)

{
"code": -100000,
"desc": "System exception, please contact us",
"total": null,
"data": null
}
2.2. Get Waybill’s Last Status
Function:
● To get last status of a waybill(s)
Methods:
● POST
Request URL:

● {{base_url}}/open/v1/waybill/get-last-operation-waybill-with-fee

Request Body (x-www-form-urlencoded):

Parameter Description Type Mandatory


data List of waybills (JSON) Object Yes

appId client app identifier String Yes

sign sign String Yes

Response Parameter

Parameter Description Type


code Business code Integer

desc Return description String

total Total Integer

data Return Content Array


Data

Parameter Description Type


waybillNo Waybill No. String

lastStatus Last operation of waybill String

lastOperationTime Last operation Time Long

Description Description details of operation String

expressType expressType used for this waybill String

shippingFee Total shipping fee of waybill String

codAmount Total of COD Amount from this waybill

Last Status list:

Tracking Status Get Last Status


(Operation Type) (LastStatus name)

Pick up scan Pick up

Loading scan Pick up

Sending scan Sending

Arrival scan Arrival

Unloading scan Arrival

Delivery Scan OnDelivery

POD scan / POD Entry POD

Return Confirm (unused)

Return POD Scan Return POD

Problem on Shipment scan Problem on Shipment

Create Return Bill Problem on Shipment

Confirm Return Bill Returned

Pickup Failure Pickup Failed

Dropped Off at Store Dropped Off at Store


Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/waybill/get-last-operation-waybill-with-fee
● Request Body:
x-www-form-urlencoded:

data=
[
{
"waybillNo”: “IDE12345689001”
},
{
"waybillNo":"IDE123456789122"
}
]
&appId=100001&sign=xxxxxxxxxxxxxxxxxx

Successful response (All created successfully)


{
"code": 0,
"desc": null,
"total": null,
"data": [
{
"waybillNo": " IDE123456789122",
"lastStatus": "Return POD",
"description": "Return Package has been [Delivered], Represented POD
[Receptionist],signer is [w222222], POD branch is [AGENT_LIAONING], courier
is [LIAONING]",
"expressType": "STD",
"shippingFee": "4600.00000000",
"codAmount": "0",
"lastOperationTime": 1619708508000,
“lastOperationBranchName”: “AGENT_LIAONING”
},
{
“waybillNo”: “IDC123456789122”,
“lastStatus”: “POD”,
“description”: “Package has been [Delivered], Represented POD [Parent],
signer is [Bung rafid], POD branch is [AGENT_LIAONING], courier is [LIAONING]”,
“expressType”: “STD”,
“shippingFee”: “4600.00000000”,
“codAmount”: “0”,
“lastOperationTime”: 1619707053000,
"lastOperationBranchName": "AGENT_LIAONING"
}
]

Failed response (Business exception)

{
"code": -100000,
"desc": "System exception",
"total": null,
"data": null
}
3.1. Check Standard Shipping Fee

Function:
To get the shipping fee from origin and destination inputted

Methods:
● POST
Request URL:
● {{base_url}}/open/v2/waybill/get-standard-fee

Request Body (x-www-form-urlencoded):

Parameter Description Type Mandatory


Sender, Recipient, Weight and
data Object Yes
express type
appId client app identifier String Yes

sign sign String Yes

Data

Parameter Description Type Mandatory Notes

senderCityId Sender City Code Long Yes

Recipient Location
recipientDistrictId Long Yes
Code

Unit: Kg
weight Weight String Yes Support 2
decimals

00 = STD (Standard)
expressType Express Type String No 03 = iDlite (iDlite)
06 = iDtruck (Cargo)
Response

Parameter Description Type Notes


code Business code Integer

desc Return description String

total Total Integer

data Data Object Selected or All type


00 = STD (Standard)
expressType Express type String 03 = iDlite (iDlite)
06 = iDtruck (Cargo)
publishRate Standard shipping fee Integer
Special rate
clientRate Integer
(if available)
0 = not support COD
canCOD COD info Boolean
1 = support COD
minSla Min SLA in days Integer

maxSla Max SLA in days Integer

Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v2/waybill/get-standard-fee
● Request Body:
x-www-form-urlencoded:

data=
{
"senderCityId":36,
"recipientDistrictId":14989,
"weight":"0.5",
"expressType":"00"
}
&appId=100001&sign=xxxxxxxxxxxxxxxxxx
Successful Response when expressType is defined:

{
"code": 0,
"desc": "",
"total": 1,
"data": {
"selected": {
"expressType": "00",
"publishRate": 5200,
"clientRate": 5200,
"canCOD": 1,
"minSla": 0,
"maxSla": 0
}
}
}

Successful Response when expressType is undefined:


{

"code": 0,

"desc": "",

"total": 1,

"data": {

"all": [

"expressType": "00",

"publishRate": 10000,

"clientRate": 10000,

"canCOD": 1,

"minSla": 1,

"maxSla": 2

},
{

"expressType": "03",

"publishRate": 6000,

"clientRate": 6000,

"canCOD": 1,

"minSla": 1,

"maxSla": 2

},

"expressType": "06",

"publishRate": 30000,

"clientRate": 30000,

"canCOD": 1,

"minSla": 3,

"maxSla": 4

Failed Response (Business Exception)

{
"code": 1101,
"desc": "No standard quote information found",
" total": null,
"data": null
}

Failed Response (System Exception)

{
"code": -100000,
"desc": "System exception",
"total": null,
"data": null
}
3.2. Check Nearest Branch from Longitude & Latitude

Function:
To get the nearest branch from inputted longitude and latitude

Methods:
● POST
Request URL:
● {{base_url}}/open/v1/waybill/get-nearest-branch

Request Body (x-www-form-urlencoded):

Parameter Description Type Mandatory


Longitude
data Object Yes
and Latitude

appId client app identifier String Yes

sign sign String Yes

Data:

Parameter Description Type Mandatory


longitude longitude String Yes

latitude latitude String Yes


Response:

Parameter Description Type Notes


code Business code Integer

desc Return description String

total Total Integer

data Return content Array

Response Data:

Parameter Description Type Notes


branchNo Branch No String

branchName Branch Name String

longitude Longitude String

latitude Latitude String

pic PIC String

cellphone Phone String

detailAddress Detail address String

Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/waybill/get-nearest-branch
● Request
Body:

data =
{
"longitude":"-6.20934100",
"latitude":"106.97338300"
}
&appId=1000001&sign=xxxxxxxxxxxxxxxxxxxxxxx
Successful Response:
{
"code":0,
"desc":null,
"total":null,
"data":
[
{
"branchNo": "IDE_10",
"branchName": "IDE_Name1",
"longitude": "-6.20760500",
"latitude": "106.58821900",
"pic": "021458521334",
"cellphone": "021458521334",
"detailAddress": "recipientAddress House 678"
},
{
"branchNo": "IDE_11",
"branchName": "IDE_Name2",
"longitude": "-8.20760500",
"latitude":"106.58821900",
"pic": "021458521335,
"cellphone": "021458521335,
"detailAddress": " recipientAddress House 679"
}
]
}

Failed Response (Business Exception)

{
"code": 1102,
"desc": "The branch does not exist",
"total": null,
"data": null
}
4.1. Webhook Push Tracking Status
Function:
● To push tracking status of a waybill
Methods:
● POST
Request URL:
● To be provided by client

Request Parameters

Parameters Type Description


clientCode String Client identifier (appId)
orderNo String Customer unique Transaction Id.
waybillNo String iDexpress Waybill No.
This field will act as Last Operation status, the lists are:
1. Pick up scan (00)
2. Sending scan (04)
3. Arrival scan (05)
4. Delivery scan (09)
5. POD scan (10)
operationType String
6. Return POD Scan (16)
7. Problem on Shipment scan (18)
8. Confirm Return Bill (20)
9. Pickup failure (22)
10. Dropped Off at Store (28)
11. Automatic Cancel (54)
lastOperationTime Long Unix Timestamp – 10 Digits

This value will be shown When the operationType between:


1. Pickup Scan
courierName String 2. Delivery Scan
2. POD Scan
3. Return POD Scan

This value will be shown When the operationType = “Delivery


courierPhoneNumber String
Scan”
currentBranch String Current branch that handling the operationType.
Next branch that handling the operation type, only applied when
nextBranch String
operationType is Sending scan
Signer name, this value only shown when the operation type “POD
signer String
Scan”
This value is shown when the signer is not the recipient, list of
relation:
00 - Parent
relation String
01 - Security
02 - Receptionist
03 – Siblings
Note: This data will only be shown if the value is not Null and
operationType = “POD Scan”
When the operationType is “Problem on Shipment scan” This value
problemDescription String
will show the description of the problem.
Contain link of photo when last status is between:
1. Pickup scan (EPOP)
proofOfStatus String
2. POD Scan (EPOD)
3. Problem on Shipment
Standardize message
Message String
Please refer to table Message

Message

Operation type Message


Pickup Paket telah di pickup oleh [courierName]
Sending Paket dalam transit ke [nextBranch]
Arrival Paket telah sampai di [currentBranch]
Delivery Paket sedang dalam pengiriman oleh [courierName]
Paket telah di terima oleh [relation, signer]
POD
note: [Relation] will be shown if relation != Null
Return POD Paket retur telah diterima oleh [signer]
Problem on Shipment Pengiriman bermasalah dikarenakan [problemDescription]
Confirm Return Bill Paket akan di return
Pickup Failure Paket gagal di pick up dikarenakan [problemDescription]
Pengiriman telah dibatalkan secara otomatis karena tidak diproses
Cancel Order
melewati 14 hari
Response Parameter

Parameter Description Type


status Status Code Integer

message Return description String

Sample Request
[
{
“clientCode”: “100101”,
“orderNo”: “ORD000000123”,
“waybillNo”: “IDE123456789012”,
“operationtype”: “Pickup Scan”,
“lastOperationTime”: “1641800878”,
“courierName”: “Abdulah”,
“courierPhoneNumber”: null,
“currentBranch”: “TH KEMBANGAN”,
“nextBranch”: null,
“signer”: null,
“relation": null,
“problemDescription”: null,
“proofOfStatus”: “test.jpg",
“message”: “Paket telah di pickup oleh Abdulah”
},
{
“clientCode”: “100101”,
“orderNo”: “ORD000000123”,
“waybillNo”: IDE123456789012,
“operationtype”: “Sending Scan”,
“lastOperationTime”: “1641800878”,
“courierName”: null,
“courierPhoneNumber”: null,
“currentBranch”: “TH KEMBANGAN”,
“nextBranch”: “TH BEKASI”,
“signer”: null,
“relation”: null,
“problemDescription”: null,
“proofOfStatus”: null,
“message”:” Paket dalam transit ke TH BEKASI”
},
{
“clientCode”: “100101”,
“orderNo”: “ORD000000123”,
“waybillNo”: “IDE123456789012”,
“operationtype”: “Problem on Shipment Scan”,
“lastOperationTime”: “1641800878”,
“courierName”: null,
“courierPhoneNumber”: null,
“currentBranch”: “TH BEKASI”,
“nextBranch”: null,
“signer”: null,
“relation”: null,
“problemDescription”: “Paket Hilang”,
“proofOfStatus”: “test.jpg",
“message”: “Pengiriman bermasalah dikarenakan Paket Hilang”
},
{
“clientCode”: “100101”,
“orderNo”: “ORD000000123”,
“waybillNo”: “IDE123456789012”,
“operationtype”: “Delivery Scan”,
“lastOperationTime”: “1641800878”,
“courierName”: “Abdulah”,
“courierPhoneNumber”: “08123456789”,
“currentBranch”: “TH BEKASI”,
“nextBranch”: null,
“signer”: null,
“relation”: null,
“problemDescription”: null,
“proofOfStatus”: null
“message”: “Paket sedang dalam pengiriman oleh abdulah”
},
{
“clientCode”: “100101”,
“orderNo”: “ORD000000123”,
“waybillNo”: “IDE123456789012”,
“operationtype”: “POD Scan”,
“lastOperationTime”: “1641800878”,
“courierName”: “abdulah”,
“courierPhoneNumber”: null,
“currentBranch”: TH BEKASI,
“nextBranch”: null,
“signer”: Hafif,
“relation”: Parent,
“problemDescription”: null,
“proofOfStatus”: “test.jpg",
“message”: “Paket telah di terima oleh parent, hafif”
}
]
Sample Response

SUCCESS

{
"status": 200,
"message": "Success"
}

FAILED

{
"status": 400,
"message": "Invalid data sent"
}

4.2. Webhook Push Weight & Shipping Fee


Function:
● To push the weight & shipping fee
Methods:
● POST
Request URL:
● To be provided by client

Parameters Type Description


clientCode String Client identifier (appId)
waybillNo String iDexpress Waybill No.

The express type that will be pushed


00 : STD
expressType String
01 : SMD
06 : IDtruck

actualWeight Integer Actual weight of the parcel (unrounded) in gram

volumetricWeight Integer Volumetric weight of the parcel (unrounded) in gram


calculatedWeight Integer Rounded weight that will be counted for Shipping Fee
totalShippingFee Integer Total Shipping Fee
Response Parameter

Parameter Description Type


status Status Code Integer

message Return description String

Sample Request

{
"clientCode": "100101",
"waybillNo": "IDE123456789012",
"expressType": "00",
"actualWeight": “2400”,
"volumetricWeight": "1900",
"calculatedWeight": “3000”,
"totalShippingFee": “30000”
}

Sample Response

SUCCESS

{
"status": 200,
"message": "Success"
}

FAILED

{
"status": 400,
"message": "Invalid data sent"
}
5.1 Generate Reserved Waybill Number

Function:
● To generate reserved waybill number

Methods:
● POST
Request URL:
● {{base_url}}/open/v1/book

Request Body (x-www-form-urlencoded):

Key Description Type Mandatory Notes

data Waybill No Object Yes

appId client app identifier String Yes

sign sign String Yes

data

Parameter Description Type Mandatory Remark


Total of the number waybill Max. 10.000 waybills
total Integer Yes
that want to be generated generated per request
expireTime 10 digits, UNIX timestamp integer Yes Cannot backdate

Response Parameter

Parameter Description Type Remark


code Business code Integer

desc Return description String

total Total Integer

data Return Content Array


Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/book
● Request Body:
x-www-form-urlencoded:

Successful Response

Failed Response (expire time cannot backdate)

Failed Response (client not authorized to use generate waybill


5.2 Extend Expire Time Reserved Waybill Number

Function:
● To extend the expire time of generated reserved waybill number

Methods:
● PUT
Request URL:
● {{base_url}}/open/v1/rebook

Request Body (x-www-form-urlencoded):

Key Description Type Mandatory Notes


data Waybill No Object Yes

appId client app identifier String Yes

sign sign String Yes

Data

Parameter Description Type Remark


List of waybill no that want Cannot be extend if waybill already
waybillNo array
to be extend been picked up or not exist
expireTime 10 digits, UNIX timestamp integer Cannot backdate

Response Parameter

Parameter Description Type Remark


code Business code Integer

desc Return description String

total Total Integer

data Return Content Array


Request Example
● Method: POST
● URL: https://api-stg.idexpress.tech/open/v1/rebook
● Request Body:
x-www-form-urlencoded:

Successful Response

Failed Response (expire time cannot backdate)

Failed Response (client not authorized to use extend waybill)

Failed Response (the waybill is not exists or already been picked up)
Error Message
Error Code List:
Code Description

0 Success

100000 Partial data exception

100001 The waybill has been picked up and cannot be updated

100002 Unable to find waybill

100003 No standard quote information found

100004 No shipment tracking found

100005 Provinces and cities or regions are illegal

100006 The waybill is not exist

100007 The waybill is exist

100008 Shipping client doesn’t exist

100009 Shipping client must be filled for COD Transaction

100011 Pickup Start Time and Pickup End Time cannot be null

100012 PickupEndTime must be at aleast 4 hours greater than pickupStartTime

100013 PikcupStartTime must be at least 1.5 hours greater than orderTime

100014 Cash Payment is not available

100015 WaybillNo and “orderNo” cannot be empty

100016 The waybillNo is not equal to “orderNo”

100017 pickupStartTime must use 10 digits unix timestamp

100018 pickupEndTime must use 10 digits unix timestamp

100019 Weight must be greater than 0

100020 Destination Province, City and District are not match

-100000 System exception, please contact us

-100001 Signature error

-100002 Update failed

-100003 Order is insured, itemValue cannot be empty

-100004 Illegal parameter

*Note: This is a non-final version of error message list. If you found any code that
doesn’t exist in the table above, please contact ID Express TECH Division.
Waybill Paper information

Above is the example of iDexpress waybill label, there is no restriction on the size
of the paper. However, please make sure the information that highlighted in the above
picture is included, and also make sure the visibility of the information.
Changelog:
Ver. 2.1 :
- Add proofOfStatus parameter on Get Tracking Status API
- Add waybillNo parameter on Create Order API to cater reserved waybill
Ver. 2.2 :
- Add Book & Rebook capability for reserve waybill
- Add waybillNo parameter on Create Batch Order
Ver 2.2.1:
- Add value “Dropped Off at Store” on operationType parameter for Get Tracking Waybill
- Add value "Dropped Off at Store" on lastStatus parameter for Get Waybill's Last Status
- Add value "Dropped Off at Store" on operationType parameter for Webhook Push Tracking
Status
Ver 2.2.2:
- Add new parameter “minSla” and “maxSla” to Batch Create Orders and Check Standard
Shipping Fee
Ver 2.3.0:
- Add iDlite express type and remove SameDay express type on Create Order & Check Shipping
Fee
- Add new status on Get Tracking (Cancel New Order) and Webhook Push Tracking Status (Cancel
Order) for orders that canceled due to still unprocessed after 14 days
Ver 2.4.0:
- Change endpoint Check Shipping Fee to v2

You might also like