Pricing
API endpoints for Pricing management in LSP.
Add pricing rule
http
POST /v1/lsp/pricing/rulesHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
{
"code": "A10",
"name": "Distribution Shipping Pricing",
"version": "1.0",
"model": "DISTANCE_BASED",
"currency": {
"name": "Ghana Cedis",
"code": "GHS",
"symbol": "GH₵"
},
"baseRate": 10,
"effective": {
"timestamp": {{$timestamp}},
"timezone": "Africa/Accra"
}
}Get pricing rule
http
GET /v1/lsp/pricing/rules/:idHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Get all pricing rules
http
GET /v1/lsp/pricing/rulesHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Update pricing rule
http
PATCH /v1/lsp/pricing/rules/:idHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
{
"version": "1.1",
"baseRate": 25,
"effective": {
"timestamp": {{$timestamp}},
"timezone": "Africa/Accra"
},
"tags": ["low-rate"]
}Delete pricing rule
http
DELETE /v1/lsp/pricing/rules/:idHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Add pricing rule tier
http
POST /v1/lsp/pricing/rules/:id/tiersHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
typescript
interface Add pricing rule tierRequest {
type: string;
category: string;
title: string;
minThreshold: number;
maxThreshold: number;
unit: string;
rate: number;
isOptional: boolean;
}Example:
json
{
"type": "HANDLING_FEE",
"category": "TRANSPORTATION",
"title": "Duration Based fee",
"minThreshold": 3,
"maxThreshold": 10,
"unit": "min",
"rate": 5,
"isOptional": false
}Update pricing rule tier
http
PATCH /v1/lsp/pricing/rules/:id/tiers/:indexHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
typescript
interface Update pricing rule tierRequest {
minThreshold: number;
multipliers: {
timeSlot: string;
minimumFee: number;
minimumHours: number;
multiplier: number
}[];
}Example:
json
{
"minThreshold": 5,
"multipliers": [
{
"timeSlot": "PEAK_HOURS",
"minimumFee": 20,
"minimumHours": 2,
"multiplier": 1.4
}
]
}Delete pricing rule tier
http
DELETE /v1/lsp/pricing/rules/:id/tiers/:indexHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
typescript
interface Delete pricing rule tierRequest {
minThreshold: number;
multipliers: {
timeSlot: string;
minimumFee: number;
minimumHours: number;
multiplier: number
}[];
}Example:
json
{
"minThreshold": 5,
"multipliers": [
{
"timeSlot": "PEAK_HOURS",
"minimumFee": 20,
"minimumHours": 2,
"multiplier": 1.4
}
]
}Add pricing rule seasonal adjustments
http
POST /v1/lsp/pricing/rules/:id/adjustmentsHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
{
"start": {
"timestamp": {{$timestamp}},
"timezone": "Africa/Accra"
},
"end": {
"timestamp": {{$timestamp}},
"timezone": "Africa/Accra"
},
"category": "TRANSPORTATION",
"adjustmentType": "MULTIPLIER",
"value": 1.2,
"description": "Chistmas Time"
}Delete pricing rule seasonal adjustments
http
DELETE /v1/lsp/pricing/rules/:id/adjustments/:indexHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
typescript
interface Delete pricing rule seasonal adjustmentsRequest {
minThreshold: number;
multipliers: {
timeSlot: string;
minimumFee: number;
minimumHours: number;
multiplier: number
}[];
}Example:
json
{
"minThreshold": 5,
"multipliers": [
{
"timeSlot": "PEAK_HOURS",
"minimumFee": 20,
"minimumHours": 2,
"multiplier": 1.4
}
]
}Add pricing rule contract terms
http
POST /v1/lsp/pricing/rules/:id/contractHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
{
"type": "CONTRACT", // SPOT, CONTRACT, FRAMEWORK
"minimumVolume": {
"quantity": 2400,
"unit": "orders",
"period": "monthly" // 'monthly', 'quarterly', 'annually'
},
"currency": {
"name": "Ghana Cedis",
"code": "GHS",
"symbol": "GH₵"
},
"payment": {
"net": 25, // Default: 30
"invoiceFrequency": "monthly"
},
"sla": {
"onTimeDelivery": 75, // percentage
"damageRate": 10, // percentage
"lossRate": 0, // percentage
"penalties": [
{
"metric": "Delayed delivery",
"threshold": 10,
"penalty": 120,
"unit": "order"
},
{
"metric": "Damaged packages",
"threshold": 5,
"penalty": 200,
"unit": "package"
}
]
},
"liabilityLimits": {
"maxLiabilityPerShipment": 3,
"maxLiabilityPerIncident": 5
}
}Update pricing rule contract terms
http
PATCH /v1/lsp/pricing/rules/:id/contractHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
{
"minimumVolume": {
"quantity": 500,
"unit": "orders",
"period": "monthly" // 'monthly', 'quarterly', 'annually'
},
"payment.net": 30,
"sla.onTimeDelivery": 65 // percentage
}Get all pricing templates
http
GET /v1/lsp/pricing/templates?category=TRANSPORTATION&tag=low-rateHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Create pricing rule from a template
http
POST /v1/lsp/pricing/templatesHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
{
"templateId": "{{LSPPricingTemplateId}}", // SPOT, CONTRACT, FRAMEWORK
"code": "A11",
"name": "Wild Dispatch Pricing",
"customizations": {
"version": "1.0",
"model": "DISTANCE_BASED",
"currency": {
"name": "Ghana Cedis",
"code": "GHS",
"symbol": "GH₵"
}
}
}Validate pricing rule
http
POST /v1/lsp/pricing/utils/rules/:id/validateHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
json
[
{
"description": "",
"input": {
"kg": 10,
"km": 31
// "cbm": 40,
// "pallet": 4,
// "shipment": 1,
// "sqm": 200,
// "units": 5,
// "orders": 1
},
"expectedOutput": 50
}
]Update bulk pricing rules by category
http
PATCH /v1/lsp/pricing/utils/bulk/updateHeaders
- de-user-agent (required)
- de-auth-token (required)
- de-auth-device (required)
Request Body
typescript
interface Update bulk pricing rules by categoryRequest {
category: string;
updates: {
version: string;
multiplier: number;
additionalFee: number;
tags: string
};
filters: {
tags: string[];
model: string
};
}Example:
json
{
"category": "TRANSPORTATION",
"updates": {
"version": "2.0",
"multiplier": 1.2,
"additionalFee": 20,
"tags": "fuel-raise"
},
"filters": {
"tags": [
"low-rate"
],
"model": "DISTANCE_BASED"
}
}
