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.
Consumer selects the PayNow method and a QR code is presented.
Consumer logs into their bank’s mobile banking app and scans the QR code.
The consumer can also load the QR image if they save the QR in photos.
Consumer confirms the funds transfer on their mobile banking app.
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.
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 inpage_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 } }