
Thai shoppers expect to pay by scanning a QR code in their banking app. This plugin adds that option to WooCommerce checkout without putting a payment processor between you and your money.
When a customer picks PromptPay, the plugin builds a spec-correct EMVCo and Bank of Thailand QR payload on your own server, encoding the exact order total. The customer scans it with any Thai banking app and pays. You watch the transfer land in your account and confirm the order by hand.
This is an offline gateway, in the same sense as WooCommerce’s built-in Direct Bank Transfer (BACS). It is the manual-reconciliation option, for stores that already watch their bank account and would rather do that than pay per transaction.
manage_woocommerce capability confirms it. There is no customer-facing control and no public endpoint that changes order status.Stores selling in Thailand that take Thai baht and would rather reconcile by hand than hand a percentage to a processor. It suits low-volume and mid-volume stores, stores whose margins do not survive card fees, and merchants who already check their banking app several times a day.
It does not suit high-volume stores or anyone who needs orders to clear without a human looking at them.
This plugin does not talk to any bank or payment processor and cannot confirm a payment on its own. Every order waits for you. If you need automatic confirmation, use a payment processor such as Stripe instead.
Only Thai baht (THB) is supported, because PromptPay settles in baht. The gateway does not appear at checkout for any other store currency.
The plugin makes no external HTTP requests and sends nothing to any third party. The QR image is drawn by a bundled encoder that ships with its source.
The QR attached to awaiting-payment emails is stored as a small image file in the plugin’s own folder inside your uploads directory, under an unguessable name and behind guard files that refuse web access. Each file is deleted as soon as its order stops awaiting payment, stale files are swept automatically, and deleting the plugin removes the folder entirely.
iconv extension, which is compiled into PHP by default.gd extension is used to draw a PNG QR code. Without it the plugin falls back to SVG. If that also fails it shows your PromptPay ID and the amount as text so the customer can enter them by hand. It never fails silently and never leaves a blank space where a QR should be.The QR image is drawn on your own server by these libraries, bundled with full source under a plugin-specific namespace so they cannot collide with another plugin’s copy:
This plugin is not affiliated with, endorsed by, or sponsored by the Bank of Thailand, National ITMX, any Thai bank, or WooCommerce. “PromptPay” is referenced solely to describe the payment scheme whose QR format this plugin generates.