Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Contents

...

Contents

Table of Contents
minLevel1
maxLevel4
outlinefalse
stylenone
typelist
printabletrue

...

Info

For all the cases below, for further debugging you can use the Get Store Menu Diff endpoint to identify the the changes in to the store’s menu after each request.

...

Action

Tests

Vendor Action

Expected Result

Make an item available for a certain store

User selects ordering for the corresponding store and navigates to the menu section of the item.

Make a request with price and availability : true for the respective PLU using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Item appears in App Menu section with correct price.

Make an item unavailable for a certain store

User selects ordering for the corresponding store and navigates to the menu section of the item.

Make a request with price and availability : false for the respective PLU using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Item disappears from App Menu section.

Make a combo available for a certain store

User selects ordering for the corresponding store and navigates to the menu section of the combo.

Make a request with price and availability : true for the respective PLU(s) using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Combo appears in App Menu section with correct price.

Note

Combos availability is not only affected by the Combo PLU, as other menu structures are required. Read about it here.

Combo’s availability depends on it’s its children’s availability as well.

Make a combo unavailable for a certain store

User selects ordering for the corresponding store and navigates to the menu section of the combo.

Make a request with price and availability : false for the respective PLU(s) using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Combo disappears from App Menu section.

Make a modifier multiplier available for a certain store

User selects ordering for the corresponding store and navigates to the item containing the modifier multiplier.

Make a request with price and availability : true for the respective PLU using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Modifier Multiplier appears in App Menu section with correct price.

Make a modifier multiplier unavailable for a certain store

User selects ordering for the corresponding store and navigates to the item containing the modifier multiplier.

Make a request with price and availability : false for the respective PLU using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Modifier Multiplier disappears from App Menu section.

Make a Systemwide Offer available for a certain store

User selects ordering for the corresponding store and navigates to the offers page.

Make a request with price and availability : true for the respective PLU(s) to Partner’s API using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Offer appears in App Offers page and is available for Mobile redemption with correct price.

Note

Offers availability is not only affected by the offer PLU, as other menu structures are required. Read about it here.

Offer’s availability depends on their benefit’s item availability.

Make a Systemwide Offer unavailable for a certain store

User selects ordering for the corresponding store and navigates to the offers page.

Make a request with price and availability : false for the respective PLU(s) to Partner’s API using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Offer button for Mobile redemption is grayed out.

Make a premium item (within a comboslot) available as part of a combo

image-20240318-184606.png
Info

Only applicable if the POS supports premium comboslots, that is, combo sides which increase the total combo price

User selects ordering for the corresponding store and navigates to the combo containing the premium item.

  • Internal configurations should be applied to serve Composite PLU for the given POS Vendor / market.

Make a request with price and availability : true for the respective PLU(s) to Partner’s API using the Update Store Menu PLUs endpoint.

  • The PLU for the premium comboslot option should follow the pattern comboPlu-itemPlu. E.g. for the whopper meal medium (PLU=123) to have onion rings (PLU=456) as a premium comboslot option, the price would have to be posted using the plu 123-456.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Item appears inside the Combo with the desired premium price.

Make a premium item (within a comboslot) unavailable as part of a combo

image-20240318-184606.png
Info

Only applicable if the POS supports premium comboslots, that is, combo sides which increase the total combo price

User selects ordering for the corresponding store and navigates to the combo containing the premium item.

  • Internal configurations should be applied to serve Composite PLU for the given POS Vendor / market.

Make a request with price and availability : false for the respective PLU(s) to Partner’s API using the Update Store Menu PLUs endpoint.

  • The PLU for the premium comboslot option should follow the pattern comboPlu-itemPlu. E.g. for the whopper meal medium (PLU=123) to have onion rings (PLU=456) as a premium comboslot option, the price would have to be posted using the plu 123-456.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Item disappears from the Combo.

Make a Reward available for a certain store

Authenticated user selects ordering for the corresponding store and navigates to the rewards page.

User must have enough points to redeem applicable reward.

Make a request with price and availability : true for the respective PLU(s) to Partner’s API using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Reward appears in App Rewards page and is available for Mobile redemption with correct price.

Note

Rewards availability is not only affected by the reward PLU, as other menu structures are required. Read about it here.

Reward’s availability depends on their benefit’s item availability.

Make a Reward unavailable for a certain store

Authenticated user selects ordering for the corresponding store and navigates to the rewards page.

User must have enough points to redeem applicable reward.

Make a request with price and availability : false for the respective PLU(s) to Partner’s API using the Update Store Menu PLUs endpoint.

→ Partners API GET Store Menu PLUs endpoint returns the PLUs with the corresponding price and availability.

→ Reward button for Mobile redemption is grayed out.

...

You can learn about the checkout actions in the Partner API here: Order API - Checkout

ActionTests

How to test

Vendor Action

Expected Result

Pricing Order

Info

Orders are priced at the checkout to confirm how much a user will be charged. Regardless of the pricing and availability information cached at the application level, the POS is queried one last time to provide the final answer for Pricing and Availability of the different cart products.

Authenticated user selects ordering for the corresponding store, adds items to cart and navigates to the checkout.

All available Cart Structures must be tested:

  • Item

  • Item with modifiers

  • Combo

  • Combo with items with modifiers

  • Systemwide Offer Item

  • Systemwide Offer Combo

  • Systemwide Offer Combo with modifiers

  • Reward Item

  • Reward Combo

  • Reward Combo with modifiers

  • Promo Codes - Amount Discount

  • Promo Codes - Percentage Discount

Partner is subscribed to the Price Order webhook. The payload of the webhook includes the order contents for the selected store id and service mode.

Partner must return the price and availability for each item in the order, the total price and any errors using the Price Webhook Callback endpoint.

Error Handling to follow the message and code standards:

  • Message: include a clear error message, mentioning the PLUs responsible for the failure and the designated store. Do not include unhelpful information like Error occurred while processing request

  • Code Enum: "MENU" "STORE" "TIMEOUT" "UNKNOWN"

→ /cart page loads total price of the user cart, corresponding to the sum of all products within.

→ Loading time does not exceed 3 seconds for p99.

→ Tax, Subtotal, and Total are visible at checkout (as applicable according to local regulation).

→ [OPTIONAL] Fees, such as “Bag Fee”, are visible in the /cart page, separately from total cart amount.

Commit Order

Info

After a successful pricing and payment, the order needs to be acknowledge by and registered in the POS.

Authenticated user selects ordering for the corresponding store, builds a cart, navigates to the checkout and places (pays for) an order.

All available Cart Structures must be tested in this category:

  • Item

  • Item w/ modifiers

  • Combo

  • Combo with items w/ modifiers

  • Systemwide Offer Item

  • Systemwide Offer Combo

  • Systemwide Offer Combo w/ modifiers

  • Promo Codes - Amount Discount

  • Promo Codes - Percentage Discount

  • Reward Item

  • Reward Combo

  • Reward Combo with modifier

Partner is subscribed to the Commit Order webhook. The payload of the webhook includes the order id, total order price and customer details.

The POS must respond to the webhook request by using the Commit Webhook callback endpoint.

Error Handling to follow the message and code standards:

  • Message: include a clear error message, mentioning the PLUs responsible for the failure and the designated store. Do not include unhelpful information like Error occurred while processing request

  • Code Enum: "MENU" "STORE" "TIMEOUT" "UNKNOWN"

→ Order is injected in the POS.

Note

Committing and order does not mean that the order should be prepared immediately.

In the Commit Order webhook payload we include the fireOrderInSeconds field which indicates when the order should be sent (or 'fired') to the kitchen for preparation. In some case the fire webhook will be needed to determine when the order should be fired.

This will vary by service mode and payment method – see tables below.

Cancel Order

→ Check whether the status has been changed to cancel

→ Check whether the automatic refund has been processed (if applicable)

→ Check whether the cancellation email was triggered

→ Check whether delivery has been cancelled (if applicable)

→ When the order is canceled in the POS the payment should be refunded– Initiated by guests or delivery fulfillment providers

Info

Orders might get canceled either by guests or delivery providers.

  • Initiated by guest: for pick up order, guest selects the Cancel Order option.

image-20240920-083841.pngImage Added
  • Initiated by delivery provider: order is canceled by the delivery provider in their Driver Management Portal.

Partner is subscribed to the Order Event webhook. Upon cancelation, the webhook will return an event with status CANCELED.

The POS must acknowledge the cancelation and mark the order as canceled in the POS.

→ Order status is changed to cancel. You can check it using the GET Order endpoint.

→ An automatic refund is processed (if applicable).

→ A cancellation email is triggered.

Cancel Order – Initiated by POS

Info

Exceptionally, the POS vendor may cancel an order.

Restaurant team member cancels order in the POS.

Partner send status CANCELED using the Order Event endpoint.

→ Order status is changed to cancel. You can check it using the GET Order endpoint or in the Order Event webhook.

→ An automatic refund is processed (if applicable).

→ A cancellation email is triggered.

Order firing for in-Restaurant Service Modes

...

Action

Tests

Vendor Action

Expected Result

Place a Delivery order

Authenticated user inputs address within delivery area on restaurant search in App, builds a cart and navigates to checkout.

Authenticated user clicks on “Continue” on the checkout page, and confirms selecting any payment method by clicking “Place Secure Order”.

Partner collects the service mode (serviceMode) from the GET Order endpoint (DELIVERY) and injects in the POS.

  • fireOrderInSeconds: null indicates the order should not be fired to the kitchen, and instead be injected to the POS in suspended mode.

Partner collects the order number (number) from the GET Order endpoint and injects in the POS.

→ Order is injected in the POS.

→ Order does not appear in the KDS (not fired into the kitchen).

Fire a Delivery order into the kitchen

Delivery vendor request to move the order to kitchen

  • Based on driver’s geolocation OR driver’s ETA to the restaurant.

Partner is subscribed to the ORDER_FIRE webhook, which triggers a request to fire an order into the kitchen.

Partner fires the order through a POST call to the Fire Order endpoint.

  • Firing is expected to happen when the driver is at a distance / time from the restaurant equal or lower to the preparation time (prep time). The POS vendor is not required to compute any logic, as RBI is responsible for informing the POS vendor when to fire orders.

→ Order appears in the KDS (is fired into the kitchen).

→ KDS identifies the service mode.

→ DSS ticket printed according to the service mode.

→ Receipt printed with Order Number from RBI.

  • RBI’s order number is expected to substitute the POS order number.

  • RBI’s order number is configurable, allowing numerical interval restriction and / or utilization of an alphanumerical prefix.

Note

Drivers rely exclusively on this number to identify the order they are supposed to pick up at the restaurant.

Cancel a Delivery order

Delivery cancelation

→ Delivery Order successfully sent and placed in Partner’s POS.

→ If a delivery cancellation is requested:

  • The order should be canceled in the POS.

Info

Payment Methods do not interfere with order firing for Delivery orders.

...