- METHOD TYPEE-commerce
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
PayNow is a real-time payment system developed by the Association of Banks in Singapore (ABS). The interface facilitates interbank peer-to-peer and person-to-merchant transactions. PayNow is supported by all major Singaporean banks.
Supported Countries
- Singapore
Supported Currencies
- SGD
REST API 1.0
Payment (Deposit) Flow
To perform a payment using Nuvei REST API 1.0 integration:
- Generate a
sessionToken. - Send a
/paymentrequest with mandatory parameters, including:
-
userTokenIdamountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_PayNow“
deviceDetailsclass containing:ipAddress
billingAddressclass containing:firstNamelastNamecountryemail
userDetailsclass containing:firstNamelastNamecountryemail
Example /payment Request
{
"sessionToken": "<sessionToken from getSessionToken>",
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"clientRequestId": "<unique request ID in merchant system>",
"amount": "200",
"currency": "SGD",
"userTokenId": "<unique customer identifier in merchant system>",
"clientUniqueId": "<unique transaction ID in merchant system>",
"paymentOption": {
"alternativePaymentMethod": {
"paymentMethod": "apmgw_PayNow"
}
},
"billingAddress": {
"firstName": "John",
"lastName": "Smith",
"country": "SG",
"email": "[email protected]"
},
"deviceDetails": {
"ipAddress": "<customer's IP address>"
},
"userDetails": {
"firstName": "John",
"lastName": "Smith",
"country": "SG",
"email": "[email protected]"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
The response generates and returns a redirect URL (redirectUrl) to redirect the customer to the payment page and a UPO (userPaymentOptionId) for use in future transactions.
Example /payment Response
{
"internalRequestId": 34773871,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "5634436935940029474",
"merchantSiteId": "242181",
"version": "1.0",
"sessionToken": "4aa9d47a-a8f5-419f-ac3a-c23cf8ad01db",
"orderId": "41421681",
"userTokenId": "test5634436935940029474",
"paymentOption": {
"redirectUrl": "https://gfp-test.erompay.com/v3/ui/payment.html?eromtoken=871810de31bd17d7c7a16f1d18a06522",
"userPaymentOptionId": "2153078001",
"card": {}
},
"transactionStatus": "REDIRECT"
}
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /payment request.
Example /payment DMN with status=APPROVED
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=40739681&userid=Ela3331121&merchant_unique_id=&customData=&productId=&first_name=John&last_name=Doe&email=ivanp%40abv.bg¤cy=SGD&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=65%2C+Overlea+str&address2=&country=Singapore%2C+Republic+of&state=Singapore&city=Singapore&zip=K0A+0A2&phone1=2432432&phone2=&phone3=&client_ip=&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=EromnetMS-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=242181&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_PAYNOW=&merchant_id=5634436935940029474&responseTimeStamp=2023-09-14.07%3A02%3A10&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=Ela3331121&userPaymentOptionId=2153007881&TransactionID=2110000000010897969&externalTransactionId=20230914832774613564&APMReferenceID=8ADC8669537EA50522056E1F149CBEB3&orderTransactionId=22374161&totalAmount=100.00&dynamicDescriptor=static+test&item_name_1=NA&item_number_1=&item_amount_1=100.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&upoRegistrationDate=20230911&type=DEPOSIT&clientRequestId=&relatedTransactionId=&sessionId=27d3a232a0bdda1105ccc3b81ef7&responsechecksum=1edcce976d52b6f5f59347b6b55cf540&advanceResponseChecksum=0ebb4c4e4d350d6ceeebcc822f0e5e4e'
REST API 2.0
Payment (Deposit) Flow
- Send a
/paymentsrequest that includes the following mandatory parameters:
-
amountcurrencypaymentOptionclass containing:alternativePaymentMethod.name: “payNow“
buyerDetailsclass containing:buyerIdfirstNamelastNameemailbillingAddressclass containing:countryCode
deviceDetailsclass containing:ipAddress
Example /payments Request
{
"processingEntityId": "<processingEntityId>",
"amount": 80,
"currency": "SGD",
"paymentOption": {
"alternativePaymentMethod": {
"name": "payNow"
},
"buyerDetails": {
"buyerId": "JohnSmith16663",
"firstName": "John",
"lastName": "JSmith",
"companyName": "Nuvei Corp",
"dateOfBirth": "1978-01-01",
"email": "[email protected]",
"phone": "+1234567889",
"billingAddress": {
"countryCode": "SG"
}
},
"urlDetails": {
"webhookUrl": "<webhookUrl>",
"successUrl": "<successUrl>",
"failureUrl": "<failureUrl>",
"pendingUrl": "<pendingUrl>"
}
},
"deviceDetails": {
"ipAddress": "192.168.2.38"
}
}
The /payments response returns the data required to redirect the customer to the PayNow payment page and includes a paymentTokenId for use in future operations where applicable.
After the transaction is processed, Nuvei sends a webhook that includes the result of the transaction to the URL specified in paymentOption.urlDetails.webhookUrl. The webhook notifies the merchant backend of the final transaction status.
Web SDK
Payment (Deposit) Flow
To perform a payment using Nuvei Web SDK integration:
-
- Before you can submit a payment using the client-side Nuvei Web SDK, you need to send the
/openOrderAPI call to initiate a session. - Instantiate the Web SDK with the sessionToken received from the server call to
/openOrder. - Create an APM payment by sending a
createPayment()request with the mandatory parameters including:paymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_PayNow“
deviceDetailsclass containing:ipAddress
billingAddressclass containing:firstNamelastNamecountryemail
userDetailsclass containing:firstNamelastNamecountryemail
- Before you can submit a payment using the client-side Nuvei Web SDK, you need to send the
Example createPayment() Request
sfc.createPayment({
sessionToken: "<sessiontoken>",
paymentOption: {
alternativePaymentMethod: {
paymentMethod: "apmgw_PayNow"
}
},
deviceDetails: {
ipAddress: "<customer's IP address>"
},
billingAddress: {
firstName: "John",
lastName: "Smith",
country: "SG",
email: "[email protected]"
},
userDetails: {
firstName: "John",
lastName: "Smith",
country: "SG",
email: "[email protected]"
}
}, function (res) {
console.log(res);
});
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /openOrder request.
User Experience
- The user selects the relevant payment method on the cashier page.
- With the PayNow app, the user scans the PayNow QR code.

The user is redirected to a third-party page to complete the deposit.
Testing
Test credentials and testing scenarios can be provided by Nuvei if necessary. Contact Nuvei Support for assistance.