Skip to main content

Prepaid Ordering

Prepaid ordering inside OpenApp uses the POS integration capability when the POS remains responsible for item acceptance, kitchen operations, payment recording, and order closure.

OpenApp executes the customer payment before submitting the order to the POS. The completed payment is included directly in OrderSubmissionRequested.payment. If the POS rejects the paid order, OpenApp refunds the customer payment.

The fulfillment context is independent from payment timing. orderContext.type can be STATION, PICKUP, or DELIVERY; the presence of payment on OrderSubmissionRequested is what makes the submission prepaid.

Kiosk self-order also enters through the PICKUP context: when a customer scans a kiosk station QR and the POS returns NO_OPEN_BILL (no existing order at that kiosk), OpenApp may offer the customer a self-order basket submitted as a prepaid PICKUP order. See Scan & Pay and Kiosk Ordering.

This diagram is logical. It omits delivery-mode details; see Architecture for the delivery model.

Message types:

Message typeDirectionPurpose
OrderSubmissionRequestedOpenApp -> POSSubmit prepaid products and the completed OpenApp payment to the POS.
OrderSubmissionResultPOS -> OpenAppConfirm accepted products or reject products with business reasons.