Online Ordering Order
Methods
Create Order
This endpoint is used to place/update an order and be sure that the POS is Online.
This endpoint accepts these statuses: "ANTICIPATED", "READY_FOR_CONFIRMATION"
POST /online-ordering/v2/{locationId}/orders
Request Body (required)
Content-Type: application/json
Shift4 creates an unique order identifier by locationId
and appRef
.
{
<Order>
}
Response 204
- POS is online and are ready to consume orders.
Response 504
- POS is offline and 3rd-party should do a retry action or contact a Restaurant to know the "offline" reason.
Update Order
This endpoint is used to update an order status.
This endpoint accepts these statuses: "ANTICIPATED", "READY_FOR_CONFIRMATION", "CONFIRMED", "CANCELLED", "REJECTED", "READY_FOR_PICKUP", "OUT_FOR_DELIVERY", "FULFILLED"
PUT /online-ordering/v2/{locationId}/orders
Request Body (required)
Content-Type: application/json
Shift4 identify Order by locationId
and appRef
.
{
<Order>
}
Response 204
- POS is online and are ready to consume orders.
Response 202
- POS is offline and Order request has been registered in queue. POS will receive those updates when POS become online, no need to retry.
Response 504
- POS is offline and 3rd-party should do a retry action or contact a Restaurant to know the "offline" reason.
Definitions
- Online Order
- Order Status History
- Order Delivery Info
- Order Delivery Address
- Order Contact Info
- Order Pickup Info
- Order Payment
- Order Surcharge
- Order Tax
- Order Tip
- Order Line Group
- Order Line Item
- Order Line Modifier
- Order Coupon
- Order Metadata
Online Order
The order model is the basis for all POS orders. This contains all necessary information for fulfilling and processing orders.
Name | Type | Description |
---|---|---|
appRef* | string | The 3rd-party globally unique identity of the order. This is the primary and only guaranteed unique identity. |
orderNumber* | string | A more human-readable order number to show to the customer, restaurant and drivers. This is not guaranteed to be unique forever and is thus not used as a true identifier from an API perspective. |
isTest | boolean | If true, this is a test order and should not actually be prepared. |
status* | string | The current state of the order:
|
statusHistory* | array | A status update reflects each successive change in the status of an order. |
placedAt* | string | The time that the diner placed the order. Only UTC is accepted. |
expectedAt* | string | The time that the food should be delivered or in the case of a pickup order, ready for pickup. Only UTC is accepted. |
fulfillmentType* | string |
|
deliveryInfo | object | Information on how to deliver the order to the diner. |
pickupInfo | object | Information about the pickup of the order including basic diner information. |
payments* | array | Individual payments for the order, this will also include adjustments. |
paymentTotal* | integer | Initial total for an order in US Cents. |
surcharges* | array | Individual charges in US Cents. |
surchargeTotal* | integer | Total surcharges of all line items in US Cents. |
taxes* | array | Any taxes applied to the order. |
taxTotal* | integer | Total tax paid. |
tips* | array | Tip for the order. |
tipTotal* | integer | The sum total of all the tips on the order. |
grandTotal* | integer | The total fees for the order in US Cents. |
lineGroups* | array | List of grouped items ordered by the diner. |
coupons* | array | List of Coupons applied to the order. Note this is reserved for the future and currently not supported at order placement. |
metadata* | array | List of additional information related to Order. |
universalToken | string | - |
isDeferred | boolean | Indicates whether the order is deferred or not |
deferredUntil | string | The time until which the order is deferred. Only UTC is accepted and the value is required if isDeferred is true. |
Order Status History
A status update reflects each successive change in the status of an order. And are managed by the 3rd-party.
Name | Type | Description |
---|---|---|
status* | string | The status of order during that change. Values:
|
source* | string | The source of the update:
|
createdAt* | string | The time that the status changed. Only UTC is accepted. |
reason | string | Free type of human friendly description why this change was made. |
Order Delivery Info
Information on how to deliver the order to the diner.
Name | Type | Description |
---|---|---|
address* | object | The address to deliver to. |
estimatedAt* | string | The time that the delivery is estimated by restaurant to occur. Only UTC is accepted. |
instructions | string | Special instructions for delivery. |
contactInfo* | object | Contact information for the diner. |
Order Delivery Address
The address to deliver to.
Name | Type | Description |
---|---|---|
line1* | string | First address line. |
line2 | string | Optional second address line. |
city* | string | The city. |
state* | string | The state as a two letter abbreviation. |
country | string | The country as a two letter abbreviation. |
crossStreet | string | - |
postalCode* | string | The zip code. This is a string because it may in certain cases contain a +4 zip. |
latitude | number | The geolocated addresses latitude. |
longitude | number | The geolocated addresses longitude. |
instructions | string | Any special instructions having to do with the delivery address. This might include the closests major cross streets as entered by the diner, etc. |
Order Contact Info
Contact information for the diner.
Name | Type | Description |
---|---|---|
name* | string | Name of the diner. |
phone* | string | Phone number of the diner. |
Order Pickup Info
Information about the pickup of the order including basic diner information.
Name | Type | Description |
---|---|---|
estimatedAt* | string | The time that the diner was told that their food would be available for pickup. Only UTC is accepted. |
instructions | string | Special instructions for pickup. |
contactInfo* | object | Contact information for the diner. |
Order Payment
Payments on the order.
Name | Type | Description |
---|---|---|
paymentType* | string | The payment type. Note all non-CASH payment types should be treated as pre-paid tender or house account in the POS. Values:
|
amount* | integer | The payment amount in US Cents. |
paymentSubType | string | Additional information to describe how payment was made on aggregator side:
|
Order Surcharge
Base fees paid by the diner for the line items and delivery charges.
Name | Type | Description |
---|---|---|
name* | string | Surcharge Name like: Delivery , etc. |
amount* | integer | The surcharge amount in US Cents. |
Order Tax
Taxes paid by the diner.
Name | Type | Description |
---|---|---|
name* | string | Tax Name, like: Sales, Delivery, Restaurant. |
amount* | integer | The tax amount in US Cents. |
Order Tip
Information about tip. Note that tip may not be included in bill.
Name | Type | Description |
---|---|---|
type* | string | The payment method for tip. Values:
|
amount* | integer | The tax amount in US Cents. |
Order Line Group
The grouped items ordered by the diner.
Name | Type | Description |
---|---|---|
name | string | A label for the group of line items. |
lineItems* | array | The lines items for this portion of the order. |
Order Line Item
The lines items for this portion of the order.
Name | Type | Description |
---|---|---|
name* | string | The name of the line item. |
description | string | A description of the line item. |
instructions | string | Free form text special instructions added by the diner. |
price* | integer | The unit base price in US Cents of an item without adding in the price of any modifiers. |
total* | integer | The unit total cost in US Cents of this item base price and modifiers. |
quantity* | integer | The quantity ordered of this item. |
lineModifiers | array | The options selected. |
Order Line Modifier
The options selected for the specific item.
Name | Type | Description |
---|---|---|
price* | integer | The unit price of this line modifier in US Cents without adding in the price of any sub-modifiers. |
name* | string | A name of this option |
total* | integer | The unit price of this line option including modifier sub-modifiers, currently nested modifiers are not supported so it is same as price. |
quantity* | integer | The quantity ordered of this option. |
guid* | string | The guid of Online Store Modifier. |
Order Coupon
Coupons applied to the order. Note this is reserved for the future and currently not supported at order placement.
Name | Type | Description |
---|---|---|
description* | string | Text identifying the coupon |
amount* | integer | The amount of the coupon in US Cents |
Order Metadata
Name | Type | Description |
---|---|---|
name* | string | A name of the specific Metadata item |
type* | string | ENUM of supported types:
|
value* | string | A value of the specific Metadata item |