Skip to main content

Table QR Ordering

When a customer scans a table QR code, OpenApp resolves the QR code to a restaurant location and POS table identifier. OpenApp then creates or joins a table session where customers can add selected products.

OpenApp asks the POS for the current table or open-check state when the session starts, when state must be refreshed, and before payment-sensitive actions. The POS returns either the current table state or a rejection reason.

Message types:

Message typeDirectionPurpose
TableOrderSnapshotRequestedOpenApp -> POSRequest the current POS table or open-check state.
TableOrderSnapshotResolutionResultPOS -> OpenAppReturn resolved table state or rejection details.
OrderItemsSubmittedToPosOpenApp -> POSSubmit selected table-session products to the POS order.
OrderMutationResultPOS -> OpenAppConfirm accepted products or reject products with business reasons.

Typical rejection reasons include out of stock, insufficient stock, delisted item, closed order, and price changed. See Mutation rejection reasons.

POS Order Changes

The POS should notify OpenApp about relevant POS-side changes to a table order. This includes waiter-added items, kitchen cancellations, delivered items, discounts, removed lines, and order closure.

OpenApp updates the customer-facing session and derives customer notifications internally. The POS does not need to target OpenApp users directly.

Message typeDirectionPurpose
TableOrderSnapshotChangedPOS -> OpenAppNotify OpenApp about POS-side order state changes.

See Change types for the set of POS-side change reasons.