Korat

Ring up a sale at the counter

This page is the checkout counter for a customer standing right in front of you — add items, take payment, print a receipt, and deduct stock instantly in one step. If the customer ordered themselves from the app/website (not standing at your counter), go to Orders instead.

Selling steps

  1. 1Press a product card to add it to the basket — press again to add more; items that are closed for sale can't be pressed and show "This item can't be sold right now"
  2. 2Use the category chips above to find products faster
  3. 3Check the basket on the side — add a discount (if any) then choose a payment method: cash or transfer/PromptPay
  4. 4If cash, enter the "amount received" — the system calculates change automatically; the "Take payment" button stays disabled until the amount received covers the total due
  5. 5Press "Take payment" to close the bill — the system deducts stock and issues a bill number immediately

The numbers in the basket before you press "Take payment" are an estimate only, used to calculate change — the real total recorded on the bill is calculated by the server when you press take payment. If the shop has a promotion that applies to that product, the price is discounted automatically per the promotion's terms.

Not enough stock

If a product is running low, the system warns "Only {quantity} left" when you press to add it to the basket — you can still add more, but it's a warning to be careful not to sell beyond what's actually in stock.

Offline / lost internet connection

The "Take payment" button is disabled immediately if the device goes offline, with the message "Offline — connect to the internet before taking payment" — this prevents opening a bill the server doesn't know about. Reconnect to the internet, then press take payment again.

After closing a bill

Once "Take payment" succeeds, the system shows the real bill calculated by the server (not the estimate from the basket), with the bill number, promotional discount (if any), and change — the on-screen stock is deducted and refreshed automatically, no need to reload it yourself.

Pressed take payment but don't know the result

If the connection drops mid-way and it's unclear whether the bill went through, the system won't guess — it will tell you plainly that the result is unknown, rather than risk you pressing take payment again and issuing two duplicate bills. Check the shop's most recent bill list first to see whether that bill already went through, before selling again.

Where it can break

SymptomCause / fix
Products fail to loadTemporary connection failure to the server — press "Retry" on the screen's button
"Take payment" button can't be pressedThe cash received doesn't cover the total yet, or the device is offline — read the message under the button for the real reason
Payment fails / server rejects itThe button becomes clickable again with the real reason from the server — the same basket stays intact, you can press again right away
Pressed take payment twice / opened a duplicate tabThe system prevents duplicate bills automatically — if it's truly the same basket, you get the same bill back, not a new one