Contents
Overview
When guests have any difficulty paying at a kiosk device, they can transfer their order to a counter and continue there (typically to pay with cash). The process is described in detail here.
This document explains how Loyalty API endpoints must be used to support the pay at counter process.
Transaction Update
When a guest chooses the pay at counter option, kiosk devices must send a Loyalty API v1 - Update request with a status of PENDING
. This will let the Loyalty API know that the transaction is not yet complete and the POS will call the Loyalty API to claim it at a later stage. The payments
field will be empty in this case as the customer has yet to complete their order.
This process assumes that the CLAIMED
call made by the POS later will provide the same PLU for the productId
field that the Kiosk provides.
Example request
{ "channel": "Restaurant", "created": "2021-05-04T13:39:47Z", "loyaltyId": "$loyaltyUserId", "serviceMode": "$serviceMode", "status": "PENDING", "transactionDetails": { "currency": "USD", "order": [ { "name": "med whopper combo", "price": 5.00, "productId": "$plu", "productType": "combo", "quantity": 1, "referenceId": "1", // line id "tax": 0 }, { "name": "whopper", "parentReferenceId"?: "1", // line id of parent (for children elements) "price": 0, "productId": "$plu", "productType": "item", "quantity": 1, "referenceId": "2", // line id "tax": 0 }, { "name": "med fries", "parentReferenceId"?: "1", // line id of parent (for children elements) "price": 0, "productId": "$plu", "productType": "item", "quantity": 1, "referenceId": "3", // line id "tax": 0 }, { "incentiveId": "$sanityRewardId", "name": "free drink reward", "price": 0, "productId": "$rewardPlu", "productType": "reward", "quantity": 1, "referenceId": "4", // line id "tax": 0 }, { "incentiveId": "$sanityOfferId", "name": "$2.99 chicken sandwich meal", "price": 2.99, "productId": "$offerPlu", "productType": "offer", "quantity": 1, "referenceId": "5", // line id "tax": 0.50 } ], "payments": [], "posVendor": { "operator": "$operatorId", "posType": "$posVendorName", "storeId": "$rbiStoreId", "supportingPos": "POS vendor name (optional field)", // vendor to return plu for "terminal": "$terminalNumber", "transactionId": "$posTransactionId" } }, "transactionId": "$loyaltyTransactionId" }
Example response
{ "loyaltyId": "$loyaltyUserId", "points": 14464, "pointsEarned": 50, "pointsRedeemed": 750, "transactionId": "$loyaltyTransactionId" }