Skip to main content

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_BILL and OpenApp offers the customer a self-order basket, submitted as a prepaid PICKUP order.

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.