← Back to Blog
PaymentThailandE-commercePromptPay

Payment Integration for Thai Websites: PromptPay, KBank, SCB

2 May 2026 · Updated 5 October 2026 · by Yunmin Shin

What Payment Methods Do Thai Customers Prefer?

Thai consumers have clear payment preferences that differ significantly from Western markets. Understanding these is essential before building any e-commerce, booking-deposit, or payment-enabled application in Thailand.

PromptPay is the most widely used payment method in Thailand. It allows instant bank transfers via phone number or national ID, with QR codes as the primary interface, and Bank of Thailand payment statistics show it dwarfing every other online payment channel by transaction count. If your site does not support PromptPay QR — whether that's an e-commerce checkout, a clinic collecting a booking deposit, or a restaurant taking a pre-order — you are creating unnecessary friction at the exact moment the customer is ready to pay.

Credit and debit cards remain important, particularly for younger Bangkok consumers and tourists. Visa and Mastercard coverage is essential for any business serving international customers, including aesthetic clinics that see a meaningful share of medical-tourism patients.

Mobile banking apps like K PLUS (Kasikornbank) and SCB Easy are used constantly for scanning PromptPay QR codes and for direct bank transfers — most Thai payment gateway integrations are really integrations with this QR-scanning behavior, not with a card form.

LINE Pay is the preferred in-app payment method for purchases made through LINE or LIFF apps, which matters if you're building a LINE-based ordering flow for a restaurant rather than a standalone website.

Buy Now Pay Later services like Atome, which supports Thai merchants, are growing in popularity for fashion, electronics, and increasingly for higher-ticket clinic treatment packages.

What Payment Gateways Work in Thailand?

Omise (Opn Payments) is the leading payment gateway built specifically for Southeast Asia. It supports PromptPay QR, TrueMoney Wallet, credit cards, and installments. Its documentation is in Thai and English, its support team is Bangkok-based, and its merchant agreement process is straightforward for Thai-registered businesses. This is the recommended default for most Bangkok projects — the small e-commerce stores, clinic booking sites, and restaurant ordering systems Bluewich builds most often use Omise as the primary gateway.

2C2P is a Singapore-headquartered gateway with strong coverage across Southeast Asia and a long track record with larger Thai merchants — hotels, airlines, and enterprise retail. It supports PromptPay, cards, and regional wallets, and is worth evaluating alongside Omise for higher-volume or multi-country businesses, though its onboarding process is generally more involved than Omise's.

Stripe supports Thailand-based businesses and Thai baht, excels at international card payments, and has the best developer experience of the group. It also lists PromptPay as a payment method for Thai accounts — confirm current availability and fees for your account in Stripe's own documentation before you commit, since local-method support has changed over time. Stripe is a strong choice for businesses whose customers are largely international.

KBank KPayPlus and SCB Payment Gateway are bank-direct options that offer lower per-transaction fees at scale. However, their APIs are older, documentation is primarily in Thai, and integration requires a direct merchant agreement with the bank. These are worth considering for high-volume merchants processing over 1 million baht per month, but not the right starting point for a new site.

How Do You Implement PromptPay QR?

With Omise, generating a PromptPay QR is a server-side API call. This is the same pattern whether you're charging for a product, a clinic deposit, or a restaurant pre-order:

const charge = await omise.charges.create({
  amount: 50000, // amount in satang (THB × 100)
  currency: "thb",
  source: { type: "promptpay" },
});
// charge.source.scannable_code.image.download_uri = QR image URL

Display the QR code to the user and poll the charge status until it changes to successful. We go through all three ways of taking PromptPay — a static QR with manual slip checks, a gateway-generated dynamic QR, and bank-direct APIs — in PromptPay QR payment integration for websites. Polling alone is not reliable — always implement a webhook endpoint as the source of truth for payment confirmation, since a user closing the browser tab after scanning should not mean the order is lost.

How Do You Handle Webhooks Securely?

Every gateway sends a webhook when a charge's status changes. Treat this endpoint carefully:

export async function POST(req: Request) {
  const signature = req.headers.get("x-omise-signature");
  const rawBody = await req.text();

  if (!verifySignature(rawBody, signature, process.env.OMISE_WEBHOOK_SECRET)) {
    return new Response("Invalid signature", { status: 401 });
  }

  const event = JSON.parse(rawBody);
  if (event.data.status === "successful") {
    await markOrderPaid(event.data.metadata.orderId); // idempotent update
  }
  return new Response("OK", { status: 200 });
}

Always verify the webhook signature before trusting the payload — an unauthenticated endpoint that marks orders "paid" is an obvious fraud vector. Make the handler idempotent too: gateways retry webhook delivery, and re-processing the same successful charge should never double-fulfill an order or double-book a clinic slot.

What Are the Key Legal Requirements?

To accept payments in Thailand, your business must be registered (company or registered partnership). Foreign-owned businesses may face restrictions on certain payment methods — consult a Thai lawyer or accountant before integrating payments for a new business, especially one with foreign shareholders.

All payment providers require identity verification (KYC) for the merchant before going live. Prepare your company registration documents, director's ID, and bank account details before starting the gateway application process — this step, not the API integration, is usually what determines your actual launch date.

How Do You Test Payments Before Launch?

Every gateway provides a sandbox or test-mode environment with dummy card numbers and simulated PromptPay QR codes that auto-resolve to success or failure. Build and test your entire flow — checkout, webhook handling, order confirmation email or LINE notification, refund path — against test mode before requesting production (live) API keys.

Test failure paths deliberately, not just the happy path: a declined card, a webhook that arrives twice, a customer who closes the tab mid-payment and returns later to check their order status. These edge cases are common in real usage, especially on Thai mobile connections where a payment can be interrupted by a dropped 4G connection between scanning the QR and the bank confirming it.

Where Payments Fit in a Booking or Ordering System

Most of the payment work we do is not a shop checkout — it is a deposit inside a booking flow: a clinic consultation deposit, a restaurant pre-order, a no-show deposit for a large table. The pattern is the same everywhere: create the booking as "pending", generate the PromptPay QR, and let the gateway webhook flip it to "confirmed" and trigger the LINE confirmation message. See how a LIFF booking flow is put together and online restaurant booking systems in Bangkok.

Get a free quote. We reply within 24 hours.

Frequently asked questions

What is the best payment gateway for a small business website in Thailand?

For most Thai-registered SMEs, a local gateway such as Omise or 2C2P is the practical default because PromptPay QR, Thai cards and local wallets come in one integration with Thai-language support. Stripe is strong for international cards. Bank-direct APIs from KBank or SCB make sense mainly at high volume. Compare current fees directly with each provider — they change and are often negotiable.

Can I accept PromptPay on my website without a payment gateway?

Yes, by showing a PromptPay QR for your account and asking the customer to send the transfer slip. It costs nothing per transaction, but nothing confirms the payment automatically — staff must check each slip against the bank statement. Once you have more than a handful of orders a day, a gateway with webhooks pays for itself in staff time and fraud prevention.

How long does it take to get a Thai payment gateway approved?

The code is usually the quick part. Merchant onboarding (KYC) needs your company registration documents, director ID and bank account details, and the review can take from days to a few weeks depending on the provider and your business type. Start the application at the same time as development, not after.

Do I need a Thai company to accept online payments?

Local gateways onboard registered businesses, so in practice you need a Thai company or registered partnership with a Thai bank account. Foreign-owned structures can face extra requirements; check with a Thai accountant or lawyer before you build.

Want this working for your business in Thailand?

We build and run the same systems on 16 live sites of our own. Tell us your business — we reply within 24 hours with what the search data shows.