Delivery & Zones API

County-based delivery zone lookup and fee estimation before checkout.

Base: /api/v1/delivery  |  X-Tenant-ID required
GET /api/v1/delivery/zones Public

List all active delivery zones with county coverage.

Response

{ "success": true, "data": { "zones": [ { "id","name","counties":["nairobi","kiambu"],"base_fee":200,"per_km_rate":0,"min_delivery_days":1,"max_delivery_days":3 } ] } }
POST /api/v1/delivery/estimate Public

Estimate delivery fee for a county. Returns zone info, estimated fee, and delivery window.

Request Body

{
  "county": "mombasa",               // required — lowercase Kenya county name
  "coordinates": { "lat": -4.04, "lng": 39.67 } // optional — used if zone has per_km_rate > 0
}

Response

{
  "success": true,
  "data": {
    "zone": { "id","name","base_fee": 500,"per_km_rate": 0,"min_days": 2,"max_days": 4 },
    "estimated_fee": 500,
    "distance_km": null,
    "note": "Delivery to Coast region.",
    "fee_may_change": false
  }
}

Possible Errors

CodeHTTPWhen
NOT_FOUND404County not covered by any zone

Admin — Delivery Zones /api/v1/admin/delivery/zones

POST /api/v1/admin/delivery/zones 🔒 Auth Requireddelivery:write

Create a delivery zone.

Request Body

{
  "name": "Nairobi Zone",               // required
  "counties": ["nairobi","kiambu"],      // required — array of county slugs
  "base_fee": 200,                       // required
  "per_km_rate": 0,                      // optional — 0 = flat rate
  "min_delivery_days": 1,               // optional
  "max_delivery_days": 2,               // optional
  "notes": "Same-day available"         // optional
}

Response

{ "success": true, "data": { "zone": { ... } } }