Create Standalone Dispatch Order

Purpose

Standalone Dispatch is an ordering format to route orders into one of Deliverect’s integrated dispatch partners for delivery, without any POS order injection. It allows ordering platforms who don’t handle delivery themselves, or don’t yet offer it, to pre-validate courier availability before checkout and once an order is completed, a courier is assigned automatically and delivery status updates become available.

Typical use cases are;

  • 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

Dispatch Integration Required
A dispatch provider must be integrated at the customer location for this endpoint to return courier availability. See our full list of dispatch partners here.

Dispatch Flow

1

Pre-validate Dispatch Availability — Dispatch Availability

To enhance the ordering flow and customer experience, check that an integrated Dispatch service is available before processing an order.

2

Create Order for Dispatch

Complete the order with a valid delivery address, courier set to "restaurant", and optionally the validationId returned from the availability check. Once the order is received, the job is assigned to the integrated dispatch service, which allocates a courier for delivery.

Product PLUs
Although strict validation on product PLUs is relaxed, it is worthwhile setting the items included in the order

Specifying any other string than "restaurant" will not initiate dispatch

3

Receive Courier Updates — Courier Update Webhook

Once an order is submitted, a webhook can be delivered when various courier-related events occur. These cover the following scenarios;

The status change for the order

Co-ordinates updated

The deliveryTimeETA changes by greater than 60 seconds

Courier name changes

Cancelling Dispatch Jobs

A cancellation of the dispatch job created can be processed by sending a secondary order with the same channelOrderId and "status": 100 (Cancel) will initiate a dispatch cancellation request.


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. Only delivery orders are supported for dispatch.

2 = Delivery

Allowed:
boolean
required

Indicates whether the delivery 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 orders.

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
enum
required

Specifies who is delivering the order. Must be restaurant for the order to be fulfilled by an integrated Dispatch partner; any other value will not initiate dispatch. See the Dispatch / last-mile fulfillment guide for more information.

Allowed:
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
items
array of objects
required

The list of products included in the order.

items*
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. cash on delivery); otherwise set to true. Always pass the payment.amount, whether or not the order is already paid.

string

Order-level note.

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

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.

integer
enum

Used only to cancel an order. Send 100 (Cancel) with the same channelOrderId as the original order to initiate a dispatch cancellation request. Omit when creating an order.

Allowed:
string

The reason for cancelling the order. Sent alongside status 100 when cancelling.

Responses

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