Delivery promise
Every quote and delivery carries a schedule. Within a state the promise is a two-day range: earliest_delivery is its first day and deliver_by is its last. pickup_by is when Reeds will have collected the parcel. All of them fall inside Reeds' working hours (Lagos time).
"schedule": {
"pickup_by": "2026-10-26T19:00:00+01:00",
"deliver_by": "2026-10-27T19:00:00+01:00",
"earliest_delivery": "2026-10-26T19:00:00+01:00"
}
Show your customer the range: here, Monday 26 or Tuesday 27 October.
The rules
- The clock starts when a delivery is booked and ready, not when it was quoted or a draft was created. A quote's
scheduleis the promise if you book it now: booked later, after a cut-off, the delivery gets later dates. - Within a state, the time you book decides the range:
| Booked and ready | Picked up | Delivered |
|---|---|---|
| Monday to Friday, before 13:45 | That day | That day or the next working day |
| Monday to Friday, 13:45 or later | Next working day | That day or the working day after |
| Saturday, before 11:45 | That day | That day or the next working day |
| Saturday, 11:45 or later | Next working day | That day or the working day after |
| Sunday or a public holiday, any time | Next working day | That day or the working day after |
- Close of business is 19:00, when riders finish.
pickup_by,earliest_deliveryanddeliver_byare all written at that time. Forearliest_delivery, use only the date: the parcel can arrive at any time that day. - Working days are Monday to Saturday. Sundays and public holidays don't count, so a range that starts on Saturday ends on Monday.
- A future
pickup_datecounts as booked at the start of that date: Reeds picks up that day, or on the next working day if the date is a Sunday or public holiday.
Worked examples
These assume no public holiday unless stated, and a within-state delivery booked and ready at the time shown.
| Booked and ready | Picked up by | Delivered |
|---|---|---|
| Monday 10:00 | Monday 19:00 | Monday or Tuesday |
| Monday 13:44 | Monday 19:00 | Monday or Tuesday |
| Monday 13:45 | Tuesday 19:00 | Tuesday or Wednesday |
| Friday 10:00 | Friday 19:00 | Friday or Saturday |
| Friday 15:00 | Saturday 19:00 | Saturday or Monday |
| Saturday 11:44 | Saturday 19:00 | Saturday or Monday |
| Saturday 11:45 | Monday 19:00 | Monday or Tuesday |
| Sunday, any time | Monday 19:00 | Monday or Tuesday |
| Saturday 13:00, with a public holiday on Monday | Tuesday 19:00 | Tuesday or Wednesday |
| Tuesday 10:00, with a public holiday on Wednesday | Tuesday 19:00 | Tuesday or Thursday (Wednesday is skipped) |
When the promise moves
If Reeds expects to miss the promise, deliver_by moves and a delivery.schedule_changed webhook fires with a reason. The new deliver_by is the whole promise from then on, so earliest_delivery becomes null, and previous_schedule keeps the range you had. Read data.delivery.schedule from the event, and update the date you show your customer.
Whenever earliest_delivery is null, show deliver_by alone.
Public holidays, including holidays announced at short notice, are taken into account when the schedule is worked out.
Inter-state deliveries
Inter-state delivery (Lagos to the FCT) isn't available through the API. It takes 3 to 5 working days when booked with Reeds directly. A quote on that route returns available: false with INTERSTATE_NOT_AVAILABLE.