Alipay, China's leading third-party online payment solutionAlipay, China's leading third-party online payment solution

QRIS

QRIS is the Indonesia’s national gateway, which enables code-scanning payment by using the apps of the mainstream banks in Indonesia.

Properties

The properties of the QRIS payment method are shown in the following table:

Payment property

Product property

Payment type

Bank transfer

Acquirer

AlipaySG, AlipayUS

Refund

Merchant entity location

SG, AU, HK, US

Partial refund

Buyer country/region

Indonesia

Refund period

Processing currency

IDR

Time to return refund result

Payment flow

Code-scanningTime to return payment result

Real-time

Minimum payment amount

300 IDR

Chargeback/Dispute

Maximum payment amount20,000,000 IDRDefault timeout

5 minutes

User experience

Note: The following payment flows on different terminals are reference only, and represent this payment method's flow on different terminal types. For supported merchants' terminal types, consult Antom Technical Support.

The following graphics show the user experience for the App terminal.

image.png

  1. The user selects QRIS to pay.
  2. The payment loading page is displayed.
  3. Antom provides the payment information page, allowing the user to capture the screen to save the QR code picture.
  4. The user scans the QR code with a bank app or digital wallet app that supports QRIS.
  5. The user verifies the payment details and confirms the payment.
  6. The user is redirected to the merchant result page.

Integration considerations

The following section outlines integration considerations for various payment types, detailing customized integration solutions and payment method features.

About normalUrl

  • When accepting payments from QRIS, you can choose whether to use normalUrl:
    • If choosing not to use normalUrl, you can directly render the codeValue in the API response on the merchant page to display the QR code or payment code, reducing page redirections and improving the payment experience.
    • If choosing to use normalUrl, redirect your buyer to the address specified by normalUrl and proceed the payment process as indicated in User experience.
  • For Web, WAP, and App terminals, normalUrl is returned in the response of the pay API. The buyer is redirected to the address specified by normalUrl and uses the payment code displayed on the page to proceed with the payment. The buyer completes the payment by scanning the code on the mobile phone, and the middle page automatically redirects to the merchant result page.
  • Different terminal types have specific integration features when returning normalUrl.
    • WAP: The returned normalUrl is the payment code and payment operation display page. The buyer takes a screenshot of the QR code first, and manually opens the specific payment method app to identify and pay.
    • App: The returned normalUrl does not trigger the payment method app. It is recommended to render the URL page directly within the merchant app and provide payment operation steps to guide the buyer to complete the payment.

After payments

  • After the buyer completes the payment in the bank app, the banking app will not automatically redirect to the merchant's results page. The buyer needs to manually navigate to the transaction initiation app (the merchant app or browser).
  • This payment method does not support refunds. It is recommended that you communicate directly with the buyer offline.
  • Obtain the payment result from the payment result notification (notifyPayment) or by making inquiries (inquiryPayment). Handle the redirection and display of the payment result page to avoid duplicate payments.

Default timeout

  • The QR code returned by Antom will not be refreshed automatically. When displaying the QR code, add the expireTime parameter in the API response to display the timeout time. When displaying the payment code, enable the copy function for the payment code and allow the buyer to conveniently paste the payment code into the payment method app.
  • The default timeout is 5 minutes, and customization of the order timeout through the paymentExpiryTime parameter is not supported. If the order timeout is set to less than 5 minutes, it may result in a situation where the merchant closes the order while the buyer is still able to complete the payment, leading to potential payment discrepancies.

Response sample

The following is a code example in the payment response:

copy
{
    "normalUrl": "https://iexpfront-sea-global.alipay.com/payments/method/checkout/code.html?merchantId=188iwOYLsWM%2B3OM5i43oAN6sL7yTti1YlTOEpSbxNsmiew%3D&paymentRequestId=PqpmsKam%2BLbQyGH1KWYtA82v2t15tYwnk2OE0q4D8OE%3D&clientId=5Y607N2YJU8006726",
    "orderCodeForm": {
        "codeDetails": [
            {
                "codeValue": "https://iexpfront-sea.alipay.com/showQrImage.htm?code=lcjR2aefqftIKgIm30du1Ld7GM3W2xEb%252BW8RDmp7cNeNnRE2vIaa5pshMn2Pq4DBP3C8gm8VLPWRVLRQWjGuxUQput0bZdx%252ByXkEZoNCWBZaTG73kgHuPRzt%252FPY9iqMb9YmL6mYLUGvElNj4zblXizT77%252BvjP%252FZ8EMRBRQGTINfOUKwJp%252FtDeNFGhzRMavMrBnUSbqp25DHtaiMppf79zSYT2NtpyjykgiRhuTYy4ul%252BRKoeyWYHI27eey%252FvYlV%252BEeSjV97NW%252BR84tcnIETHYRRXBd4TsRZZSLvX52AGN4hxO5KdqrSBtwSPTFvcjEG5%252BVE4gft67ml2uT5Yi0HhAA%253D%253D&size=M&sid=188",
                "displayType": "MIDDLEIMAGE"
            }
        ],
        "expireTime": "2024-03-14T19:53:24-07:00"
    },
    "paymentActionForm": "{\"paymentActionFormType\":\"PaymentCodeForm\",\"paymentCodeExpireTime\":1710471204000,\"paymentCodeInfos\":[{\"paymentCodeDetails\":[{\"codeValue\":\"00020101021226670016COM.NOBUBANK.WWW01189360050300000862130214020900006839930303UBE51440014ID.CO.QRIS.WWW0215ID20221517570460303UBE52045499530336054035005802ID59042C2P6013Jakarta Barat610511410624601140315041299373206091113322490703A010804POSP6304A241\",\"codeValueType\":\"QRCODE\",\"displayType\":\"IMAGE\"}],\"paymentCodeInfoType\":\"PAYMENT_CODE\"}]}",
    "paymentAmount": {
        "currency": "IDR",
        "value": "50000"
    },
    "paymentCreateTime": "2024-03-14T19:48:21-07:00",
    "paymentId": "20240315194010800100188420210868487",
    "paymentRequestId": "PAY_20240315104811165",
    "redirectActionForm": {
        "method": "GET",
        "redirectUrl": "https://iexpfront-sea-global.alipay.com/payments/method/checkout/code.html?merchantId=188iwOYLsWM%2B3OM5i43oAN6sL7yTti1YlTOEpSbxNsmiew%3D&paymentRequestId=PqpmsKam%2BLbQyGH1KWYtA82v2t15tYwnk2OE0q4D8OE%3D&clientId=5Y607N2YJU8006726"
    },
    "result": {
        "resultCode": "PAYMENT_IN_PROCESS",
        "resultMessage": "payment in process",
        "resultStatus": "U"
    }
}

FAQ

  • Can I use Chinese characters in the value of the request parameters?

To ensure compatibility with the QRIS payment method, it is recommended to avoid using Chinese characters for fields in the orderDescription parameter.