QR Code Payment

Introduction

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.

Reference Terms

C - Consumer
B - Business

APIs

C Scan B Payment

1. QR Code Generation

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

2. Payment Confirmation

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.

3. Slip Verification

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

4. Payment Transaction Inquiry

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.

Prerequisites

B Scan C Payment

1. B Scan C Payment

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.

2. B Scan C Refund

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.

3. B Scan C Payment Transaction Inquiry

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.

Prerequisites

Technical Flow

C Scan B Payment: Thai QR Code Tag 30 (QR 30)

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

C Scan B Payment: QR Card Scheme (QR CS)

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}

B Scan C Payment

Seq No. API Name API Endpoints
1 Generate Access Token POST /v1/oauth/token
2 QR Code Generation POST /v1/payment/merchant/rtp/confirm

B Scan C Refund

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

B Scan C Inquiry

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}