Configure EPO Item Pricing
curl --request POST \
--url https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"epoId": "EPO-123",
"itemCategories": [
{
"categoryCode": "DOCUMENTS",
"categoryName": "Documents & Papers",
"serviceLevels": [
{
"code": "NEXT_DAY",
"name": "Next Day Delivery",
"pricePerItem": 25,
"basePricePerKg": 5,
"minimumCharge": 35,
"maxWeightKg": 30,
"maxDimensionsCm": {
"length": 35,
"width": 25,
"height": 5
},
"volumetricDivisor": 5000,
"transitTimeHours": 24,
"specialHandlingOptions": [
{
"code": "FRAGILE",
"surcharge": 10
}
]
}
]
}
],
"effectiveDate": "2025-01-01",
"currency": "USD",
"taxRate": 0.1
}
'import requests
url = "https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing"
payload = {
"epoId": "EPO-123",
"itemCategories": [
{
"categoryCode": "DOCUMENTS",
"categoryName": "Documents & Papers",
"serviceLevels": [
{
"code": "NEXT_DAY",
"name": "Next Day Delivery",
"pricePerItem": 25,
"basePricePerKg": 5,
"minimumCharge": 35,
"maxWeightKg": 30,
"maxDimensionsCm": {
"length": 35,
"width": 25,
"height": 5
},
"volumetricDivisor": 5000,
"transitTimeHours": 24,
"specialHandlingOptions": [
{
"code": "FRAGILE",
"surcharge": 10
}
]
}
]
}
],
"effectiveDate": "2025-01-01",
"currency": "USD",
"taxRate": 0.1
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
epoId: 'EPO-123',
itemCategories: [
{
categoryCode: 'DOCUMENTS',
categoryName: 'Documents & Papers',
serviceLevels: [
{
code: 'NEXT_DAY',
name: 'Next Day Delivery',
pricePerItem: 25,
basePricePerKg: 5,
minimumCharge: 35,
maxWeightKg: 30,
maxDimensionsCm: {length: 35, width: 25, height: 5},
volumetricDivisor: 5000,
transitTimeHours: 24,
specialHandlingOptions: [{code: 'FRAGILE', surcharge: 10}]
}
]
}
],
effectiveDate: '2025-01-01',
currency: 'USD',
taxRate: 0.1
})
};
fetch('https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'epoId' => 'EPO-123',
'itemCategories' => [
[
'categoryCode' => 'DOCUMENTS',
'categoryName' => 'Documents & Papers',
'serviceLevels' => [
[
'code' => 'NEXT_DAY',
'name' => 'Next Day Delivery',
'pricePerItem' => 25,
'basePricePerKg' => 5,
'minimumCharge' => 35,
'maxWeightKg' => 30,
'maxDimensionsCm' => [
'length' => 35,
'width' => 25,
'height' => 5
],
'volumetricDivisor' => 5000,
'transitTimeHours' => 24,
'specialHandlingOptions' => [
[
'code' => 'FRAGILE',
'surcharge' => 10
]
]
]
]
]
],
'effectiveDate' => '2025-01-01',
'currency' => 'USD',
'taxRate' => 0.1
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing"
payload := strings.NewReader("{\n \"epoId\": \"EPO-123\",\n \"itemCategories\": [\n {\n \"categoryCode\": \"DOCUMENTS\",\n \"categoryName\": \"Documents & Papers\",\n \"serviceLevels\": [\n {\n \"code\": \"NEXT_DAY\",\n \"name\": \"Next Day Delivery\",\n \"pricePerItem\": 25,\n \"basePricePerKg\": 5,\n \"minimumCharge\": 35,\n \"maxWeightKg\": 30,\n \"maxDimensionsCm\": {\n \"length\": 35,\n \"width\": 25,\n \"height\": 5\n },\n \"volumetricDivisor\": 5000,\n \"transitTimeHours\": 24,\n \"specialHandlingOptions\": [\n {\n \"code\": \"FRAGILE\",\n \"surcharge\": 10\n }\n ]\n }\n ]\n }\n ],\n \"effectiveDate\": \"2025-01-01\",\n \"currency\": \"USD\",\n \"taxRate\": 0.1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"epoId\": \"EPO-123\",\n \"itemCategories\": [\n {\n \"categoryCode\": \"DOCUMENTS\",\n \"categoryName\": \"Documents & Papers\",\n \"serviceLevels\": [\n {\n \"code\": \"NEXT_DAY\",\n \"name\": \"Next Day Delivery\",\n \"pricePerItem\": 25,\n \"basePricePerKg\": 5,\n \"minimumCharge\": 35,\n \"maxWeightKg\": 30,\n \"maxDimensionsCm\": {\n \"length\": 35,\n \"width\": 25,\n \"height\": 5\n },\n \"volumetricDivisor\": 5000,\n \"transitTimeHours\": 24,\n \"specialHandlingOptions\": [\n {\n \"code\": \"FRAGILE\",\n \"surcharge\": 10\n }\n ]\n }\n ]\n }\n ],\n \"effectiveDate\": \"2025-01-01\",\n \"currency\": \"USD\",\n \"taxRate\": 0.1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"epoId\": \"EPO-123\",\n \"itemCategories\": [\n {\n \"categoryCode\": \"DOCUMENTS\",\n \"categoryName\": \"Documents & Papers\",\n \"serviceLevels\": [\n {\n \"code\": \"NEXT_DAY\",\n \"name\": \"Next Day Delivery\",\n \"pricePerItem\": 25,\n \"basePricePerKg\": 5,\n \"minimumCharge\": 35,\n \"maxWeightKg\": 30,\n \"maxDimensionsCm\": {\n \"length\": 35,\n \"width\": 25,\n \"height\": 5\n },\n \"volumetricDivisor\": 5000,\n \"transitTimeHours\": 24,\n \"specialHandlingOptions\": [\n {\n \"code\": \"FRAGILE\",\n \"surcharge\": 10\n }\n ]\n }\n ]\n }\n ],\n \"effectiveDate\": \"2025-01-01\",\n \"currency\": \"USD\",\n \"taxRate\": 0.1\n}"
response = http.request(request)
puts response.read_body{
"pricingId": "PRICE-456",
"status": "CONFIGURED",
"itemCategoriesConfigured": 2,
"serviceLevelsConfigured": 4,
"message": "Item pricing and service levels successfully configured"
}AWB Stock Management
Configure EPO Item Pricing
Configure item-specific pricing and service levels for Express Parcel Operators. This allows EPO to offer differentiated pricing based on item type, dimensions, handling requirements, and service levels.
POST
/
api
/
epo
/
item-pricing
Configure EPO Item Pricing
curl --request POST \
--url https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"epoId": "EPO-123",
"itemCategories": [
{
"categoryCode": "DOCUMENTS",
"categoryName": "Documents & Papers",
"serviceLevels": [
{
"code": "NEXT_DAY",
"name": "Next Day Delivery",
"pricePerItem": 25,
"basePricePerKg": 5,
"minimumCharge": 35,
"maxWeightKg": 30,
"maxDimensionsCm": {
"length": 35,
"width": 25,
"height": 5
},
"volumetricDivisor": 5000,
"transitTimeHours": 24,
"specialHandlingOptions": [
{
"code": "FRAGILE",
"surcharge": 10
}
]
}
]
}
],
"effectiveDate": "2025-01-01",
"currency": "USD",
"taxRate": 0.1
}
'import requests
url = "https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing"
payload = {
"epoId": "EPO-123",
"itemCategories": [
{
"categoryCode": "DOCUMENTS",
"categoryName": "Documents & Papers",
"serviceLevels": [
{
"code": "NEXT_DAY",
"name": "Next Day Delivery",
"pricePerItem": 25,
"basePricePerKg": 5,
"minimumCharge": 35,
"maxWeightKg": 30,
"maxDimensionsCm": {
"length": 35,
"width": 25,
"height": 5
},
"volumetricDivisor": 5000,
"transitTimeHours": 24,
"specialHandlingOptions": [
{
"code": "FRAGILE",
"surcharge": 10
}
]
}
]
}
],
"effectiveDate": "2025-01-01",
"currency": "USD",
"taxRate": 0.1
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
epoId: 'EPO-123',
itemCategories: [
{
categoryCode: 'DOCUMENTS',
categoryName: 'Documents & Papers',
serviceLevels: [
{
code: 'NEXT_DAY',
name: 'Next Day Delivery',
pricePerItem: 25,
basePricePerKg: 5,
minimumCharge: 35,
maxWeightKg: 30,
maxDimensionsCm: {length: 35, width: 25, height: 5},
volumetricDivisor: 5000,
transitTimeHours: 24,
specialHandlingOptions: [{code: 'FRAGILE', surcharge: 10}]
}
]
}
],
effectiveDate: '2025-01-01',
currency: 'USD',
taxRate: 0.1
})
};
fetch('https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'epoId' => 'EPO-123',
'itemCategories' => [
[
'categoryCode' => 'DOCUMENTS',
'categoryName' => 'Documents & Papers',
'serviceLevels' => [
[
'code' => 'NEXT_DAY',
'name' => 'Next Day Delivery',
'pricePerItem' => 25,
'basePricePerKg' => 5,
'minimumCharge' => 35,
'maxWeightKg' => 30,
'maxDimensionsCm' => [
'length' => 35,
'width' => 25,
'height' => 5
],
'volumetricDivisor' => 5000,
'transitTimeHours' => 24,
'specialHandlingOptions' => [
[
'code' => 'FRAGILE',
'surcharge' => 10
]
]
]
]
]
],
'effectiveDate' => '2025-01-01',
'currency' => 'USD',
'taxRate' => 0.1
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing"
payload := strings.NewReader("{\n \"epoId\": \"EPO-123\",\n \"itemCategories\": [\n {\n \"categoryCode\": \"DOCUMENTS\",\n \"categoryName\": \"Documents & Papers\",\n \"serviceLevels\": [\n {\n \"code\": \"NEXT_DAY\",\n \"name\": \"Next Day Delivery\",\n \"pricePerItem\": 25,\n \"basePricePerKg\": 5,\n \"minimumCharge\": 35,\n \"maxWeightKg\": 30,\n \"maxDimensionsCm\": {\n \"length\": 35,\n \"width\": 25,\n \"height\": 5\n },\n \"volumetricDivisor\": 5000,\n \"transitTimeHours\": 24,\n \"specialHandlingOptions\": [\n {\n \"code\": \"FRAGILE\",\n \"surcharge\": 10\n }\n ]\n }\n ]\n }\n ],\n \"effectiveDate\": \"2025-01-01\",\n \"currency\": \"USD\",\n \"taxRate\": 0.1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"epoId\": \"EPO-123\",\n \"itemCategories\": [\n {\n \"categoryCode\": \"DOCUMENTS\",\n \"categoryName\": \"Documents & Papers\",\n \"serviceLevels\": [\n {\n \"code\": \"NEXT_DAY\",\n \"name\": \"Next Day Delivery\",\n \"pricePerItem\": 25,\n \"basePricePerKg\": 5,\n \"minimumCharge\": 35,\n \"maxWeightKg\": 30,\n \"maxDimensionsCm\": {\n \"length\": 35,\n \"width\": 25,\n \"height\": 5\n },\n \"volumetricDivisor\": 5000,\n \"transitTimeHours\": 24,\n \"specialHandlingOptions\": [\n {\n \"code\": \"FRAGILE\",\n \"surcharge\": 10\n }\n ]\n }\n ]\n }\n ],\n \"effectiveDate\": \"2025-01-01\",\n \"currency\": \"USD\",\n \"taxRate\": 0.1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://1a557de0-701c-477d-bedd-433520441dae.mock.pstmn.io/api/epo/item-pricing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"epoId\": \"EPO-123\",\n \"itemCategories\": [\n {\n \"categoryCode\": \"DOCUMENTS\",\n \"categoryName\": \"Documents & Papers\",\n \"serviceLevels\": [\n {\n \"code\": \"NEXT_DAY\",\n \"name\": \"Next Day Delivery\",\n \"pricePerItem\": 25,\n \"basePricePerKg\": 5,\n \"minimumCharge\": 35,\n \"maxWeightKg\": 30,\n \"maxDimensionsCm\": {\n \"length\": 35,\n \"width\": 25,\n \"height\": 5\n },\n \"volumetricDivisor\": 5000,\n \"transitTimeHours\": 24,\n \"specialHandlingOptions\": [\n {\n \"code\": \"FRAGILE\",\n \"surcharge\": 10\n }\n ]\n }\n ]\n }\n ],\n \"effectiveDate\": \"2025-01-01\",\n \"currency\": \"USD\",\n \"taxRate\": 0.1\n}"
response = http.request(request)
puts response.read_body{
"pricingId": "PRICE-456",
"status": "CONFIGURED",
"itemCategoriesConfigured": 2,
"serviceLevelsConfigured": 4,
"message": "Item pricing and service levels successfully configured"
}Reference Documentation
For more information on EPO item pricing configuration, please refer to:
- Page 32 of “Functional_Requirements_V18 FINAL”: https://belli.sg/4oz9ZuL
Authorizations
ApiKeyAuthApiKeyHeader
Body
application/json
Response
200 - application/json
Item pricing and service levels successfully configured
⌘I