Cashless payment has become a crucial part of Thailand's financial infrastructure over the past few years. In response, Bank of Thailand and commercial banks are joining forces to push the agenda forward, with QR payment as one of their primary medium. SCB’s open API platform enables the public to capitalize on the cashless payment trend by providing payment interfaces for partners and startups alike to develop on top of.
Currently, QR Payment in Thailand are classified into the following categories:
1. Thai QR Code Tag 30 (QR 30) - This is to support merchant-presented mode (C scan B) QR codes, where the customer scans the merchant’s QR code and pays using either the current or savings account as the source of funds. This type of QR payment is supported by most of the major Thai banks.
2. QR Card Scheme (QR CS) - This is to support merchant-presented mode (C scan B) QR codes, where the customer scans the merchant’s QR code and pays using credit cards as the source of funds. Currently, QR CS is supported by VISA and Mastercard, making it compatible internationally.
3. MyPrompt QR - This is to support consumer-presented mode (B Scan C) QR codes, where the merchant scans the customer’s QR Code and deducts the payment amount from their current or savings account. Major Thai banks will start launching the support of MyPrompt QR in the near future.
C - Consumer
B - Business
API Initiator : Partner/Third Party
API Recipient : SCB
The API for QR code generation supports both QR 30 and QR CS (Card Scheme). In addition, a single QR Code can contain both at the same time. Partners can choose to generate
Do note that the ability to support and display the payment options is respective to each mobile banking application.
For example
Scan Result
API Initiator : SCB
API Recipient : Partner/Third Party
Once the customer completes payment, SCB will send a payment confirmation to the registered partner's/third party's backend system. This confirmation acknowledges and sends transactional information to the partner/third party.
Payment confirmation is supported for any payment that is initiated from a mobile banking application supporting QR 30 and/or QR CS payment.
API Initiator : Partner/Third Party
API Recipient : SCB
If the customer scans the QR and pays successfully but the partner does not receive the payment confirmation, the partner can use the slip verification API to verify the transaction of the customer. The API requires the transaction ID shown in the QR Code of the customer's receipt.
Extracting data on mini QR
The transaction ID can be extracted from the mini QR by following the specs here
API Initiator : Partner/Third Party
API Recipient : SCB
The API can be used by partners to inquire the transaction status and perform verification on the transaction. An example to trigger such this API call is when a payment confirmation was not received by the partner.
API Initiator : Partner/Third Party
API Recipient : SCB
After the customer initiates the transaction by generate MyPrompt QR on their mobile application, the merchant scans and obtains payment information encapsulated within the QR code. After which, the merchant will send transaction details to this API for the bank to facilitate the payment deduction from the customer’s savings or current account.
API Initiator : Partner/Third Party
API Recipient : SCB
A refund request can be sent to the bank by the merchant through this API. The full-amount refund can only be executed successfully before 23:00 hours of the same day of the transaction.
API Initiator : Partner/Third Party
API Recipient : SCB
My Prompt QR (B Scan C) Transaction Inquiry API is used when partner gets timeout response from SCB. For example, partner sends payment and timeout, or partner sends refund then timeout. So, they can inquire to verify the result of those timeout calls.
Seq No. | API Name | API Endpoints |
---|---|---|
1 | Generate Access Token | POST /v1/oauth/token |
2 | QR Code Generation | POST /v1/payment/qrcode/create |
3 | Payment Confirmation | - |
4 | Slip Verification | GET /v1/payment/billpayment/transactions/{transRef}?{param}={value} |
5 | Payment Transaction Inquiry | POST /v3/payment/billpayment/inquiry |
or | GET /v1/payment/billpayment/inquiry?{param}={value} (Obsolete) | |
6 | QR Code Void | POST /v1/payment/qrcode/void |
Seq No. | API Name | API Endpoints |
---|---|---|
1 | Generate Access Token | POST /v1/oauth/token |
2 | QR Code Generation | POST /v1/payment/qrcode/create |
3 | Payment Confirmation | - |
4 | Payment Transaction Inquiry | GET /v1/payment/qrcode/creditcard/{qrId} |
Seq No. | API Name | API Endpoints |
---|---|---|
1 | Generate Access Token | POST /v1/oauth/token |
2 | QR Code Generation | POST /v1/payment/merchant/rtp/confirm |
Seq No. | API Name | API Endpoints |
---|---|---|
1 | Generate Access Token | POST /v1/oauth/token |
2 | B Scan C Refund | POST /v1/payment/merchant/rtp/refund |
Seq No. | API Name | API Endpoints |
---|---|---|
1 | Generate Access Token | POST /v1/oauth/token |
2 | B Scan C Payment Transaction Inquiry | GET /v1/payment/billpayment/inquiry?{param}={value} |