If you sell time — clinic appointments, padel courts, yoga classes, hotel rooms — you should be taking deposits in PromptPay. Not credit cards. Not bank transfers chased on LINE. PromptPay. This post is the operational playbook: which deposit percentage, how the QR generation works, where the slip verification fits, what to do about refunds, and how to read your deposit ledger at the end of the month.
Why PromptPay beats every other payment method for Thai SMBs
Three reasons. None of them are subtle.
- Cost. Card processors charge 2.5–3.5% per transaction. Stripe Thailand charges similar. PromptPay is free for personal IDs and effectively free (a few satang per transaction) for tax IDs. On a shop doing ฿500,000/month in deposits, the difference is ฿12,500–17,500 of pure margin per month.
- Reach. 85%+ of Thai phones have a banking app with PromptPay enabled. Card penetration is much lower, and customers under 35 increasingly do not own a credit card at all.
- Speed. PromptPay clears in under 5 seconds. Your booking platform can lock the slot the instant the slip is verified — there is no "pending" state.
The flip side has historically been verification: PromptPay does not push a webhook to your booking system the way Stripe does. For years the workaround was "customer uploads slip, admin eyeballs it." That is a real problem, but it is now a solved one.
How the modern deposit flow works
End-to-end, here is the flow you want your customers to experience:
- Customer picks a service and a time on your branded booking page.
- Page generates a PromptPay QR with the deposit amount pre-filled. The QR encodes your tax ID or phone number plus the exact baht amount, so the customer cannot accidentally underpay.
- Customer scans with their banking app, pays, downloads the slip JPEG/PDF, uploads it back to your page.
- Your platform sends the slip to an auto-verify service (we use EasySlip; you can also build against the bank's own API for SCB or KBank). The verifier reads the slip, confirms the amount and the recipient, and returns paid/rejected within ~2 seconds.
- If paid: slot locks, confirmation email + LINE message fire. If rejected: customer sees a "slip not verified" message and can re-upload.
The whole thing happens in one continuous page session. The customer never has to leave for LINE, the admin never has to look at a JPEG.
How to pick the deposit percentage
The right deposit is "small enough that nobody balks; large enough that nobody no-shows." For most Thai service businesses, that is 30%. But it varies by category:
| Business type | Suggested deposit | Why |
|---|---|---|
| Aesthetic clinic, derm | 30% | Average ticket ฿1,500–5,000. 30% feels routine. Higher for laser/injectables. |
| Padel court | 50% or full | Group bookings — peer pressure helps. Full prepay common. |
| Yoga / pilates studio | Full (class-pass) or 0% (drop-in) | Pass model means money is already in. |
| Hotel / homestay | 30–50% | OTA convention is 0% prepay, but direct bookings carry higher no-show risk without a deposit. |
| Salon / nails / lashes | 20–30% | Sensitive to price; start low and adjust if no-shows persist. |
| Coaching, consulting | 50% or full | Time is the product. Almost never refunded for late cancels. |
Refund rules — write them down before you take your first deposit
This is where shops trip themselves up. The deposit policy needs to be on your booking page before the customer pays, not invented on LINE the day they want to cancel.
A reasonable default for most service businesses:
- Cancel ≥48 hours before: full refund.
- Cancel 24–48 hours before: 50% refund (or convert to credit for the next booking).
- Cancel <24 hours, or no-show: deposit forfeit.
For hotels and multi-night stays, extend the windows (most boutique hotels use 7-day full refund, 3-day half refund, day-of forfeit). For padel courts and yoga classes, shorter is fine (24h full, 12h half, day-of forfeit) because the slot can usually be resold quickly.
The refund goes out the same way the deposit came in — a PromptPay transfer back to the customer's account. Your booking platform should record both the deposit and the refund on the same appointment row, so when you reconcile end-of-month you can see net deposits as a single ledger line per customer.
What about partial-pay and split-pay?
A common request: "Can the deposit be split between two friends booking together?" Short answer: not cleanly with PromptPay alone. Long answer: take the full deposit from the booker and let them sort it out off-platform via their own friend-money tool (Splitwise, group LINE chat, whatever). Trying to architect a multi-payer flow inside your booking platform is more pain than it is worth at any reasonable scale.
The exception is hotel and venue rentals: there your booking sometimes does have multiple legitimate payers (corporate retreat, wedding, etc.). For those, treat the booking as one invoice and let the booker pay the deposit in one PromptPay, then sort internal billing on their side.
The deposit ledger — read it monthly
Once you are taking deposits at scale, you want one report per month that tells you:
- Total deposits collected.
- Total refunds issued.
- Total forfeit deposits (customers who no-showed or late-cancelled).
- Net deposit revenue (i.e. forfeit deposits — which are technically additional revenue you would not have otherwise captured).
The forfeit number is interesting: it tells you what the no-show rate would have cost you if you had not been taking deposits. In the Bookku tenant base it ranges from ฿8,000–40,000/month per shop. That number, alone, more than pays for the booking platform several times over.
The legal floor — Thai PDPA, e-Tax invoices, and your receipts
A few things to get right:
- Receipts: if the customer asks for a tax invoice (which they will for any business-related booking), you need to generate one with their tax ID + company name. Bookku captures these at checkout as optional fields and attaches a PDF e-Tax Invoice to the confirmation email automatically.
- 5-year retention: Thai accounting law requires you to keep deposit records for 5 years. Do not delete bookings even if the customer requests data erasure — anonymise the PII (name, email, phone) but keep the row.
- PDPA Section 30: if the customer requests an export of their data, you have 30 days to comply. A booking platform should give you a one-click export.
Where Bookku fits
Bookku ships the whole PromptPay deposit stack out of the box: per-service deposit %, branded PromptPay QR with the right amount, EasySlip auto-verify, refund flow, deposit ledger in the admin, Thai e-Tax Invoice generation, and PDPA-compliant export/erasure. From "I want to take deposits" to "first deposit cleared on the booking page" takes about an hour. Start a 14-day trial — no credit card — and see your no-shows drop.
14-day free trial · No credit card · Cancel anytimeทดลองใช้ฟรี 14 วัน · ไม่ต้องใช้บัตรเครดิต · ยกเลิกได้ทุกเมื่อ