Skip to main content

Documentation

PayNow QR

Transfer bank funds in Singapore using a QR code.

What Is PayNow QR?

PayNow is an electronic payment method in Singapore using QR (Quick Response) codes to make direct bank transfers to merchants and person-to-person transfers. It allows users to transfer funds from one bank account to another in Singapore through FAST. The service is free to all retail customers.

Participating banks include:

  • Bank of China

  • Citibank Singapore Limited

  • DBS Bank/POSB Credit Card

  • HSBC Bank (Singapore) Limited

  • ICICI Bank Limited Singapore

  • Maybank Singapore Limited

  • OCBC Bank

  • Standard Chartered Bank (Singapore) Limited

  • United Overseas Bank

User Experience

A consumer adds a product to the cart and continues to the checkout page. The consumer chooses to pay with PayNow. The consumer is then redirected the Rapyd Checkout page, or the merchant shows the PayNow QR on their page using the QR returned in the Rapyd API, Create Payment.

  1. Consumer selects the PayNow method and a QR code is presented.

  2. Consumer logs into their bank’s mobile banking app and scans the QR code.

  3. The consumer can also load the QR image if they save the QR in photos.

    643e7f19525fb.png
  4. Consumer confirms the funds transfer on their mobile banking app.

    643e7f1cb549f.png
  5. Once the payment is complete, Rapyd sends a completed payment webhook to you. You can notify the user of any confirmed details.

PayNow QR Details

Payment Method Category

Bank Transfer

Payment Request String

PMT = sg_paynow_bank

PMT Name = paynow

Country

Singapore

Presentment Currency

SGD

Refunds/Reversal

Yes, refunds are only supported up to 30 days from the original transaction.

If refunds are initiated more than 30 days from the original transaction, refunds will fail.

Refer to Client Portal to view refunds.

Recurring Payments

No

Disputes/Chargebacks

No

Transaction Limits

Max: $200,000 SDG, or depends on bank limits

Note: PayNow transfer may require Transaction Signing (2FA) for higher amounts. Please check with your bank.

Settlement Timeframe

Same Day

Rapyd Guide

See Bank Transfers

Create Payment

Create a payment to send funds where the QR code is returned in the Create Payment API response.

    • Response

      • //Request POST https://sandboxapi.rapyd.net/v1/payments
        
        {
        "amount": 10, 
        "currency": "SGD", 
        "payment_method": {
          "type": "sg_paynow_bank",
          "fields": {}
          } 
        }

Note: The PayNow QR code will return in **visual_codes.payNowQR** in the API response as base64 png encoded format.

Create Checkout Page

You can create a checkout page which will display the PayNow QR on the URL page.

    • Request

      • //Request POST https://sandboxapi.rapyd.net/v1/checkout
        
        {
        "complete_payment_url": "www.merchant.com/complete",
        "cancel_payment_url": "www.merchant.com/cancel", "payment_method_types_include":[ 
         " sg_paynow_bank"] 
        }
Redirect to Rapyd Checkout Page

You can set up the merchant page to redirect the consumer to a Rapyd checkout page. After the QR is scanned, the user needs to click on the Finish button which will redirect the user to the complete_payment_url. You will receive the webhook (payment_completed) before showing the status to the user.

Add Expiration Date

You can add an expiration date to your PayNow QR codes. If the consumer doesn’t scan and send a payment within the given time the attempt will fail.

643e7f1e46be5.png

Request

Create Checkout Page describes the parameters in the request.

    • Request

      • {
            "amount": 123.45,
            "complete_payment_url": "http://example.com/complete",
            "country": "SG",
            "currency": "SGD",
            "error_payment_url": "http://example.com/error",
            "merchant_reference_id": "950ae8c6-78",
            "cardholder_preferred_currency": true,
            "language": "en",
            "metadata": {
                "merchant_defined": true
            },
            "payment_method_types_include": [
                "sg_paynow_bank"
            ],
            "expiration": 1611384431,
            "payment_method_types_exclude": []

Response

Checkout Page Object describes the fields in the response.

  • The page returns in redirect_url expiration date returns in page_expiration

    • Response

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "9e749eb7-6ffa-4497-9876-247eacf98b6b"
            },
            "data": {
                "id": "checkout_01e57a11472c3868937d8e072d7f56d2",
                "country": "SG",
                "currency": "SGD",
                "amount": 123.45,
                "status": "NEW",
                "payment": {
                    "id": "",
                    "amount": 123.45,
                    "original_amount": 0,
                    "is_partial": false,
                    "currency_code": "SGD",
                    "country_code": "SG",
                    "status": "",
                    "description": "Payment via Checkout",
                    "merchant_reference_id": "950ae8c6-78",
                    "customer_token": "",
                    "expiration": 1611384431,
                    "captured": false,
                    "refunded": false,
                    "refunded_amount": 0,
                    "receipt_email": "",
                    "redirect_url": "",
                    "complete_payment_url": "http://example.com/complete",
                    "error_payment_url": "http://example.com/error",
                    "receipt_number": "",
                    "flow_type": "",
                    "address": null,
                    "statement_descriptor": "",
                    "transaction_id": "",
                    "created_at": 0,
                    "metadata": {
                        "merchant_defined": true
                    },
                    "failure_code": "",
                    "failure_message": "",
                    "paid": false,
                    "paid_at": 0,
                    "dispute": null,
                    "refunds": null,
                    "order": null,
                    "outcome": null,
                    "visual_codes": {},
                    "textual_codes": {},
                    "instructions": {},
                    "ewallet_id": null,
                    "ewallets": [],
                    "payment_method_options": {},
                    "payment_method_type": "",
                    "payment_method_type_category": "bank_transfer",
                    "fx_rate": "",
                    "merchant_requested_currency": null,
                    "merchant_requested_amount": null,
                    "payment_fees": null,
                    "invoice": "",
                    "escrow": null
                },
                "payment_method_type": "",
                "payment_method_type_categories": null,
                "payment_method_types_include": [
                    "sg_paynow_bank"
                ],
                "payment_method_types_exclude": [],
                "customer": "",
                "customer_default_payment_method": "",
                "customer_data": null,
                "country_name": "Singapore",
                "merchant_color": "",
                "merchant_website": "http://rapyd.net",
                "merchant_logo": "",
                "merchant_alias": "Test Merchant",
                "merchant_customer_support": {
                    "email": null,
                    "url": null,
                    "phone_number": null
                },
         
                "language": "en",
                "complete_checkout_url": "",
                "cancel_checkout_url": "",
                "redirect_url": "https://sandboxcheckout.rapyd.net?token=checkout_01e57a11472c3868937d8e072d7f56d2",
                "timestamp": 1612562418,
                "page_expiration": 1613772018,
                "cart_items": [],
                "complete_checkout_auto_redirect": false
            }
        }