Skip to main content

Workspace Pricing Configuration

Retrieve the active pricing configuration for your workspace. This includes base rates, tiered rates for distance and weight, city-specific overrides, and insurance surcharges.


Endpoint

GET/v1/workspace/pricing

Required permission: workspace:price


Response

Pricing Object

FieldTypeDescription
intraCityObjectPricing rules for deliveries within the same city.
weightObjectTiered pricing rules based on package weight.
valueSurchargeObjectInsurance surcharge rules based on the declared value of shipments.

Intra-City Pricing (intraCity)

FieldTypeDescription
baseIntegerFlat base rate in ₦ for intra-city shipments.
distanceTiersArrayArray of distance tiers defining rates per kilometer.

Each element in distanceTiers contains:

  • maxKm (Integer): Maximum distance in kilometers for this tier.
  • ratePerKm (Integer): The rate charged per kilometer in ₦.

Weight Pricing (weight)

FieldTypeDescription
baseIntegerFlat base rate in ₦ for weight-based tiers.
weightTiersArrayArray of weight categories defining rates and limits.

Each element in weightTiers contains:

  • id (String): Unique identifier for the tier.
  • name (String): Display name of the weight tier.
  • description (String): Description of what packages fit into this tier.
  • maxKg (Integer): Maximum package weight in kilograms for this tier.
  • rate (Integer): Surcharge rate in ₦ applied to shipments in this tier.

Value Surcharge (valueSurcharge)

FieldTypeDescription
baseIntegerFlat base rate in ₦ for value-based insurance.
valueTiersObjectConfiguration of percentage fees when insurance is enabled.

The valueTiers object contains:

  • enabled (Boolean): Whether value surcharge / insurance is active.
  • percentageFee (Float): The percentage of declared item value charged as insurance fee (e.g., 1.5 represents 1.5%).

Weight Category Integration Flow

When creating shipments via the API, you need to provide a packageCategory (e.g. SMALL, MEDIUM). Instead of hardcoding these tiers, you should dynamically retrieve them from this pricing endpoint:

  1. Fetch Active Categories: Call GET /v1/workspace/pricing to retrieve the current list of weightTiers.
  2. User Selection: Render the available options (using the tier name and description) for your users to select.
  3. Submit Shipment: Pass the selected tier's id as the packageCategory parameter in the POST /v1/shipments payload.
tip

Hiding Active Pricing from End Users: If you do not want your customers to see the underlying pricing rates (e.g., base fares, km rates, or surcharges), you should call GET /v1/workspace/pricing on your secure backend server, extract only the category fields (id, name, description, maxKg), and send only this filtered list to your frontend.


{
"statusCode": 200,
"message": "Success",
"data": {
"intraCity": {
"base": 1000,
"distanceTiers": [
{
"maxKm": 99999999,
"ratePerKm": 200
}
],
},
"weight": {
"base": 0,
"weightTiers": [
{
"id": "SMALL",
"name": "Small",
"description": "Fits in a shoebox (e.g., Documents, Keys, Phones) - Up to 3kg",
"maxKg": 3,
"rate": 500
},
{
"id": "MEDIUM",
"name": "Medium",
"description": "Fits in a backpack (e.g., Clothes, Laptops) - Up to 10kg",
"maxKg": 10,
"rate": 800
},
{
"id": "LARGE",
"name": "Large",
"description": "Requires two hands to carry (e.g., Microwaves, multiple boxes) - Up to 25kg",
"maxKg": 25,
"rate": 3000
},
{
"id": "EXTRA_LARGE",
"name": "Extra Large",
"description": "Requires a Van/Truck (e.g., Furniture, Wholesale) - 25kg+",
"maxKg": 999999,
"rate": 5000
}
]
},
"valueSurcharge": {
"base": 0,
"valueTiers": {
"enabled": false,
"percentageFee": 1.5
}
}
}
}