Kiosk Ordering
Kiosk ordering uses the same station QR model and message contract as table Scan & Pay. A kiosk station QR resolves to a STATION orderContext with stationKind: KIOSK. OpenApp then determines which sub-flow applies based on the POS response.
Two sub-cases exist depending on whether a payable bill is already open at the kiosk:
- Pay an existing kiosk order: a cashier or employee has already entered an order at the kiosk in the POS. The customer scans the static kiosk station QR and pays via the standard Scan & Pay flow.
- Self-order + prepay: no order exists yet at the kiosk. The POS returns
NO_OPEN_BILLand OpenApp offers the customer a self-order basket, submitted as a prepaidPICKUPorder.
Pay an existing order
The full Scan & Pay message sequence applies without modification
Self-order + prepay
When the POS returns NO_OPEN_BILL, OpenApp may offer the customer a self-order entry point. The customer builds a basket and the order is submitted as a prepaid PICKUP order using the standard Prepaid Ordering flow:
One payable order per station
A station binds at most one payable order at a time - the same constraint as a single card terminal. A static station QR therefore resolves to exactly one payable bill or none.
Availability
Kiosk ordering is intentionally outside the STATION availability toggle:
- A payable bill exists only if an employee entered one at the POS. No employee action →
NO_OPEN_BILL. The order's existence is the signal, there is nothing for a merchant to pause. - Self-order with a pickup is governed by it's own availability flag.