Axion Biz Solutions

Logistics

Delivery is deliberately manual — every shipment is carried by an in-house rider, a manually-tracked third-party courier, or picked up by the customer. There's no live carrier webhook to poll; status updates come from staff via shipment.events. Staff authentication required.

Shipments

carrier is "in_house", "third_party" (with a free-text courier_name, e.g. "DHL", "G4S", "Sendy"), or "pickup".

GET /api/v1/shipments/15/ — response data
{
  "id": 15,
  "order": 42,
  "sale": null,
  "carrier": "third_party",
  "courier_name": "Sendy",
  "tracking_number": "SND-8891",
  "route": null,
  "agent": null,
  "zone": 2,
  "zone_name": "Rest of Kenya",
  "recipient_name": "Jane Doe",
  "recipient_phone": "+254700000000",
  "address_line": "123 Example Rd",
  "city": "Kisumu",
  "region": "Nyanza",
  "weight_kg": "0.500",
  "is_same_day": false,
  "status": "in_transit",
  "estimated_delivery": "2026-07-25",
  "shipped_at": "2026-07-22T08:00:00Z",
  "delivered_at": null,
  "cost": "300.00",
  "events": [
    { "id": 1, "status": "picked_up", "note": "", "location": "Nairobi hub", "timestamp": "2026-07-22T08:00:00Z" }
  ],
  "payments": []
}

Zones, routes & agents

/api/v1/delivery-zones/Region-based pricing — base_fee/per_kg_fee per named zone (e.g. "Nairobi (Local)", "Coast").
/api/v1/delivery-agents/In-house riders/boda operators.
/api/v1/delivery-routes/An agent's assigned route for a given date.