PromptPay
FastSpring supports PromptPay as a payment method from Thailand.
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:
- The buyer selects PromptPay as their payment option during checkout.
- FastSpring prompts the buyer for required personal details (a session is automatically created if details are already known).
- FastSpring redirects the buyer to the Alipay+ partner page.
- A unique QR code is generated on the partner page.
- 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.
- 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
