PromptPay

FastSpring supports PromptPay as a payment method from Thailand.

Limited Availability — Contact Support to Enable

PromptPay is not enabled by default. Contact FastSpring Support to enable it for your store.

FastSpring supports PromptPay as a payment method for buyers in Thailand.

PromptPay gives Thai buyers a secure, convenient, and local way to make payments using their preferred bank. FastSpring offers PromptPay as a payment option to buyers from Thailand purchasing in THB (Thai Baht), from all browsers and devices.

The sections below explain the availability, buyer flow, and technical details for PromptPay. Select a section or use the TOC on the right to jump ahead.

Prerequisites

To use PromptPay, the following requirements must be met:

  • The buyer must be in Thailand and the transaction currency must be THB (Thai Baht).
  • The buyer must have a valid app that supports PromptPay transactions.

Warning: PromptPay is not supported for subscription purchases. FastSpring supports PromptPay for perpetual products and manual recurring purchases only.

Customer experience

Here is the FastSpring PromptPay experience for buyers:

  1. The buyer selects PromptPay as their payment option during checkout.
  2. FastSpring prompts the buyer for required personal details (a session is automatically created if details are already known).
  3. FastSpring redirects the buyer to the Alipay+ partner page.
  4. A unique QR code is generated on the partner page.
  5. The buyer has 15 minutes to scan the QR code and complete the transaction. During this time, the transaction status is Pending payment.
    • If the transaction is not completed within 15 minutes, FastSpring automatically cancels it.
  6. Once the buyer successfully scans the QR code and completes payment, FastSpring displays a completed order confirmation.

Refunds and returns

Refunds for PromptPay transactions behave the same as other FastSpring refunds. FastSpring automatically returns the funds to the buyer's account. No special configuration is required.

Webhooks

FastSpring includes the following field in the order.completed webhook payload when an order is completed with PromptPay:

"payment": {
  "type": "promptpay"
}

For more information on the order.completed webhook, see the Successful Orders documentation.

FAQs

Can PromptPay be used for subscription purchases?

No. FastSpring supports PromptPay for perpetual products and manual recurring purchases only.

Is PromptPay enabled by default?

No. PromptPay is not automatically enabled for all FastSpring sellers. Please reach out to FastSpring support to enable this payment method.

Is PromptPay a real-time payment method?

Yes, although buyers must scan a QR code to complete the transaction, which means payment processing can take up to 10 minutes. FastSpring has developed an automated reconciliation process to track and complete any orders that don't complete in real time.

Behind the scenes

PromptPay is a proxy-based payment model built on top of Thailand's existing interbank rails, with Thailand's National ITMX acting as the real-time overlay switch — architecturally similar to India's UPI or Brazil's PIX.

The diagram below steps through the five phases of a PromptPay transaction:

%%{init: {"flowchart": {"wrappingWidth": 350}} }%%
graph TD
    classDef phase1 fill:#EFF6FF,color:#1E3A8A,stroke:#1E3A8A,stroke-width:1.5px
    classDef phase2 fill:#F0FDF4,color:#14532D,stroke:#14532D,stroke-width:1.5px
    classDef phase3 fill:#FFFBEB,color:#78350F,stroke:#B45309,stroke-width:1.5px
    classDef phase4 fill:#FAF5FF,color:#581C87,stroke:#581C87,stroke-width:1.5px
    classDef phase5 fill:#F0FDFA,color:#134E4A,stroke:#0F766E,stroke-width:1.5px

    subgraph P1["Phase 1: Show QR"]
        A1["Merchant generates QR code"]
        A2["QR encodes an EMV payload: PromptPay ID, amount in THB, CRC checksum"]
        A1 --> A2
    end

    subgraph P2["Phase 2: Scan"]
        B1["Customer scans QR with banking app"]
        B2["App decodes EMV payload"]
        B3["Resolves PromptPay proxy ID via NITMX directory"]
        B1 --> B2 --> B3
    end

    subgraph P3["Phase 3: Authenticate"]
        C1["Customer reviews payment details"]
        C2["Authenticates with PIN, biometric, or OTP"]
        C3["No card number exchanged - only PromptPay proxy ID"]
        C1 --> C2 --> C3
    end

    subgraph P4["Phase 4: NITMX Routes"]
        D1["National ITMX validates both parties"]
        D2["Checks individual daily cap of approx THB 2 million"]
        D3["Instructs simultaneous debit and credit"]
        D1 --> D2 --> D3
    end

    subgraph P5["Phase 5: Settlement"]
        E1["Merchant bank credited"]
        E2["Customer account debited"]
        E3["Push confirmations sent to both parties"]
        E1 & E2 --> E3
    end

    A2 --> B1
    B3 --> C1
    C3 --> D1
    D3 --> E1
    D3 --> E2

    class A1,A2 phase1
    class B1,B2,B3 phase2
    class C1,C2,C3 phase3
    class D1,D2,D3 phase4
    class E1,E2,E3 phase5

    style P1 fill:#DBEAFE,stroke:#1E3A8A,stroke-width:2px,color:#1E3A8A
    style P2 fill:#DCFCE7,stroke:#14532D,stroke-width:2px,color:#14532D
    style P3 fill:#FEF3C7,stroke:#B45309,stroke-width:2px,color:#78350F
    style P4 fill:#EDE9FE,stroke:#581C87,stroke-width:2px,color:#581C87
    style P5 fill:#CCFBF1,stroke:#0F766E,stroke-width:2px,color:#134E4A