Get Shipping Rates (optional)
POST /api/external/v1/order/rates
Returns live rates from every carrier onboarded on the account for the given PO/weight/carton combination, so you can pick the best carrier before booking.
Request body (RateCalculatorRequest)
| Field | Type | Required | Description |
|---|---|---|---|
weight | number | Yes | Total dead weight (kg) |
volumetric_weight | number | Yes | Total volumetric weight (kg) |
invoice_value | number | Yes | Total invoice value |
cartons | array of Carton objects | Yes | See Carton object |
order_type | string | Yes | COD or PREPAID |
order_mode | string | Yes | e.g. SURFACE |
load_type | string | No | e.g. PTL, FTL |
purchase_order_id | UUID[] | Yes | PO ID(s) the shipment is against |
warehouse_id | UUID | No | Required only if the PO has no warehouse assigned yet |
Response 200 OK
{
"success": true,
"status_code": 200,
"message": "Successfully fetched forward rates",
"data": {
"rates": [
{
"carrier": "delhivery",
"carrier_id": "b6b2a3e1-0c61-4fd2-9a07-3bf2035888f1",
"carrier_name": "Delhivery",
"carrier_nickname": "Mumbai",
"sub_carrier_id": "",
"sub_carrier_name": "",
"is_serviceable": true,
"edd": "2026-08-15T00:00:00Z",
"zone": "B",
"freight_charge": 850.0,
"cod_charge": 0,
"total_charge": 1003.0,
"price_breakdown": { "base_price": 850, "fuel_surcharge": 51, "gst": 102, "total": 1003 },
"mode": "SURFACE",
"is_local": false,
"load_type": "PTL"
}
]
}
}
If no carrier can service the request, the server returns 400 with
"message": "No serviceable carriers found".