Order Management APIs (July 2021)

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

https://pos-integration-service.wolt.

com/orders/<order_id>/accept(reject)(ready)

Business Use Case


Several merchants have advanced POS/Order management systems that can handle multiple delivery partners. Such
merchants can integrate with Wolt completely, thereby eliminating the use of the Wolt Ipad.

To do this, the merchant must have a POS/Order management system that can accept, reject, and update orders that
are received on Wolt. Wolt offers a range of API endpoints that make this integration possible.

Wolt - Fully Integrated Order Flow

Order API uses a “ping + pull” structure.

When we receive an order from a consumer on Wolt, a webhook call is made to a URL that should be provided by
the merchant/integrator. The webhook call will have an order notification payload. This means that the webhook
does not send the entire order details, but only the order notification with details needed to GET the entire order.

The merchant’s middleware then GETs the order details using a resource URL that will be present in the order
notification payload.

For more details about this please refer to the Order API documentation.

API Order Flow

Wolt orders go through an order workflow that can be managed using a set of APIs by the merchant. Orders can go
through the following states: received, production, ready, delivered, rejected.
When orders are received, the status will be “received”. While in this status orders can still be rejected using the
Reject endpoint, if the venue estimates that it cannot service the order.

If the venue can service the order, the order is accepted using the Accept endpoint. The order then moves into a
production state. At this point the Wolt consumer has been notified that order will be ready in x minutes. The order
can no longer be rejected. Note that the order must be accepted within 3 minutes of being received. If the order is not
accepted within 3 minutes, it is automatically rejected

If a venue cannot service the order - the order will move into a rejected state. The consumer will not be charged and
other other related activities at the venues should not proceed.

When the order is ready the venue marks it as ready using the Mark Order Ready endpoint. A Wolt courier or
consumer will get a notification that the food is ready to be picked up.

When a courier delivers the food or consumer picks it up, the order will move into the delivered state.

Scheduled Orders

Scheduled orders are first confirmed using the Pre-order Confirmation endpoint. These orders must also be
accepted by the middleware using the Accept endpoint. There is no reminder for this, so the middleware must
calculate an appropriate time before the scheduled delivery time, to automatically accept the order.

Pre-orders must be confirmed within 15 minutes of a venue being online after receiving a pre-order. Pre-orders once
confirmed cannot be rejected.

We recommend the following flow to ensure the best consumer and merchant experience.

Step 1: Wolt systems receive an order and send an order notification to the merchant’s webhook URL

Step 2: Merchant middleware GETs the order details using the resource URL from the order notification. The API
key must be used when making the call to GET order details

Step 3: Venue staff view the order on the POS/Order management system or the order is auto accepted by the
merchant middleware using the Order Accept/Reject API(s)

Step 4: Venue staff accept (or reject) the order from the POS/Order management system if not auto accepted

Step 5: Wolt systems send another notification with the updated order status. The status after the order has
been accepted will be “production”

Step 6: Merchant middleware sends order details to POS/KDS only when then order status is production
Step 7: Order is marked ready from the merchant POS/Order management system using the Mark Order Ready
API

Order Flow Status

Preorder Order Status Waiting Confirmed Production Ready Delivered

Can be rejected? Yes No No No No

Instant Order Status Received Production Ready Delivered

Can be rejected? Yes No No No

Authorization

All APIs require an API key that will be provided by Wolt. The same key is used for receiving order notifications and
getting order details.

Header Parameters

Name Type Example Description

WOLT-API-KEY API Key WOLT-API-KEY=WFPDE-HNXrjBB7EPN3 Venue specific token / API key that
PFAGUn94P0Poui6g-eS93SMv8= needs to be provided in every request

The key is mandatory and must be passed in the Authorization-header (see above). All venues under a merchant
have the same API key, but each venue must be added to the credentials. This addition of venues to the credentials is
handled by Wolt restaurant partner managers.

Key Considerations
● Merchants must have a POS/Order management system that allows venue staff to accept/reject/update
orders
● Orders must be accepted within 3 minutes of being received or are automatically rejected by Wolt
● Auto acceptance is possible, but must be confirmed with the Wolt team before implementation
● Confirming a pre-order is necessary to manage scheduled orders
○ There is no reminder to accept the pre-order x minutes before the scheduled delivery time. Merchant
middleware will need to calculate this and accept the order accordingly
Accept Endpoint

https://pos-integration-service.wolt.com/orders/<order_id>/accept

Accept Body

{}

OR

{
"adjusted_pickup_time": "2019-08-24T14:15:22Z"
}

Name Type Description

adjusted_pickup_time ISO 8601 The time when the order should be picked up in case the current
pickup time is too early for the venue to prepare the order

Important!
The maximum time addition possible is 25 minutes i.e. the adjusted
pick up time cannot be greater than 25 minutes from the initial
calculated pick up time estimate.
Reject Endpoint

https://pos-integration-service.wolt.com/orders/<order_id>/reject

Reject Body
{
"reason": "Out of stock"
}

Name Type Description

reason string The reason that must be entered by venue staff for rejecting the order

Important!
Rejection reason is mandatory and appears to the consumer. It should
be entered in local language

Mark Order Ready Endpoint

https://pos-integration-service.wolt.com/orders/<order_id>/ready

Mark Order Ready Body

No body is needed to make the call


Confirm Pre-order Endpoint

https://pos-integration-service.wolt.com/orders/<order_id>/confirm-preorder

Confirm Pre-order Body

No body is needed to make the call

Changelog

Name Date Description

Ashwin Kumar 26/07/2021 Published to team

Ashwin Kumar 26/07/2021 Document Created

You might also like