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 |