We provide webhook callbacks for the order's lifecycle as well as rider's status so that partners can provide customers with realtime information about the arrival of their order.

Generally, a healthy order lifecycle has the following status changes: placed => accepted => rider_assigned => rider_arrived => rider_in_transit => rider_nearby => delivered.

Keep in mind that while every attempt is made to make callbacks in the order they occurred and in a timely manner, neither can be absolutely guaranteed. It is also possible to receive the same callback more than once.

The following status changes are sent to the status_url:

StatusDescription
placedThe order was created.
acceptedThe restaurant confirmed the order.
rider_assignedA rider is assigned to the order.
rider_arrivedThe rider arrived at the restaurant.
rider_in_transitThe rider picked up the order and is en route to the delivery address.
rider_nearbyRider is arriving at customer.
deliveredA terminal status for a successfully delivered order.

The following status changes are sent to the refund_url only:

Order StatusDescription
canceledA terminal status for when an order is canceled.
rejectedA terminal status for when an order is rejected.
undeliverableA terminal status for when the rider is unable to deliver an order.

If an order reaches a terminal status, the customer should be refunded the full amount.

Customers can request compensation by calling Deliveroo if the order did not meet their expectations and they will be provided with compensation if the claims are valid.

A customer may be entitled to a partial or full refund, if Deliveroo support approves a compensation claim, you will be notified through the refund_url for this action and we will provide you with the approved refund_amount and reason so that you can process the customer's compensation.

Customers may be provided with an option to accept credit instead of a refund. If that is the case, we will notify you for this action via the credit_url and we will provide you with the approved credit_amount and reason so that you can process a customer's compensation of your choice, for example a voucher.

An alternative option to credit or refund that customers may choose, is the option to receive a redelivery which may include all or specific items from the original order. If that is the case, we will generate a new order internally and notify you via the redelivery_url where we would expect your response on whether you wish to accept or reject this order. Following your response, the order status will update accordingly and you will receive further updates like you would receive them on a normal order via the status_url.

When a redelivery webhook is received you should respond with the appropriate json body confirming if you want to accept or reject the request, this is marked by the decision field in the json response, and also a reason message if it is rejected.

Redelivery DecisionDescription
acceptedThe restaurant has accepted the redelivery request and will prepare a new order.
rejectedThe restaurant has rejected the redelivery request. In this case please also provide a reason field to indicate why it was rejected, e.g. items out of stock, or restaurant closed.