- METHOD TYPEE-wallet
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
DuitNow is a Malaysian real-time payments network managed by Malaysia’s central payment authority, PayNet, that allows customers to make a payment and receive funds from any participating bank and eWallet using a QR code.
DuitNow supports partial refunds.
Supported Countries
- Malaysia
Supported Currencies
- MYR
Payment (Deposit) Flow
Press tab to open…
Follow these steps to perform a payment using Nuvei REST API integration:
1. Generate a sessionToken
Press here for details.
2. Send a /payment Request
Perform the payment by sending a /payment request with its mandatory parameters including:
userTokenIdamountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_DuitNow“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,email,country,phoneuserDetailsclass containing:firstName,lastName,email,country,phone
Example /payment Request
{
"sessionToken":"<sessionToken from /getSessionToken>",
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"clientRequestId":"<unique request ID in merchant system>",
"amount":"200",
"currency":"MYR",
"userTokenId":"<unique customer identifier in merchant system>",
"clientUniqueId":"<unique transaction ID in merchant system>",
"paymentOption":{
"alternativePaymentMethod":{
"paymentMethod":"apmgw_DuitNow"
}
},
"deviceDetails":{
"ipAddress":"<customer's IP address>"
},
"billingAddress":{
"firstName": "John",
"lastName": "Smith",
"email":"[email protected]",
"country": "MY",
"phone":"6175551414"
},
"userDetails":{
"firstName": "John",
"lastName": "Smith",
"email":"[email protected]",
"country": "MY",
"phone":"6175551414"
},
"timeStamp":"<YYYYMMDDHHmmss>",
"checksum":"<calculated checksum>"
}
The response generates and returns a redirect URL (redirectUrl) to redirect the customer to the payment page, as well as a UPO (userPaymentOptionId) for use in future transactions.
Example /payment Response
{
"internalRequestId": 1048812248,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "979047831696752006",
"merchantSiteId": "217268",
"version": "1.0",
"clientRequestId": "20240508091256",
"sessionToken": "6aab4a31-1b46-4c5d-aa91-e31c5a71978c",
"clientUniqueId": "20180327175242",
"orderId": "442228258",
"userTokenId": "TestToken",
"paymentOption": {
"redirectUrl": "https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=535B6DB4E5D58D45D134DCC215FC79D2.27140076",
"userPaymentOptionId": "110890658",
"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.
Follow these steps to perform a payment using Nuvei Web SDK integration.
1. Initiate a Session
Before you can submit payment using the client-side Nuvei Web SDK, you need to send the /openOrder API call.
2. Initialize the Web SDK
Instantiate the Web SDK with the sessionToken received from the server call to /openOrder.
3. Create an APM Payment
Send a createPayment() request with its mandatory parameters including:
paymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_DuitNow“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,email,country,phoneuserDetailsclass containing:firstName,lastName,email,country,phone
Example createPayment() Request
sfc.createPayment({
sessionToken: "<sessiontoken>",
paymentOption: {
alternativePaymentMethod: {
paymentMethod: "apmgw_DuitNow",
}
},
deviceDetails:{
ipAddress:"<customer's IP address>"
},
billingAddress: {
firstName: "John",
lastName: "Smith",
email: "[email protected]",
country: "MY",
phone:"6175551414"
},
userDetails: {
firstName: "John",
lastName: "Smith",
email: "[email protected]",
country: "MY",
phone:"6175551414"
},
}, 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.
Example Payment Page Request
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to notify_url, which Nuvei recommends including in the request.
- REST API
-
Follow these steps to perform a payment using Nuvei REST API integration:
1. Generate a
sessionTokenPress here for details.
2. Send a
/paymentRequestPerform the payment by sending a
/paymentrequest with its mandatory parameters including:userTokenIdamountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_DuitNow“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,email,country,phoneuserDetailsclass containing:firstName,lastName,email,country,phone
Example
/paymentRequest{ "sessionToken":"<sessionToken from /getSessionToken>", "merchantId":"<your merchantId>", "merchantSiteId":"<your merchantSiteId>", "clientRequestId":"<unique request ID in merchant system>", "amount":"200", "currency":"MYR", "userTokenId":"<unique customer identifier in merchant system>", "clientUniqueId":"<unique transaction ID in merchant system>", "paymentOption":{ "alternativePaymentMethod":{ "paymentMethod":"apmgw_DuitNow" } }, "deviceDetails":{ "ipAddress":"<customer's IP address>" }, "billingAddress":{ "firstName": "John", "lastName": "Smith", "email":"[email protected]", "country": "MY", "phone":"6175551414" }, "userDetails":{ "firstName": "John", "lastName": "Smith", "email":"[email protected]", "country": "MY", "phone":"6175551414" }, "timeStamp":"<YYYYMMDDHHmmss>", "checksum":"<calculated checksum>" }The response generates and returns a redirect URL (
redirectUrl) to redirect the customer to the payment page, as well as a UPO (userPaymentOptionId) for use in future transactions.Example
/paymentResponse{ "internalRequestId": 1048812248, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "979047831696752006", "merchantSiteId": "217268", "version": "1.0", "clientRequestId": "20240508091256", "sessionToken": "6aab4a31-1b46-4c5d-aa91-e31c5a71978c", "clientUniqueId": "20180327175242", "orderId": "442228258", "userTokenId": "TestToken", "paymentOption": { "redirectUrl": "https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=535B6DB4E5D58D45D134DCC215FC79D2.27140076", "userPaymentOptionId": "110890658", "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/paymentrequest. - Web SDK
-
Follow these steps to perform a payment using Nuvei Web SDK integration.
1. Initiate a Session
Before you can submit payment using the client-side Nuvei Web SDK, you need to send the
/openOrderAPI call.2. Initialize the Web SDK
Instantiate the Web SDK with the
sessionTokenreceived from the server call to/openOrder.3. Create an APM Payment
Send a
createPayment()request with its mandatory parameters including:paymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_DuitNow“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstName,lastName,email,country,phoneuserDetailsclass containing:firstName,lastName,email,country,phone
Example
createPayment()Requestsfc.createPayment({ sessionToken: "<sessiontoken>", paymentOption: { alternativePaymentMethod: { paymentMethod: "apmgw_DuitNow", } }, deviceDetails:{ ipAddress:"<customer's IP address>" }, billingAddress: { firstName: "John", lastName: "Smith", email: "[email protected]", country: "MY", phone:"6175551414" }, userDetails: { firstName: "John", lastName: "Smith", email: "[email protected]", country: "MY", phone:"6175551414" }, }, 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/openOrderrequest. - Payment Page
-
Example Payment Page Request
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to
notify_url, which Nuvei recommends including in the request.
User Experience
- The user is redirected to the DuitNow QR code page.

- The user logs into the desired account or eWallet.

- The user scans the QR code.
- After reviewing the payment details, the user confirms the payment and enters the PIN.

- The payment final status appears.
