How do you accept PromptPay on WooCommerce?
WooCommerce can accept PromptPay in two ways: a free static QR code with manual slip checks, or a payment gateway plugin that creates a QR code for each order and updates the order by itself.
The free way is a static QR code for your PromptPay ID shown at checkout: the customer pays, uploads a transfer slip, and someone on your team checks the bank account before shipping. The automatic way is a payment gateway plugin that creates a fresh QR code for each order with the exact amount, then marks the order paid by itself when the money arrives.
The first costs nothing per order but costs staff time and carries fake-slip risk. The second charges a fee per transaction and removes the manual checking.
For a shop doing a handful of orders a day, the static QR can be fine for a while. Once orders arrive at night, on weekends or in batches during a sale, most owners move to a gateway.
PromptPay in one paragraph
PromptPay is Thailand's national instant payment scheme, overseen by the Bank of Thailand. A business or person links a PromptPay ID (a phone number, national ID or tax ID) to a bank account, and anyone can pay it instantly from any Thai banking app by scanning a Thai QR code. For Thai shoppers it is often the default way to pay online, which is why it belongs on almost every store selling to local customers.
Two ways to take PromptPay on WooCommerce
The table sets the two routes side by side. Neither is wrong; they suit different volumes and different tolerance for manual work.
| Static QR with slip upload | Dynamic QR through a gateway | |
|---|---|---|
| Cost per order | No gateway fee | Gateway fee per transaction (see the provider's pricing page) |
| Amount in the QR | Customer types it, errors happen | Exact order amount built into the QR |
| Order confirmation | Staff check the bank app, then update the order | Automatic, through a webhook from the gateway |
| Fake slip risk | Real, needs checking | Not applicable, payment is confirmed by the provider |
| Works at 2 a.m. | Order waits until someone checks | Yes |
| Setup | Simple bank transfer settings or a small plugin | Merchant account, API keys, webhook, testing |
| Best for | Very low volume, testing the market | Regular daily orders, sales campaigns |
Option 1: static QR and slip checks
WooCommerce includes a "Direct bank transfer" payment method out of the box. You can add your PromptPay QR image and instructions to it, and a small upload field (via a plugin or a few lines of custom code) lets customers attach their transfer slip. The order sits "on hold" until someone confirms the money has arrived.
When it is enough
- You are testing a new product line and expect a few orders a week.
- Someone already checks the business bank account several times a day.
- Your products are made to order, so a short delay before confirmation does not hurt.
The risks
Fake or edited transfer slips are a known problem in Thai online selling. A slip image proves nothing on its own; only the incoming transaction in your bank account does. Customers also mistype amounts, pay twice, or pay for an order they then abandon. Every one of these becomes a manual task.
If you stay with this route, set rules: never ship on a slip alone, match each payment by amount and time in the banking app, and ask customers to include the order number in the transfer note where their bank app allows it. Some services offer slip verification that reads the QR on the slip and checks it against bank records; they reduce the checking load but do not remove it, and they add their own fees.
Option 2: dynamic QR through a gateway
With a gateway, the customer chooses PromptPay at checkout and WooCommerce asks the provider for a one-time QR code tied to that order and amount. The customer scans it, the provider sees the payment land, and it sends a notification (a webhook) back to your site. WooCommerce then moves the order to "processing", reduces stock and sends the confirmation email. Nobody on your team touches it.
Which WordPress payment gateways offer PromptPay
At the time of writing, Omise (for a time branded Opn Payments) publishes a WooCommerce plugin on WordPress.org that includes PromptPay, and 2C2P documents WooCommerce integration with Thai QR among its methods. Banks also offer their own QR APIs; if you bank with SCB and want the bank-direct route, our guide to the SCB payment gateway covers onboarding and integration. Check each provider's documentation for current WooCommerce support before you sign, as plugins and supported methods change.
For a wider comparison of fees, payout times and supported methods across providers, see our overview of payment gateways in Thailand.
Fees
Every gateway charges per transaction, and PromptPay is usually priced differently from cards. We do not quote rates here because they change and some are negotiated. Read the current numbers on the provider's own pricing page, and ask whether there are setup fees, monthly minimums or payout fees on top.
Setting it up
Setting up a gateway PromptPay option on WooCommerce follows the same five steps whichever provider you pick. Approval of your merchant account is usually the slowest part, so start it first.
- Step 1
Open a merchant account
Apply with the provider, supply business documents and your bank account for payouts, and wait for approval.
- Step 2
Install the plugin
Use the provider's official plugin, keep WooCommerce and WordPress up to date, and avoid unmaintained copies.
- Step 3
Add test keys
Paste the test API keys into the plugin settings and enable PromptPay as a method.
- Step 4
Register the webhook
Give the provider your site's webhook address so it can tell WooCommerce when a payment succeeds, fails or expires.
- Step 5
Run test orders, then go live
Place paid, expired and refunded test orders, check order statuses and emails, then switch to live keys.
Making QR payment work on a phone
Here is the awkward part. Most Thai shoppers browse and buy on their phone, and you cannot scan a QR code that is on the same screen you are holding. A checkout designed only for desktop quietly loses these buyers, one of the leaks covered in our guide to ecommerce checkout optimization.
What a good mobile flow looks like
- A "save QR image" button right under the code, so the customer can save it to their photos.
- Clear short instructions: open your banking app, choose scan, pick the saved image from your gallery. Most Thai banking apps support scanning from a saved image.
- A visible countdown if the QR expires, so nobody pays an expired code.
- A page that updates on its own when payment is confirmed, so the customer returning from their bank app sees "Thank you, order received" without refreshing.
- Thai and English text if you sell to both audiences, because a confused buyer at the payment step rarely comes back.
Test this on real phones, both iPhone and Android, with at least two different banking apps. It is the step most often skipped, and the one that shows up as abandoned orders in your reports.
Refunds and reconciliation
PromptPay is a push payment: the customer sends money to you, and there is no card-style chargeback. That makes refunds a deliberate action on your side.
With a static QR
You refund by making a new transfer to the customer, usually to their PromptPay ID or bank account, which you must ask them for. Record the refund in WooCommerce manually so stock and reports stay correct. Keep a simple log: order number, amount, date, and the reference from your banking app.
With a gateway
Some providers let you trigger PromptPay refunds from their dashboard or even from inside WooCommerce; others handle PromptPay refunds differently from cards. Ask before you sign, and write the steps down for whoever handles customer service.
Matching money to orders
Gateways pay out in batches, net of fees, a few days after the sale. Your accountant will want to match each payout to a list of orders. Make sure the gateway's transaction ID is saved on every WooCommerce order, and export a payout report each week. If you issue e-Tax invoices, the invoice should follow the order total, with gateway fees handled as a separate business expense.
PromptPay next to cards and COD
PromptPay should rarely be the only option. A typical Thai store checkout offers three or four methods, and the order you list them in nudges buyers.
- PromptPay QR first for a Thai audience: familiar, instant and cheap for you.
- Cards second, essential for tourists, expats and corporate buyers paying on a company card.
- Cash on delivery where your customers expect it, with its own rules for couriers and failed deliveries; our guide to cash on delivery for WooCommerce covers the settings and the risks.
- Wallets if your buyers use them heavily; see our notes on accepting TrueMoney Wallet on your website.
Hide methods that do not suit an order, for example COD above a certain value or for remote areas. If you are still choosing a platform, keep in mind that Shopify handles payments through approved providers only, so the options differ; our comparison of Shopify vs Shopify Plus touches on what each plan allows. And if you are at the very beginning, our guide to starting an online store in Thailand puts payments in order with products, shipping and tax.
We build stores on WordPress WooCommerce with PromptPay, cards, COD and Thai couriers set up and tested, plus e-Tax invoice setup and staff training. The E-commerce package starts from THB 50,000 as an indicative one-time price; the guide to what shapes a WooCommerce website price explains what moves the final quote.
About this guide

Who builds your site
Litesh Dhir
Builds and ranks the websites: the systems behind the 17 client sites whose Search Console numbers we publish.
More about usMore on e-commerce payments
Sources
- Bank of Thailand: PromptPay
- WooCommerce documentation
- Omise Payments plugin on WordPress.org
- 2C2P developer documentation
