Create / Cancel Order

Purpose

A channel integration can use this endpoint to place a new order or process a cancellation of an existing order.

Payments

Details on processing discounts, payments, taxes or other charges in the guide below;

Create Orders for Dispatch / Last Mile Fulfillment

For platforms who don't directly handle delivery or aren't currently offering this order type, Deliverect allows for an order to be routed to an integrated 'Dispatch' service.

Standalone Dispatch Integration

Our Dispatch functionality can also be integrated as a “Standalone” solution, enabling full courier assignment and delivery, whilst bypassing requirements for POS order injection i.e. product validation. This format supports several use cases such as;

  • First-party ordering platforms which already integrates to a customer POS via an existing direct integration
  • Phone orders entered directly into a POS requiring delivery

For details on handling dispatch orders, see guide below;

Channel Cancelations

Your channel integration can process a cancellation using the same endpoint used create a new order

Sending a secondary order with the same channelOrderId and "status": 100 (Cancel) will initiate a POS cancellation request which typically involves 'voiding' the order.

Once the cancellation is processed by the POS, a status CANCELED (110) will be returned to confirm this has been handled.

Cancelling Already Accepted Orders
NB: There is no validation in Deliverect to prevent cancellation requests based on the current order status.

Order Response
All orders sent in a valid format with the correct scope applied will receive a 201. This does not indicate that the POS has successfully processed the order. You should reference the events sent to your Order Status Update webhook to confirm whether the order was successfully processed.

Path Params
string
required
Defaults to {channelName}

This is provided as a 'Scope' to grants permission to create orders within linked accounts only. This value must be provided in lowercase.

string
required
Defaults to {channelLinkId}

The unique identifier for the channel configured on a restaurant location. This value is provided in the Channel Registration request.

Body Params
string
required

The full unique ID for the order from the ordering channel. This value cannot be reused within 48 hours after pickup, across all accounts.

string
required

A more human-readable order reference to provide to the customer or restaurant.

string

The validation ID returned from the dispatch availability endpoint. This value cannot be reused and is valid for 10 minutes from generation. If an expired validationId is sent, the request fails with error 417.

integer
enum
required

The type of order being placed. See the Order Types guide for full details.

1 = Pickup
2 = Delivery
3 = Eat-in
4 = Curbside

Allowed:
boolean
required

Indicates whether the delivery or pickup is ASAP. If pickupTime is within 30 minutes, this should be true.

string

Timestamp in UTC (yyyy-MM-ddTHH:mm:ssZ). All time values in this API are in UTC, as per ISO 8601. Required for delivery, pickup, and any non-ASAP order.

string

Timestamp in UTC (yyyy-MM-ddTHH:mm:ssZ). All time values in this API are in UTC, as per ISO 8601. Required for non-ASAP delivery orders.

string

The time the order was placed. Timestamp in UTC (yyyy-MM-ddTHH:mm:ssZ), as per ISO 8601.

string

Legacy parameter. Timestamp in UTC (yyyy-MM-ddTHH:mm:ssZ), as per ISO 8601. If your channel doesn't use a separate estimate for the pickup time, reuse the pickupTime value here.

string
required

Specifies who is delivering the order. There are two possible values: the channel's own name, sent when the channel itself handles delivery for the restaurant, or restaurant, sent when the restaurant is arranging its own delivery — this is also required where orders are fulfilled by an integrated Dispatch partner. See the Dispatch / last-mile fulfillment guide for more information.

boolean

Indicates whether the driver should verify the customer's age.

deliveryAddress
object

The delivery address. Required if delivery is fulfilled by the restaurant or by a dispatch provider via Deliverect.

deliveryInfo
object

Delivery information.

integer
required

The number of decimal digits used for all monetary values in the order (typically 2).

payment
object
required

Payment details for the order. See the Payments guide for full details.

taxes
array of objects

A consumption tax imposed by the relevant government on the sale of goods and services.

taxes
integer

In regions where the channel is responsible for charging tax, e.g. where it is a 'Marketplace Facilitator', this is the total tax remitted. This value should be sent outside the taxes array.

items
array of objects
required

The list of products included in the order.

items*
boolean

Indicates whether cutlery/utensils have been requested.

string

For 'Eat-in' orders, a table number can be provided.

boolean
required

Confirms whether the order has already been fully paid. Set to false where a customer can check out without processing payment (e.g. pickup orders paid by cash on collection); otherwise set to true. Always pass the payment.amount, whether or not the order is already paid.

string

Order-level note.

integer

The number of customers for the order.

customer
object

Details about the customer placing the order.

integer

The cost of delivery applied, sent as an integer with 2 decimal digits (e.g. €1.00 is sent as 100).

integer

The tax applied to the delivery cost, sent as an integer with 2 decimal digits (e.g. €1.00 is sent as 100).

integer

The cost of any service charges applied, sent as an integer with 2 decimal digits (e.g. €1.00 is sent as 100).

integer

The tax applied to the service charge.

integer

A tip intended for the restaurant. Not all POS partners handle this; a toggle setting is available to exclude it if unsupported.

integer

A tip intended for the driver. Not all POS partners handle this; a toggle setting is available to exclude it if unsupported.

integer

A charge (mandatory in certain regions) against the packaging used, sent as an integer with 2 decimal digits (e.g. $1.20 is sent as 120). Appears as a line item on the integrated POS when included.

integer

The total discount, sent as a negative value. Required when applying a discount to the order — see the discounts guide for more detail.

discounts
array of objects

Optional, more detailed information about a discount, provided alongside discountTotal. See the discounts guide for full details.

discounts
Responses

Language
Credentials
OAuth2
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json