Skip to content

PromptPay at the till — accept QR payments without a card machine

PromptPay is the QR rail every Thai banking app already speaks. A customer pulls out their phone, taps the QR icon, scans the screen at your till, and the baht moves from their account into yours within a second. No card terminal, no surcharge fee, no merchant-of-record sitting between you and the money. This page is for the venue owner setting it up once, and the cashier using it every day.

The setup is a single screen: the phone number you registered with your bank for PromptPay. The cashier flow is two taps: Show QR, then Upload slip after the customer pays. The slip check happens automatically — you don’t have to compare amounts in your head.

What it does

PromptPay is a national QR rail run by the Bank of Thailand, not a private payment service. When you registered your bank account with PromptPay (at your bank, usually as part of opening the account), you picked a “proxy” — most often your phone number — that maps to that account. Anyone with a Thai banking app can send money to that proxy: they type it in, or they scan a QR that encodes it.

For a restaurant, this means the customer pays you the way they’d pay a friend: open their banking app, scan, confirm, done. The money is in your account before they’ve put their phone away. You are not a merchant of record for this transaction — there is no clearing account, no “we hold the money for two days,” no per-transaction fee paid to a card network. The customer’s bank wires directly to your bank.

What the system does for you is the QR generation and the slip check. Each order has its own QR with the right amount embedded — the customer doesn’t have to type the total. After they pay, their banking app shows a bank slip (a screenshot of the receipt). The cashier uploads that slip, and the system checks it against the order: amount matches, account matches, the slip is genuinely issued by a Thai bank. Only then does the order close.

The slip check exists because without it, a dishonest customer could show you any old slip image and walk out. The slow way is to wait for your own bank’s push notification to land on your phone — which is fine for the first three transactions, but at lunch rush it becomes “did that one go through? hang on, let me check…” The slip check turns that into one tap.

The rule

The phone number on the settings page IS your bank account. Whatever number you type there is where customers’ money goes. If you change banks, change this number first — or three days of QR payments end up at the wrong account and good luck getting them back.

How to use it

One-time setup (owner)

You’ll need: your PromptPay-registered phone number, and a few minutes.

  1. Open Admin → Settings → POS terminal.
  2. Scroll past the auto-lock setting to the PromptPay section.
  3. Flip the switch on.
  4. Type your phone number on your PromptPay account — 10 digits, starting with 0. This is the same number you used at the bank when you signed up for PromptPay (usually your personal Thai mobile, or the line registered to the business).
  5. Optionally, type a display name — this shows on the QR screen so the customer can confirm they’re paying the right venue (“iO Osteria — Sukhumvit 31” looks more reassuring than just a phone number).
  6. Leave Auto-check uploaded slips on. (You almost never want this off — without it the cashier has to verify slips by eye, and that’s where mistakes happen.)
  7. Save.

The owner can do this out of the box, and it’s delegable: a role with the Configure payment methods permission can edit the PromptPay setup (and the accepted card brands) without being a full owner. Everyone else sees the settings read-only. Set it on the Roles page.

The status line at the bottom of the card should now read “Customers can pay by PromptPay — money lands at 081 *** 5678” (your number, partly masked so it doesn’t leak the full number to staff looking at the screen). You’re done.

At the till (cashier)

  1. Take the order as usual. Tap Pay when the customer is ready to settle.
  2. Tap the 📱 QR chip.
  3. Tap Show PromptPay QR.
  4. Turn the screen toward the customer. They scan with their banking app and confirm.
  5. When they’re done, they’ll show you the bank slip in their banking app — a screen with the amount, your account, and a transaction reference. Tap Upload bank slip and pick that image (camera roll or screenshot).
  6. The system checks the slip against the order. If everything matches, the order closes with a green tick and a slip reference number on the receipt. If something doesn’t match — wrong amount, wrong account — you’ll see an amber card explaining why, and you can ask the customer to check their banking app again.

That’s it. There’s no extra button to press, no manual “mark as paid” path that someone could forget. The flow IS the verification.

Worked example

Friday lunch service. A table of three has finished a margherita, a quattro stagioni, two glasses of Chianti, and a tiramisù — ฿1,640 total.

At the till. Aor (the cashier) taps Pay on the cart, picks the 📱 QR method, and taps Show PromptPay QR. The screen shows a black-and-white square with the venue’s name (“iO Osteria — Sukhumvit 31”) underneath and “฿1,640” in big numbers.

The customer. The eldest at the table opens her K PLUS app, taps the QR camera, scans Aor’s screen. The app shows the amount pre-filled — she doesn’t type anything. She taps Confirm, then unlocks with her thumb. Her bank app pings: “Payment of ฿1,640 sent to iO Osteria, Sukhumvit 31. Slip ref OKB20260522123456.” She turns her phone toward Aor and shows the slip.

Back at the till. Aor taps Upload bank slip, picks the screenshot from the camera roll the customer just sent her (or takes a photo of the customer’s screen). A spinner appears for about three seconds. The card flips green: “Payment confirmed — slip ref OKB20260522123456.” The order closes; the kitchen-display marks the table as done. ฿1,640 is on its way to the venue’s bank account; the bank’s push notification will land on the owner’s phone within the minute, matching the slip ref Aor just saved.

What if the slip didn’t match. Say the customer panicked and entered ฿1,460 instead of ฿1,640. After Aor uploads the slip, the card turns amber: “The slip is for a different amount (1,460 ฿) than this order (1,640 ฿). Check with the customer.” Aor explains, the customer sends the missing ฿180 with a second QR (Aor regenerates one for the difference), and the order closes once both slips are confirmed.

  • Cashier — the till in general — PromptPay is one of five payment methods in the payment dialog; the rest of the cashier flow doesn’t change.
  • Closing the shift — pending PromptPay payments (where the customer scanned but didn’t upload the slip yet) don’t count toward shift totals. They sit in their own bucket until verified or cancelled.