- METHOD TYPECards
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
Nuvei’s Bancontact Mobile payment solution offers merchants the following options for initiating payments:
Initiation Type | Initiation Flow | Same Device Used for Purchasing and Payment | Different Devices Used for Purchasing and Payment |
---|---|---|---|
Nuvei Hosted Payment Page | Merchant redirects the user to the Nuvei’s Bancontact payment page (see User Experience), which includes both a QR code and a payment app launch button. | Yes | Yes |
QR code generation by merchant | Merchant generates a Bancontact payment QR code using the metadata received from Nuvei and presents it on their website, allowing the user to scan it with their mobile device. | No | Yes |
Payment app redirect | Merchant uses a URL received from Nuvei to redirect the user to the Bancontact payment app installed on his mobile. | Yes | No |
Supported Countries
- Belgium
Supported Currencies
- EUR
Supported Transaction Types
The Bancontact Mobile solution allows merchants and customers to perform the following transaction types:
Transaction Type | Description | Authentication Method |
---|---|---|
E-Commerce QR Code | A Card Not Present (CNP) payment transaction initiated when the customer scans a QR Code with their Bancontact mobile app (applicable for cases where different devices are used for shopping and paying). | In-app authentication (fingerprint, code, etc.) |
E-Commerce URL Intent | A Card Not Present (CNP) payment transaction initiated when the customer presses the button for opening their Bancontact mobile app (applicable for cases where the same device is used for shopping and paying). | In-app authentication (fingerprint, code, etc.) |
Refund | A full/partial credit transaction initiated using Bancontact card details or a token for product returns or purchase cancellations. | N/A |
Payout | Original credit transaction (OCT) initiated using Bancontact card details or a token for customer funding cases such as gambling winnings, insurance payouts, etc. | N/A |
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
amount
currency
paymentOption.alternativePaymentMethod
class containing:paymentMethod
: “apmgw_Bancontact_DI“
deviceDetails
class containing:ipAddress
billingAddress
class containing:firstName
,lastName
,country
,email
,address
,city
,phone
,zip
userDetails
class containing:firstName
,lastName
,country
,email
,address
,city
,phone
,zip
,dateOfBirth
,gender
urlDetails
class containing:successUrl
,failureUrl
,pendingUrl
,appUrl
Example /payment
Request
{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "clientRequestId": "<unique request ID in merchant system>", "amount": "100", "currency": "EUR", "userTokenId": "<unique customer identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_Bancontact_DI" } }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Smith", "address": "22 Main Street", "city": "Brussels", "country": "BE", "email": "[email protected]", "phone": "323094526617", "zip": "1000" }, "userDetails": { "firstName": "John", "lastName": "Smith", "address": "22 Main Street", "city": "Brussels", "country": "BE", "email": "[email protected]", "phone": "323094526617", "zip": "1000", "dateOfBirth": "2000-06-30", "gender": "Male" }, "urlDetails": { "successUrl": "<URL the customer is directed to after a successful transaction>", "failureUrl": "<URL the customer is directed to after an unsuccessful transaction>", "pendingUrl": "<URL the customer is directed to when the transaction response is pending>", "notificationUrl": "<URL to which DMNs are sent>", "appUrl": "<link to which the provider redirects the user at the end of the payment process>" }, "timeStamp": "YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }
Example /payment
Response – Nuvei Hosted Payment Page
{ "internalRequestId": 51672978106, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "427583496191624621", "merchantSiteId": "142033", "version": "1.0", "clientRequestId": "1C6CT7V1L", "sessionToken": "9e568da7-e5f7-437f-a400-848309c51e23", "clientUniqueId": "12345", "orderId": "47472448966", "userTokenId": "230811147", "paymentOption": { "redirectUrl": "https://cdn.safecharge.com/safecharge_resources/v1/qr-code-21382.html?qrCode=BEP://1BANCONTACTTMA.NUVEI.COM%2FBC%2FIPN%2FC478553BB431DACCEB6F8609D0F58AAD%2475B482599428AD3AC6D59E6B&requestDate=2023-10-03 14:18:19.850&merchantName=ProdTest&amount=1.00¤cy=EUR&orderReference=2130000314658071&orderId=47472448966&wss=wss://ws.nuvei.com&sessionid=542a20fd51ca60c8bdf8ddcb14a7", "userPaymentOptionId": "3144614656", "card": {} }, "transactionStatus": "REDIRECT" }
Example /payment
Response – QR Code Generation by Merchant
{ "internalRequestId": 51379590866, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "427583496191624621", "merchantSiteId": "142033", "version": "1.0", "clientRequestId": "1C6CT7V1L", "sessionToken": "e8baa991-9cdc-407c-841e-44597da42bd9", "clientUniqueId": "12345", "orderId": "47263813886", "userTokenId": "230811147", "paymentOption": { "redirectUrl": "BEP://1BANCONTACTTMA.NUVEI.COM/BC/IPN/757D9C02EE6B8EB2DA5928CBA0767D0C$77A8335CDBB8CC57C47CEE54", "userPaymentOptionId": "3126116956", "card": {} }, "transactionStatus": "REDIRECT" }
Example /payment
Response – Payment App Redirect
{ "internalRequestId": 51206450946, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "427583496191624621", "merchantSiteId": "142033", "version": "1.0", "clientRequestId": "1C6CT7V1L", "sessionToken": "de3a397b-7cd2-44d7-9533-36d58f19b2d1", "clientUniqueId": "12345", "orderId": "47141663766", "userTokenId": "230811147", "paymentOption": { "redirectUrl": "{\"QRCode\":\"BEP://1BANCONTACTTMA.NUVEI.COM/BC/IPN/00E155D5174EEB7799956416E468AAB0$F1C0ADCDFBC4D4507F1C27CA\",\"APPLink\":\"BEPGenApp://DoTx?TransId=1BANCONTACTTMA.NUVEI.COM/BC/IPN/00E155D5174EEB7799956416E468AAB0$F1C0ADCDFBC4D4507F1C27CA\",\"RedirectUrl\":\"https://cdn.safecharge.com/safecharge_resources/v1/qr-code-21382.html?qrCode=BEP://1BANCONTACTTMA.NUVEI.COM%2FBC%2FIPN%2F00E155D5174EEB7799956416E468AAB0%24F1C0ADCDFBC4D4507F1C27CA&requestDate=2023-09-26 16:08:26.620&merchantName=ProdTest&amount=1.00¤cy=EUR&orderReference=1120000008046520&orderId=47141663766&wss=wss://ws.nuvei.com&sessionid=19aedeab3edfc1d8369c94f5e3f3\"}", "userPaymentOptionId": "3115389756", "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.alternativePaymentMethod
class containing:paymentMethod:
“apmgw_Bancontact_DI“
deviceDetails
class containing:ipAddress
billingAddress
class containing:firstName
,lastName
,country
,email
,address
,phone
,city
,zip
userDetails
class containing:firstName
,lastName
,country
,email
,address
,phone
,city
,zip
urlDetails
class containing:successUrl
,failureUrl
,pendingUrl
,appUrl
Example createPayment()
Request
sfc.createPayment({ sessionToken: "<sessiontoken>", paymentOption : { alternativePaymentMethod: { paymentMethod: "apmgw_Bancontact_DI" }}, deviceDetails:{ ipAddress:"<customer's IP address>" }, billingAddress: { firstName: "John", lastName: "Smith", country: "BE", email:"[email protected]", phone: "323094526617", address: "22 Main Street", city: "Brussels", zip: "1000" }, userDetails: { firstName: "John", lastName: "Smith", country: "BE", email:"[email protected]", phone: "323094526617", address: "22 Main Street", city: "Brussels", zip: "1000" }, urlDetails: { successUrl: "<URL the customer is directed to after a successful transaction>", failureUrl: "<URL the customer is directed to after an unsuccessful transaction>", pendingUrl: "<URL the customer is directed to when the transaction response is pending>", notificationUrl: "<URL to which DMNs are sent>", appUrl: "<link to which the provider redirects the user at the end of the payment process>" }, }, function(res) { console.log(res); });
Example createPayment()
Response
{ "internalRequestId": 50704983196, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "5555385017539610145", "merchantSiteId": "171738", "version": "1.0", "clientRequestId": null, "hint": null, "resultStatus": null, "resultCode": null, "resultDescription": null, "sessionToken": "9f3caa1b-eb03-459e-a8ef-e31d8470a7af", "clientUniqueId": "12345", "orderId": "46784400856", "userTokenId": "testUserToken1234", "paymentOption": { "redirectUrl": "https://cdn.safecharge.com/safecharge_resources/v1/qr-code-21382.html?qrCode=BEP://1BANCONTACTTMA.NUVEI.COM%2FBC%2FIPN%2FC478553BB431DACCEB6F8609D0F58AAD%2475B482599428AD3AC6D59E6B&requestDate=2023-10-03 14:18:19.850&merchantName=ProdTest&amount=1.00¤cy=EUR&orderReference=2130000314658071&orderId=47472448966&wss=wss://ws.nuvei.com&sessionid=542a20fd51ca60c8bdf8ddcb14a7", "userPaymentOptionId": "" "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 /openOrder
request.
- REST API
-
Follow these steps to perform a payment using Nuvei REST API integration:
1. Generate a
sessionToken
Press here for details.
2. Send a
/payment
RequestPerform the payment by sending a
/payment
request with its mandatory parameters, including:userTokenId
amount
currency
paymentOption.alternativePaymentMethod
class containing:paymentMethod
: “apmgw_Bancontact_DI“
deviceDetails
class containing:ipAddress
billingAddress
class containing:firstName
,lastName
,country
,email
,address
,city
,phone
,zip
userDetails
class containing:firstName
,lastName
,country
,email
,address
,city
,phone
,zip
,dateOfBirth
,gender
urlDetails
class containing:successUrl
,failureUrl
,pendingUrl
,appUrl
Example
/payment
Request{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "clientRequestId": "<unique request ID in merchant system>", "amount": "100", "currency": "EUR", "userTokenId": "<unique customer identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_Bancontact_DI" } }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Smith", "address": "22 Main Street", "city": "Brussels", "country": "BE", "email": "[email protected]", "phone": "323094526617", "zip": "1000" }, "userDetails": { "firstName": "John", "lastName": "Smith", "address": "22 Main Street", "city": "Brussels", "country": "BE", "email": "[email protected]", "phone": "323094526617", "zip": "1000", "dateOfBirth": "2000-06-30", "gender": "Male" }, "urlDetails": { "successUrl": "<URL the customer is directed to after a successful transaction>", "failureUrl": "<URL the customer is directed to after an unsuccessful transaction>", "pendingUrl": "<URL the customer is directed to when the transaction response is pending>", "notificationUrl": "<URL to which DMNs are sent>", "appUrl": "<link to which the provider redirects the user at the end of the payment process>" }, "timeStamp": "YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }
Example
/payment
Response – Nuvei Hosted Payment Page{ "internalRequestId": 51672978106, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "427583496191624621", "merchantSiteId": "142033", "version": "1.0", "clientRequestId": "1C6CT7V1L", "sessionToken": "9e568da7-e5f7-437f-a400-848309c51e23", "clientUniqueId": "12345", "orderId": "47472448966", "userTokenId": "230811147", "paymentOption": { "redirectUrl": "https://cdn.safecharge.com/safecharge_resources/v1/qr-code-21382.html?qrCode=BEP://1BANCONTACTTMA.NUVEI.COM%2FBC%2FIPN%2FC478553BB431DACCEB6F8609D0F58AAD%2475B482599428AD3AC6D59E6B&requestDate=2023-10-03 14:18:19.850&merchantName=ProdTest&amount=1.00¤cy=EUR&orderReference=2130000314658071&orderId=47472448966&wss=wss://ws.nuvei.com&sessionid=542a20fd51ca60c8bdf8ddcb14a7", "userPaymentOptionId": "3144614656", "card": {} }, "transactionStatus": "REDIRECT" }
Example
/payment
Response – QR Code Generation by Merchant{ "internalRequestId": 51379590866, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "427583496191624621", "merchantSiteId": "142033", "version": "1.0", "clientRequestId": "1C6CT7V1L", "sessionToken": "e8baa991-9cdc-407c-841e-44597da42bd9", "clientUniqueId": "12345", "orderId": "47263813886", "userTokenId": "230811147", "paymentOption": { "redirectUrl": "BEP://1BANCONTACTTMA.NUVEI.COM/BC/IPN/757D9C02EE6B8EB2DA5928CBA0767D0C$77A8335CDBB8CC57C47CEE54", "userPaymentOptionId": "3126116956", "card": {} }, "transactionStatus": "REDIRECT" }
Example
/payment
Response – Payment App Redirect{ "internalRequestId": 51206450946, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "427583496191624621", "merchantSiteId": "142033", "version": "1.0", "clientRequestId": "1C6CT7V1L", "sessionToken": "de3a397b-7cd2-44d7-9533-36d58f19b2d1", "clientUniqueId": "12345", "orderId": "47141663766", "userTokenId": "230811147", "paymentOption": { "redirectUrl": "{\"QRCode\":\"BEP://1BANCONTACTTMA.NUVEI.COM/BC/IPN/00E155D5174EEB7799956416E468AAB0$F1C0ADCDFBC4D4507F1C27CA\",\"APPLink\":\"BEPGenApp://DoTx?TransId=1BANCONTACTTMA.NUVEI.COM/BC/IPN/00E155D5174EEB7799956416E468AAB0$F1C0ADCDFBC4D4507F1C27CA\",\"RedirectUrl\":\"https://cdn.safecharge.com/safecharge_resources/v1/qr-code-21382.html?qrCode=BEP://1BANCONTACTTMA.NUVEI.COM%2FBC%2FIPN%2F00E155D5174EEB7799956416E468AAB0%24F1C0ADCDFBC4D4507F1C27CA&requestDate=2023-09-26 16:08:26.620&merchantName=ProdTest&amount=1.00¤cy=EUR&orderReference=1120000008046520&orderId=47141663766&wss=wss://ws.nuvei.com&sessionid=19aedeab3edfc1d8369c94f5e3f3\"}", "userPaymentOptionId": "3115389756", "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. - 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
/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.alternativePaymentMethod
class containing:paymentMethod:
“apmgw_Bancontact_DI“
deviceDetails
class containing:ipAddress
billingAddress
class containing:firstName
,lastName
,country
,email
,address
,phone
,city
,zip
userDetails
class containing:firstName
,lastName
,country
,email
,address
,phone
,city
,zip
urlDetails
class containing:successUrl
,failureUrl
,pendingUrl
,appUrl
Example
createPayment()
Requestsfc.createPayment({ sessionToken: "<sessiontoken>", paymentOption : { alternativePaymentMethod: { paymentMethod: "apmgw_Bancontact_DI" }}, deviceDetails:{ ipAddress:"<customer's IP address>" }, billingAddress: { firstName: "John", lastName: "Smith", country: "BE", email:"[email protected]", phone: "323094526617", address: "22 Main Street", city: "Brussels", zip: "1000" }, userDetails: { firstName: "John", lastName: "Smith", country: "BE", email:"[email protected]", phone: "323094526617", address: "22 Main Street", city: "Brussels", zip: "1000" }, urlDetails: { successUrl: "<URL the customer is directed to after a successful transaction>", failureUrl: "<URL the customer is directed to after an unsuccessful transaction>", pendingUrl: "<URL the customer is directed to when the transaction response is pending>", notificationUrl: "<URL to which DMNs are sent>", appUrl: "<link to which the provider redirects the user at the end of the payment process>" }, }, function(res) { console.log(res); });
Example
createPayment()
Response{ "internalRequestId": 50704983196, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "5555385017539610145", "merchantSiteId": "171738", "version": "1.0", "clientRequestId": null, "hint": null, "resultStatus": null, "resultCode": null, "resultDescription": null, "sessionToken": "9f3caa1b-eb03-459e-a8ef-e31d8470a7af", "clientUniqueId": "12345", "orderId": "46784400856", "userTokenId": "testUserToken1234", "paymentOption": { "redirectUrl": "https://cdn.safecharge.com/safecharge_resources/v1/qr-code-21382.html?qrCode=BEP://1BANCONTACTTMA.NUVEI.COM%2FBC%2FIPN%2FC478553BB431DACCEB6F8609D0F58AAD%2475B482599428AD3AC6D59E6B&requestDate=2023-10-03 14:18:19.850&merchantName=ProdTest&amount=1.00¤cy=EUR&orderReference=2130000314658071&orderId=47472448966&wss=wss://ws.nuvei.com&sessionid=542a20fd51ca60c8bdf8ddcb14a7", "userPaymentOptionId": "" "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/openOrder
request.
Payout (Withdrawal) Flow
You can perform a payout using a previously captured UPO (where the UPO was returned from a previous /payment
request).
Send a /payout
request with its mandatory parameters including:
userTokenId
- A previously generated
userPaymentOptionId
Example /payout
Request with UPO
{ "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "userTokenId": "<unique user identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "clientRequestId": "<unique request ID in merchant system>", "amount": "200", "currency": "EUR", "userPaymentOption": { "userPaymentOptionId": "<UPO received from a previous request>" }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }
Example /payout
Response with UPO
{ "userTokenId":"EV013", "clientUniqueId":"20230329125742", "transactionStatus":"APPROVED", "gwErrorCode":0, "gwExtendedErrorCode":0, "userPaymentOptionId":"80244118", "externalTransactionId":"", "transactionId":"711000000021780909", "cardData":{ "acquirerId":"19", "visaDirect":"NO" }, "internalRequestId":639118498, "status":"SUCCESS", "errCode":0, "reason":"", "merchantId":"979047831696752006", "merchantSiteId":"217268", "version":"1.0" }
After the transaction is processed, Nuvei sends a DMN that includes the result of the transaction to urlDetails.notificationUrl
, which Nuvei recommends including in the /payout
request.
For more details, please see Payout.
User Experience
Nuvei-Hosted Payment Page
- The user is redirected to a payment page.
- The user either presses Use the app or scans the QR code with the Payconiq by Bancontact mobile app to proceed to payment.
- In the app, the user:
-
- Reviews and confirms the transaction and merchant details.
- Performs in-app authentication (PIN code, fingerprint, and so on).
- Chooses a card for payment.
A successful/failed transaction message appears on the screen.