- METHOD TYPEE-wallet
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
Quick Response Code Indonesian Standard (Abbreviated as QRIS) is a standardized QR code, which facilitates cashless payments in Indonesia. With QRIS, customers can make payments by scanning the QR code using any supporting QRIS E-wallet payment application.
Supported Countries
- Indonesia
Supported Currencies
- IDR
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:
userTokenId– Unique customer identifier in merchant system.AmountpaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_QRIS“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstname,lastname,country,emailuserDetailsclass containing:firstname,lastname,country,email
Example /payment Request
{
"sessionToken": "<sessionToken from /getSessionToken>",
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"userTokenId": "<unique customer identifier in merchant system>",
"paymentOption": {
"alternativePaymentMethod": {
"paymentMethod": "apmgw_QRIS",
}
},
"currency": "IDR",
"amount": "100",
"deviceDetails": {"ipAddress": "<customer's IP address>"},
"billingAddress": {
"firstName": "John",
"lastName": "Smith",
"email": "[email protected]",
"county": "ID"
},
"userDetails": {
"firstName": "John",
"lastName": "Smith",
"email": "[email protected]",
"country": "ID"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
Example /payment Response
{
"orderId": "39143501",
"userTokenId": "<unique customer identifier in merchant system>",
"paymentOption":
{
"redirectUrl": "https://jumpbox.safecharge.com/dmz/TWOC2PRedirect/PaymentPageProxy.aspx?...",
"card": {}
},
"transactionStatus": "REDIRECT",
"sessionToken": "sessionToken from /getSessionToken",
"internalRequestId": 26441241,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"version": "1.0"
}
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in urlDetails.notificationUrl, which Nuvei recommends including in the /payment request.
1. Send a /payments Request
Perform the payment by sending a /payments request. REST 2.0 simplifies authentication and does not require creating a session token before financial transactions.
Mandatory request parameters for QRIS payments:
buyerDetails.buyerId– Unique customer identifier in the merchant’s system.amountcurrencypaymentOption.alternativePaymentMethod.name= “qris”deviceDetails.ipAddressbuyerDetailsclass containing:firstName,lastName,emailbillingAddress.countryCode
Example /payments Request (REST 2.0, QRIS)
{
"processingEntityId": "<<processingEntityId>>",
"amount": 10.5,
"currency": "IDR",
"paymentOption": {
"alternativePaymentMethod": {
"name": "qris"
}
},
"custom": {
"description": "Some description"
},
"deviceDetails": {
"ipAddress": "203.0.113.45",
"browser": {
"acceptHeader": "Y",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
"javaEnabled": false,
"language": "en-US",
"colorDepth": 24,
"screenHeight": 1080,
"screenWidth": 1920,
"timeZone": -120,
"javaScriptEnabled": true
}
},
"buyerDetails": {
"buyerId": "JohnSmith12443",
"firstName": "John",
"lastName": "JSmith",
"country": "ID",
"email": "[email protected]",
"billingAddress": {
"countryCode": "ID"
}
},
"urlDetails": {
"webhookUrl": "https://merchant.example.com/webhooks/nuvei"
}
}
Example /payments Response (Redirect)
{
"paymentId": "087331e441724a55841b28b98e102438",
"amount": 10.5,
"currency": "IDR",
"transactionType": "Sale",
"result": { "status": "redirect" },
"redirectUrl": "https://test.safecharge.com/APMNotificationGateway/TWOC2PRedirect/PaymentPageProxy.aspx?…",
"paymentOption": {
"alternativePaymentMethod": {
"name": "qris",
"paymentTokenId": "2cb4e096863d415f8acd2335dbc49dea"
}
}
}
After the transaction is processed, Nuvei sends a webhook with the transaction result to the URL provided in urlDetails.webhookUrl. REST 2.0 uses webhook notifications instead of Direct Merchant Notification (DMN) and notificationUrl.
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:
sessionTokenpaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_QRIS“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstname,lastname,email,countryuserDetailsclass containing:firstname,lastname,email,country
Example createPayment()
sfc.createPayment({
sessionToken: "<sessiontoken>",
paymentOption: {
alternativePaymentMethod: {
paymentMethod: "apmgw_QRIS",
}
},
deviceDetails: {
ipAddress: "<customer's IP address>"
},
billingAddress: {
firstName: "John",
lastName: "Smith",
email: "[email protected]",
country: "ID"
},
userDetails: {
firstName: "John",
lastName: "Smith",
email: "[email protected]",
country: "ID"
}
}, 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 the URL provided in urlDetails.notificationUrl, which Nuvei recommends including in the /openOrder request.
- The payment flow begins when the customer selects the QRIS payment method from the payment method gallery.
- The customer enters the phone, Amount and presses the Deposit button.
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 1.0
-
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:userTokenId– Unique customer identifier in merchant system.AmountpaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_QRIS“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstname,lastname,country,emailuserDetailsclass containing:firstname,lastname,country,email
Example
/paymentRequest{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "userTokenId": "<unique customer identifier in merchant system>", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_QRIS", } }, "currency": "IDR", "amount": "100", "deviceDetails": {"ipAddress": "<customer's IP address>"}, "billingAddress": { "firstName": "John", "lastName": "Smith", "email": "[email protected]", "county": "ID" }, "userDetails": { "firstName": "John", "lastName": "Smith", "email": "[email protected]", "country": "ID" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }Example
/paymentResponse{ "orderId": "39143501", "userTokenId": "<unique customer identifier in merchant system>", "paymentOption": { "redirectUrl": "https://jumpbox.safecharge.com/dmz/TWOC2PRedirect/PaymentPageProxy.aspx?...", "card": {} }, "transactionStatus": "REDIRECT", "sessionToken": "sessionToken from /getSessionToken", "internalRequestId": 26441241, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "version": "1.0" }After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in
urlDetails.notificationUrl, which Nuvei recommends including in the/paymentrequest. - REST API 2.0
-
1. Send a
/paymentsRequestPerform the payment by sending a
/paymentsrequest. REST 2.0 simplifies authentication and does not require creating a session token before financial transactions.Mandatory request parameters for QRIS payments:
buyerDetails.buyerId– Unique customer identifier in the merchant’s system.amountcurrencypaymentOption.alternativePaymentMethod.name= “qris”deviceDetails.ipAddressbuyerDetailsclass containing:firstName,lastName,emailbillingAddress.countryCode
Example
/paymentsRequest (REST 2.0, QRIS){ "processingEntityId": "<<processingEntityId>>", "amount": 10.5, "currency": "IDR", "paymentOption": { "alternativePaymentMethod": { "name": "qris" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "203.0.113.45", "browser": { "acceptHeader": "Y", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36", "javaEnabled": false, "language": "en-US", "colorDepth": 24, "screenHeight": 1080, "screenWidth": 1920, "timeZone": -120, "javaScriptEnabled": true } }, "buyerDetails": { "buyerId": "JohnSmith12443", "firstName": "John", "lastName": "JSmith", "country": "ID", "email": "[email protected]", "billingAddress": { "countryCode": "ID" } }, "urlDetails": { "webhookUrl": "https://merchant.example.com/webhooks/nuvei" } }Example
/paymentsResponse (Redirect){ "paymentId": "087331e441724a55841b28b98e102438", "amount": 10.5, "currency": "IDR", "transactionType": "Sale", "result": { "status": "redirect" }, "redirectUrl": "https://test.safecharge.com/APMNotificationGateway/TWOC2PRedirect/PaymentPageProxy.aspx?…", "paymentOption": { "alternativePaymentMethod": { "name": "qris", "paymentTokenId": "2cb4e096863d415f8acd2335dbc49dea" } } }After the transaction is processed, Nuvei sends a webhook with the transaction result to the URL provided in
urlDetails.webhookUrl. REST 2.0 uses webhook notifications instead of Direct Merchant Notification (DMN) andnotificationUrl. - 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:sessionTokenpaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_QRIS“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:firstname,lastname,email,countryuserDetailsclass containing:firstname,lastname,email,country
Example
createPayment()sfc.createPayment({ sessionToken: "<sessiontoken>", paymentOption: { alternativePaymentMethod: { paymentMethod: "apmgw_QRIS", } }, deviceDetails: { ipAddress: "<customer's IP address>" }, billingAddress: { firstName: "John", lastName: "Smith", email: "[email protected]", country: "ID" }, userDetails: { firstName: "John", lastName: "Smith", email: "[email protected]", country: "ID" } }, 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 the URL provided in
urlDetails.notificationUrl, which Nuvei recommends including in the/openOrderrequest. - Payment Page
-
- The payment flow begins when the customer selects the QRIS payment method from the payment method gallery.
- The customer enters the phone, Amount and presses the Deposit button.
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 third-party website to complete the payment.
