Operation
The Orders API supports the following operations:
Create order: Creates a new order for a given store. This operation is performed by sending a POST request to /v1/orders.
Update order status: Updates the order state for a previously created order. Supported states are: PREPARED, CANCELED, FULFILLED. This operation is performed by sending a POST request to /v1/orders/{orderId}/status.
Update order delivery information: Updates delivery information for a previously created order, like destination address, courier, vehicle, current location, and customer notes. This operation is performed by sending a PUT request to /v1/orders/{orderId}/delivery.
Update order customer items: Updates customer items on an order (e.g. quantity changes, price adjustments, items added). This operation is performed by sending a PUT request to /v1/orders/{orderId}/items. The request body includes customerItemModifications and optional currencyCode (3-letter ISO 4217; used for monetary values such as price_adjusted delta and item prices; defaults to USD). The order id is in the path, and modifyingParty and modificationRequestId are set by the endpoint. This is supported only for the d2c-eater-website integration, dine-in orders, and when the order tab is open (order is modifiable). If the integration slug is not d2c-eater-website, the order is not dine-in, or the tab is not open, the API returns 409 with a clear message. If the order is not found, the API returns 404. On success the API returns 202 Accepted. Requires scope orders.update.
Each entry in customerItemModifications must set exactly one of: quantityUpdated, priceAdjusted, or itemAdded.
- itemAdded – Use when adding a new line to the order (a menu item the order does not have, or the same item with an additional modifier as a new line). Send itemAdded with a single addedItem (the customer item). Include any modifiers on that item via addedItem.modifiers (list); do not send a separate top-level modifiers map. Adding a modifier to an existing line is not supported: using itemAdded for “same item + new modifier” creates a second line (e.g. “Burger” and “Burger + extra cheese”). To keep a single line, send two modifications in the same request: (1) quantityUpdated with
quantity0 for the original line’scustomerItemIds, and (2) itemAdded with the same item plus the new modifier. - quantityUpdated – Use when changing the quantity of an existing line (including setting it to 0 to remove). Send
customerItemIds(from the order),quantity, andoldQuantity. One station item can map to multiple customer items; the backend may expand one request into multiple updates. To remove an item or a modifier line, setquantityto 0. If the modifier is not a separate line, the only option is to remove the whole line (quantity 0) and optionally add a new line without that modifier via itemAdded. - priceAdjusted – Use for an order-level subtotal adjustment (positive = up charge, negative = refund). Send
deltainpriceAdjusted. This does not change the items list; it adjusts the order subtotal.
Event - Intent to cancel order: The Public API sends a webhook event to a pre-configured URL notifying that a restaurant operator wants to cancel and order. If the cancel operation succeeds, the order status should be changed to CANCELED by using the endpoint /v1/orders/{orderId}/status.
Event - Order status update: The Public API sends a webhook event to a pre-configured URL, notifying about an order status transition. The webhook payload contains the full history of order statuses, with timestamps. Statuses that trigger this event: ORDER_ACCEPTED, ORDER_READY_TO_PICKUP, ORDER_FULFILLED, ORDER_CANCELED.,
Order Manager endpoints
Endpoints under /manager/order/v1 allow applications (e.g. POS or manager tools) to perform order lifecycle operations for a given source and order.
Mark dine-in order closed: Marks an open-tab (dine-in) order as closed. Use this when the merchant/POS has finished the transaction and the tab should be closed (e.g. payment completed at the table). The closing party is always the system (merchant/POS). Send a POST request to /manager/order/v1/sources/{source}/orders/{orderId}/close with the standard store header. No request body. Returns 202 Accepted on success. Returns 404 if the order is not found, or 409 if the order could not be closed (e.g. already closed or not an open-tab order). Requires scope manager.orders.