Deliveries across Nigeria, along inter-state routes
Reeds now delivers across Nigeria. Until today the Shipping API served deliveries within Lagos only.
Updated on 2026-11-10
Inter-state deliveries no longer carry VAT or a service charge: the total is the route's price. See Inter-state prices without VAT.
Inter-state routes
- A route is priced as one figure. Between two states, a delivery runs along an inter-state route that Reeds has set up, through a hub at each end: Reeds' own, or a partner's in the destination state. The price is one price per route, not by distance or weight. A rate card doesn't apply to it. VAT and rounding work as within a state.
route.typeisinterstate, androute.distance_kmisnull.route.typewasdirectorvia_hub.route.distance_kmwas always a number. Within a state, both are as before.serviceisinterstate. It was alwaysstandard.- The schedule is in working days. The pickup day follows the same cut-offs.
schedule.earliest_deliveryandschedule.deliver_byare then the route's earliest and latest working days after the pickup day: 3 to 5 by default. Saturday is a working day. Sundays and public holidays aren't. See Delivery promise. - The status flow has two hub stops:
scheduled,rider_assigned,picked_up,at_hub,in_transit,at_hub,out_for_delivery,delivered.in_transitwas never returned before. See Delivery statuses.
GET /coverage lists states and routes
stateslists every state Reeds serves, withpickupanddeliveryfor each.zoneslists the areas Reeds' own riders work in, and is[]for a state served through a partner hub.interstatelists the routes Reeds runs, each withavailable: trueand itspromise, for example3-5 working days. Routes are one way, so Lagos to the FCT and the FCT to Lagos are two routes.- A route that isn't listed has no price. Reeds adds states and routes over time: read
GET /coveragerather than keeping your own list.
See Coverage.
The two refusal reasons have new meanings
A quote Reeds can't serve is still a 200 with available: false and a reason.
ADDRESS_NOT_SERVICEABLEnow means Reeds doesn't pick up in the pickup's state, or doesn't deliver to the drop-off's state,. The messages areReeds doesn't pick up in Oyo.,Reeds doesn't deliver to Oyo.andReeds doesn't deliver within Rivers.INTERSTATE_NOT_AVAILABLEnow means both states are served, but Reeds has no price for that pair:Reeds doesn't deliver from Lagos to Kano.It used to mean any inter-state trip, and its message wasReeds can't deliver between states. It delivers within Lagos only.- A message names the capital
Abuja, andGET /coveragenames the stateFCT. Decide onreason.code, not on the message text.
What you need to change
Nothing, if your integration already tolerates values it doesn't know: service, route.type, route.distance_km (now nullable), status, and the contents of reason.message. If you show a distance, don't render it when route.distance_km is null. If you show the delivery time, show the dates from schedule, as before. A within-state delivery changes in no way.