• Documentation
  • API Reference
  • Documentation
  • API Reference
Expand All Collapse All
< BACK TO HOME
  • General
    • Introduction to APMs
    • APM Input Fields and APIs
    • APM subMethod Class
    • Account Details Capture
    • APM Countries and Currencies
  • US and Canada Guides
    • ACH
    • Interac Instant
    • Mazooma
    • PayNearMe
    • PlayPlus
      • PlayPlus (REST)
      • PlayPlus (Web SDK)
    • VIP Preferred
      • VIP Preferred (REST)
      • VIP Pref. (Web SDK/Checkout)
  • Europe Guides
    • Okto Cash
    • Open Banking
  • Global Guides
    • Apple Pay
      • Registering with Apple Pay
        • (Manually) Register in the Apple System
          • Create an Apple ID
          • Enroll in the Apple Developer Program
            • Submit an Enrollment Request
            • Complete the Enrollment Process
            • Activate your Apple Developer Program Account
          • Register a Merchant ID in the Apple System
            • Create a Merchant ID
            • Create a Payment Processing Certificate
            • Create a Merchant Identity Certificate
            • Register and Verify Your Domain
      • Nuvei Apple Pay Implementations
        • Payment Page using IFrame
        • Static Apple Pay Button
        • Static Pay Button (Web SDK)
        • Dynamic Apple Pay Button
      • Apple Pay Integration
        • Apple Pay Guide (REST API)
        • Apple Pay Guide (Web SDK)
        • Apple Pay Guide (Checkout)
        • Apple Pay Integration Testing
    • Google Pay
      • Google Pay (REST API)
      • Google Pay (Web SDK)
      • Google Pay (Checkout)
    • Neteller
    • PayPal
    • Skrill
    • Visa Checkout
  • Latin America Guides
    • PIX
    • PIX Payouts
    • STPmex
  • Asia Pacific Guides
    • Alipay HK
    • Dana
    • DragonPay
    • GCash
    • India Payouts
    • KakaoPay
    • TouchnGo
    • TrueMoney

Open Banking

On this page:
  • Introduction
  • Supported Countries
  • Supported Currencies
  • Collecting Payment Details
  • Sending the Payment Request
Attributes
  • METHOD TYPEReal-Time Bank Transfer
  • DEPOSITS
  • WITHDRAWS
  • REFUNDS

Introduction

This guide provides steps to integrate Open Banking as a Nuvei APM (alternative payment method) into your payment flows, and how to accept payments (deposits) from your customers.

Nuvei Environments

You can process Open Banking APM deposit (payment) transactions using Nuvei server-to-server REST APIs or Nuvei Web SDK calls.

Prerequisites and Notes

  • This guide assumes you have completed all account set up prerequisites, and are ready to integrate the Open Banking APM payment method into your payment flow.
  • Nuvei handles Open Banking transactions in “redirection mode”.
  • The system sends DMNs (direct merchant notifications) to ensure that you receive the results of transaction processing. You need to include a destination DMN notificationUrl in all /payment requests. You can either set the notification URL hard coded on the CPanel, or send it in each request.
  • The scope of this guide describes accepting customer payments using customer payment methods, that are not initially stored as UPOs in our system. (A UPO (user payment option) is an encrypted customer payment method record stored in the Nuvei system, representing a customer bank account or other payment method.)
  • Test credentials and testing scenarios can be provided by Nuvei if necessary. You can contact Nuvei support for assistance.

Supported Countries

  • Austria
  • Belgium
  • Estonia
  • France
  • Germany
  • Hungary
  • Latvia
  • Lithuania
  • Netherlands
  • Poland
  • Portugal
  • Spain
  • United Kingdom

Supported Currencies

  • EUR
  • GBP
  • PLN

Collecting Payment Details

  1. Follow the instructions in these steps:
    Click a tab to open…
    • For REST API
    • For Web SDK
    • For Checkout
    Retrieve a dynamic list of banks and APMs linked to your merchant account, for that country:
    1. The payment flow begins when your customer enters the amount they wish to pay on your payment page, selects Open Banking and clicks the “Pay” button (or equivalent).
    2. Send a /getSessionToken request, which generates a sessionToken.
    3. Call the /getMerchantPaymentMethods method and include the relevant countryCode parameter to narrow down results returned.

      To narrow down the list of banks to display to the customer, first determine the country in which the customer may have their bank account, either by deciding for yourself, based on the available information, or by asking the customer.


      Example /getMerchantPaymentMethods Request
      {
        "sessionToken": "<sessionToken from getSessionToken>",
        "merchantId":"<your merchantId>",
        "merchantSiteId":"<your merchantSiteId>",
        "clientRequestId": "<unique request ID in merchant system>",
        "currencyCode":"USD",
        "countryCode":"BE",
        "type":"DEPOSIT",
        "languageCode":"eng",
        "timeStamp":"<YYYYMMDDHHmmss>",
        "checksum":"<calculated checksum>"
      }

    Retrieve a dynamic list of banks and APMs linked to your merchant account, for that country:
    1. The payment flow begins when your customer enters the amount they wish to pay on your payment page, selects Open Banking and clicks the “Pay” button (or equivalent).
    2. Send an /openOrder request, which generates a sessionToken.
    3. Instantiate a Web SDK session by sending a SafeCharge() request and include the sessionToken.
    4. Now you can call the getAPMs() Web SDK method, and include the relevant countryCode to narrow down results returned.

      To narrow down the list of banks to display to the customer, first determine the country in which the customer may have their bank account, either by deciding for yourself, based on the available information, or by asking the customer.


      Example getApms() Request
      sfc.getApms({
        "currencyCode": "USD",
        "countryCode": "BE",
        "languageCode": "en"
        }, 
      
      function (res) {
        console.log(res)
      })

      The response returns all the APMs linked to your merchant account, for that countryCode.

    1. Initiate a Session This authenticates and sets up an order in the Nuvei system, by sending an /openOrder request, and returns a sessionToken.
    2. Create an HTML Placeholder This instantiates the Web SDK with the sessionToken received from the server call to /openOrder.
    3. Collect the bank and transaction details by displaying a popup for the customer to select a bank, enter the IBAN (if mandatory for the bank), accept the Terms and Conditions, and enter the amount.
    4. Use an IFrame to redirect the customer to their selected bank, so they can enter their credentials and complete the payment transaction.
      (END OF CHECKOUT FLOW)

    For REST API
    Retrieve a dynamic list of banks and APMs linked to your merchant account, for that country:
    1. The payment flow begins when your customer enters the amount they wish to pay on your payment page, selects Open Banking and clicks the “Pay” button (or equivalent).
    2. Send a /getSessionToken request, which generates a sessionToken.
    3. Call the /getMerchantPaymentMethods method and include the relevant countryCode parameter to narrow down results returned.

      To narrow down the list of banks to display to the customer, first determine the country in which the customer may have their bank account, either by deciding for yourself, based on the available information, or by asking the customer.


      Example /getMerchantPaymentMethods Request
      {
        "sessionToken": "<sessionToken from getSessionToken>",
        "merchantId":"<your merchantId>",
        "merchantSiteId":"<your merchantSiteId>",
        "clientRequestId": "<unique request ID in merchant system>",
        "currencyCode":"USD",
        "countryCode":"BE",
        "type":"DEPOSIT",
        "languageCode":"eng",
        "timeStamp":"<YYYYMMDDHHmmss>",
        "checksum":"<calculated checksum>"
      }

    For Web SDK
    Retrieve a dynamic list of banks and APMs linked to your merchant account, for that country:
    1. The payment flow begins when your customer enters the amount they wish to pay on your payment page, selects Open Banking and clicks the “Pay” button (or equivalent).
    2. Send an /openOrder request, which generates a sessionToken.
    3. Instantiate a Web SDK session by sending a SafeCharge() request and include the sessionToken.
    4. Now you can call the getAPMs() Web SDK method, and include the relevant countryCode to narrow down results returned.

      To narrow down the list of banks to display to the customer, first determine the country in which the customer may have their bank account, either by deciding for yourself, based on the available information, or by asking the customer.


      Example getApms() Request
      sfc.getApms({
        "currencyCode": "USD",
        "countryCode": "BE",
        "languageCode": "en"
        }, 
      
      function (res) {
        console.log(res)
      })

      The response returns all the APMs linked to your merchant account, for that countryCode.

    For Checkout
    1. Initiate a Session This authenticates and sets up an order in the Nuvei system, by sending an /openOrder request, and returns a sessionToken.
    2. Create an HTML Placeholder This instantiates the Web SDK with the sessionToken received from the server call to /openOrder.
    3. Collect the bank and transaction details by displaying a popup for the customer to select a bank, enter the IBAN (if mandatory for the bank), accept the Terms and Conditions, and enter the amount.
    4. Use an IFrame to redirect the customer to their selected bank, so they can enter their credentials and complete the payment transaction.
      (END OF CHECKOUT FLOW)

    The response from the request returns a list of bank names (in the fields.listValues.caption value) for you to display to the customer:
    Example /getMerchantPaymentMethods (or getApms()) Response
    {
      "paymentMethod":"apmgw_Instant_Open_Banking",
      "paymentMethodDisplayName":[
        
      ],
      "isDirect":"false",
      "countries":[
        "BE"
      ],
      "currencies":[
        "USD"
      ],
      "fields":[
        {
          "name":"ob_account_number",
          "type":"text",
          "caption":[
            {
              "language":"eng",
              "message":"Account Number"
            }
          ]
        },
        {
          "name":"ob_sort_code",
          "type":"text",
          "caption":[
            {
              "language":"eng",
              "message":"Sort Code"
            }
          ]
        },
        {
          "name":"ob_iban",
          "type":"text",
          "caption":[
            {
              "language":"en",
              "message":"IBAN"
            }
          ]
        },
        {
          "name":"instantOb_bankId",
          "type":"text",
          "caption":[
            {
              "language":"eng",
              "message":"Bank ID"
            }
          ],
          "listValues":[
            {
              "code":"ngp-bbru",
              "caption":"NextGenPSD2",
              "mandatoryFields":[
                "ob_iban"
              ]
            },
            {
              "code":"ngp-ingba",
              "caption":"ING Austria",
              "mandatoryFields":[
                
              ]
            }
          ]
        }
      ]
    }
  2. Extract a list of all the banks returned for these APMs: apmgw_Open_Banking and apmgw_Instant_Open_Banking.
    /getMerchantPaymentMethods (or getApms()) Output Parameters
    Parameter Description Examples
    paymentMethod Identifier of a Payment Method. apmgw_Open_Banking
    apmgw_Instant_Open_Banking
    fields A list of possible input fields required by a payment method provider for this Payment Method, as well as a list of mandatory input fields per fields.listValues value (in the form of a key-value pairs to be used to populate a dropdown input field). -
    fields.name Identifier of the field. ob_account_number
    ob_sort_code
    ob_iban
    ob_bank_id
    instantOb_bankId
    fields.listValues A list of values of the fields.name (to be used to populate a dropdown input field). -
    fields.listValues
    .code
    Bank code used for sending the payment request.
    Note:
    • For the "apmgw_Instant_Open_Banking" APM the bank id parameter must be: "instantOb_bankId"
    • For the "apmgw_Open_Banking" APM the bank id parameter must be: "ob_bank_id"
    ngp-bbru
    ngp-ingba
    fields.listValues
    .caption
    Bank name for display on the UI. NextGenPSD2
    ING Austria
    fields.listValues
    .mandatoryFields
    A list of fields.names, which are mandatory for this fields.listValues value (to be used to populate a dropdown input field). ob_account_number
    ob_sort_code
    ob_iban
  3. Display this list of banks, for the customer to choose the bank that holds the account they wish to pay from. The names of the banks are contained in the fields.listValues.caption value, contained in the fields.listValues array output parameter.
  4. After the customer selects a bank, retrieve the list of mandatory fields that customer must enter. The mandatory fields required for the selected bank are contained in the fields.listValues.mandatoryFields value of this array. The values in this array correspond to the values in the fields.name output parameter.

    fields array structure with mandatoryFields from the /getMerchantPaymentMethods (or getApms()) Response
    "fields"[
      "name" (String, 45),
      "type" (String, 45),
      "validationMessage" 
        ["language" (String, 2), "message" (String, 400)],
      "caption" 
        ["language" (String, 2), "message" (String, 400)],
      "listValues" [
        "code" (String, 255),
        "caption" (String),
        "mandatoryFields" 
          [(String, 45)]
      ]
    ]
  5. After the customer enters the information required by their bank, display this following important checkbox for the customer to approve before allowing them to continue:

    “By continuing, you agree to the Privacy Policy and the Terms of Nuvei’s bank connectivity provider. You will be asked by your bank to share your account details, these will only be used when necessary such as processing a refund.“

    “Privacy Policy and the Terms” must be a hyperlink to this URL: https://token.io/web-app-terms.

Sending the Payment Request

Click a tab to open…

  • For REST API
  • For Web SDK
  1. Use the data entered by the customer to send a /payment request, and include the alternativePaymentMethod block containing the relevant additional Open Banking parameters.
    • For “paymentMethod”: “apmgw_Instant_Open_Banking“, the bank id parameter must be: “instantOb_bankId“.
    • For “paymentMethod”: “apmgw_Open_Banking“, the bank id parameter must be: “ob_bank_id“.
    Example /payment Request for apmgw_Instant_Open_Banking – With Mandatory Parameter
    {
      "sessionToken": "<sessionToken from getSessionToken>",
      "merchantId": "<your merchantId>",
      "merchantSiteId": "<your merchantSiteId>",
      "userTokenId": "<unique customer identifier in merchant system>",
      "clientRequestId": "<unique request ID in merchant system>",
      "clientUniqueId": "<unique transaction ID in merchant system>",
      "currency": "USD",
      "amount": "1",
      "paymentOption": {
        "alternativePaymentMethod": {
          "paymentMethod": "apmgw_Instant_Open_Banking",
          "instantOb_bankId": "ngp-bbru",
          "ob_iban": "BE96315678901234" 
        }
      },
      "billingAddress": {
        "firstName": "ALBERTA",
        "lastName": "BOBBETHCHARLESON",
        "email": "test@nuvei.com",
        "country": "BE",
        "language": "en"
      },
      "deviceDetails": {
        "deviceType": "DESKTOP",
        "deviceName": "iPhone 5s",
        "deviceOS": "iOS 10.2",
        "browser": "safari",
        "ipAddress": "127.0.0.1"
      },
      "urlDetails": {
        "notificationUrl": "[The URL to which DMNs are sent]"
      },
      "timeStamp": "<YYYYMMDDHHmmss>",
      "checksum": "<calculated checksum>"
    }
    Example /payment Response
    {
      "reason": "",
      "orderId": "36298881",
      "transactionStatus": "REDIRECT",
      "clientRequestId": "GF1XTXTBM",
      "internalRequestId": 17817111,
      "version": "1.0",
      "merchantSiteId": "126006",
      "merchantId": "2502136204546424962",
      "clientUniqueId": "695701003",
      "errCode": 0,
      "paymentOption": {
        "redirectUrl": "https://cdn-int.safecharge.com/safecharge_resources/v1/get_to_post/index.html?eyJhengciOiJSUzI1NiJ9.eyJkZXRhaWxzIjoiNzRDQkZEODMyOUI1RDMwMjNDM0YwNUJERThGRkFEMDRGQUNEMURCQUZFMEYxM0QwMzhFQkU5RjRCMzhFMTY2RTY5NEI0QzhDMDg2RjYzMDM2RTdCMkIyREVBRjRENTIyNkM2RDg1RUE5NkI2QjIzNjEzMUVBREI0NDBGRjU0QzE0RThGM0ZCODg2QzUwQzcyMTYxMURBMkNBQzg1NzI2NjRCOEE4ODE0MThEMkJCMjBFNTAzRDE4MTRBMkJBM0M1NjM3RDBCNkFFRDU5MUVFQzk2NEQwMUE2OEFFRUQyMDBBMUJBRUQ4RUIxNDBGNEEwQkQ2OTE3MzYxMEM4Rjg1MTAwMjMxREEzQkRDNUZGMkNGOUNGRURCQkZFMTQ2REEwMDdCQUY4QUUzN0Q1Q0JEQTYzOTQyNDhGMkFEQzhFMzMyODU4NzQ5MzUyNTI2NDFFREREM0Q4ODEwQTE3RkVCNTlBMjY4ODBCMkI2NjYzRkVENjk3RjRBMDhERTFBNzVDRDdBMzk2MzBGRjJBREU1Mjk0N0FERjFFQUVFMDA4Nzg4Q0REN0RCNjM5M0QwRTNEOTFBQkVERTY3MDFBMUQ0RkU3M0M3RTQwNUQ5RjlCNzZDMUYxRjQ5QzIxMjU4RERENDVDQUFDNTNERDg4MEVBNTk2Mzk1QzBDRDQ4NUY0OTQ4M0VERURGNDJFRkQzMUJBNkIwMUYwMTFGMTVGNzAyMUI2OTRBOUQ1NTU0OEEyQ0FDNUQ3MzVBNTgyMkJCMEFDOUFCQjhBQzc1Q0UxNzc1NjI0QzY1QUQ1MDU4NTVCRDI5RjFCMjJCMDlCREExM0I1QkFFQ0ZEMTA1MUI2NTQ4QTUxQkJDNDlEOTlCQUI4MUZERjAwNzAyQTBDQ0IyQTk3MDVENzE2MkZFRUQ5RjEzN0ZGN0FGMDUwNUIyMUIwOTY2RDA2NTFFQkRDRDA1MkY0RTE4MDY5ODlCOEFBQjJDMTIxNkIzNzJDREQ5RDQ0RDQ2N0EwOEUwQjI4MkUzOTkwNjAwOTcyQ0NDNEYwQjZEMDdERDg1ODk2MDYzM0UwNkExQ0VGRTY0OEExNzBDOTA3RjA3Qzg4NDA4NDI0MzQzRjNGQjM1MDZFN0EzRkEwNkQ0MDY5M0QyQkE3MzBGQTdCNzc3NDFFQUU2NDg2NEI2NjE3MDdGMzY0MDNCMTQyOTJDMTM1NzI5NDUwQ0YxRDk3NTcxQUE5NzJDQzg1MTVGQSIsIm1lcmNoYW50X2lkIjoiU2ZDaGFyZ2UiLCJpdiI6Ijk5RTM0MEMyNzg0MkNBOTlCQkIxQzUyNzVFQUFFNURBIiwidXJsIjoiaHR0cHM6Ly9zdGFnaW5nLnZlcmlmaWVkYWNoLmNvbS9jb25zdW1lci9BY3F1aXJlSW5mb0dhdGV3YXkuZG8ifQ.EF3K5UsPQYdua_YcRd9Yefl-KemNwEMq5-EXV7QWAZUbCQglncAaAHzzlW-sxq2XcVZcZ2qbxLkQqjzkB3tItTGUDmqysL-opqOdaaz54EKeHKC5hzQIp77DucIGYQhPxfOB_eAxTOPLvZ85c3woJ37m8BH8kuJPSoAjYrZ12geEQJQx4R2VxNT3QsxxryEWZvU1yKc8mjCl011nWz6cp4LZpHIMwUwvdCMJWUeJtAxC-Q6Ec4NqP93AFki9Ln0OOvenbOEBn3UpK_BncxKu7RFOzM8w4kSf0eopKC44awlROwZaO0k0htJAUikA_W-fgeLISuMpHmWMZz6X3Ju2Bg",
        "userPaymentOptionId": "8061731",
        "card": {}
      },
      "sessionToken": "6fa38ea2-6f1a-4620-85ae-7deaf0d5f8f1",
      "userTokenId": "2J6QZH3UF9E2",
      "status": "SUCCESS"
    }

    A successful request returns a paymentOption.redirectUrl for the particular bank.

  2. Redirect the customer to that redirectUrl for the customer to enter their credential and complete the payment.
  3. Open Banking processes the request.
  4. After processing the transaction, you receive a DMN notification (sent to the urlDetails.notificationUrl parameter that you provided in the request), that includes the result of the transaction.

  1. Use the data entered by the customer to send a createPayment() request, and include the alternativePaymentMethod block containing the relevant additional Open Banking parameters, as shown below:
    Example createPayment() Request for apmgw_Instant_Open_Banking – With Mandatory Parameter

    For “paymentMethod”: “apmgw_Instant_Open_Banking“, the bank id parameter must be: “instantOb_bankId“.

    sfc.createPayment({
      "sessionToken": sessionData.sessionToken,
      "paymentOption": {
        "alternativePaymentMethod": {
          "paymentMethod": "apmgw_Instant_Open_Banking",
          "instantOb_bankId": "ngp-bbru",
          "ob_iban": "BE96315678901234"
        }
      },
      "billingAddress": {
        "country": "BE",
        "email": "test@nuvei.com"
      }
    }, function(res) {
      console.log(res);
    })
    Example createPayment() Request for apmgw_Open_Banking – No mandatory parameter

    For “paymentMethod”: “apmgw_Open_Banking“, the bank id parameter must be: “ob_bank_id“.

    sfc.createPayment({
      "sessionToken": sessionData.sessionToken,
      "paymentOption" : {
      "alternativePaymentMethod": {
        "paymentMethod": "apmgw_Open_Banking",
        "ob_bank_id": "ngp-ingba"
      }},
      "billingAddress": {
        "country": "BE",
        "email": "test@test.com"
      }
    }, 
    
    function(res) {
      console.log(res);
    })
  2. If the createPayment() request is successful, then the system automatically opens a new tab or an IFrame, redirecting the customer to their APM provider (the selected bank) site, to enter their credentials and complete the payment.
  3. To verifying the response, see the Web SDK Response Verification topic.

For REST API
  1. Use the data entered by the customer to send a /payment request, and include the alternativePaymentMethod block containing the relevant additional Open Banking parameters.
    • For “paymentMethod”: “apmgw_Instant_Open_Banking“, the bank id parameter must be: “instantOb_bankId“.
    • For “paymentMethod”: “apmgw_Open_Banking“, the bank id parameter must be: “ob_bank_id“.
    Example /payment Request for apmgw_Instant_Open_Banking – With Mandatory Parameter
    {
      "sessionToken": "<sessionToken from getSessionToken>",
      "merchantId": "<your merchantId>",
      "merchantSiteId": "<your merchantSiteId>",
      "userTokenId": "<unique customer identifier in merchant system>",
      "clientRequestId": "<unique request ID in merchant system>",
      "clientUniqueId": "<unique transaction ID in merchant system>",
      "currency": "USD",
      "amount": "1",
      "paymentOption": {
        "alternativePaymentMethod": {
          "paymentMethod": "apmgw_Instant_Open_Banking",
          "instantOb_bankId": "ngp-bbru",
          "ob_iban": "BE96315678901234" 
        }
      },
      "billingAddress": {
        "firstName": "ALBERTA",
        "lastName": "BOBBETHCHARLESON",
        "email": "test@nuvei.com",
        "country": "BE",
        "language": "en"
      },
      "deviceDetails": {
        "deviceType": "DESKTOP",
        "deviceName": "iPhone 5s",
        "deviceOS": "iOS 10.2",
        "browser": "safari",
        "ipAddress": "127.0.0.1"
      },
      "urlDetails": {
        "notificationUrl": "[The URL to which DMNs are sent]"
      },
      "timeStamp": "<YYYYMMDDHHmmss>",
      "checksum": "<calculated checksum>"
    }
    Example /payment Response
    {
      "reason": "",
      "orderId": "36298881",
      "transactionStatus": "REDIRECT",
      "clientRequestId": "GF1XTXTBM",
      "internalRequestId": 17817111,
      "version": "1.0",
      "merchantSiteId": "126006",
      "merchantId": "2502136204546424962",
      "clientUniqueId": "695701003",
      "errCode": 0,
      "paymentOption": {
        "redirectUrl": "https://cdn-int.safecharge.com/safecharge_resources/v1/get_to_post/index.html?eyJhengciOiJSUzI1NiJ9.eyJkZXRhaWxzIjoiNzRDQkZEODMyOUI1RDMwMjNDM0YwNUJERThGRkFEMDRGQUNEMURCQUZFMEYxM0QwMzhFQkU5RjRCMzhFMTY2RTY5NEI0QzhDMDg2RjYzMDM2RTdCMkIyREVBRjRENTIyNkM2RDg1RUE5NkI2QjIzNjEzMUVBREI0NDBGRjU0QzE0RThGM0ZCODg2QzUwQzcyMTYxMURBMkNBQzg1NzI2NjRCOEE4ODE0MThEMkJCMjBFNTAzRDE4MTRBMkJBM0M1NjM3RDBCNkFFRDU5MUVFQzk2NEQwMUE2OEFFRUQyMDBBMUJBRUQ4RUIxNDBGNEEwQkQ2OTE3MzYxMEM4Rjg1MTAwMjMxREEzQkRDNUZGMkNGOUNGRURCQkZFMTQ2REEwMDdCQUY4QUUzN0Q1Q0JEQTYzOTQyNDhGMkFEQzhFMzMyODU4NzQ5MzUyNTI2NDFFREREM0Q4ODEwQTE3RkVCNTlBMjY4ODBCMkI2NjYzRkVENjk3RjRBMDhERTFBNzVDRDdBMzk2MzBGRjJBREU1Mjk0N0FERjFFQUVFMDA4Nzg4Q0REN0RCNjM5M0QwRTNEOTFBQkVERTY3MDFBMUQ0RkU3M0M3RTQwNUQ5RjlCNzZDMUYxRjQ5QzIxMjU4RERENDVDQUFDNTNERDg4MEVBNTk2Mzk1QzBDRDQ4NUY0OTQ4M0VERURGNDJFRkQzMUJBNkIwMUYwMTFGMTVGNzAyMUI2OTRBOUQ1NTU0OEEyQ0FDNUQ3MzVBNTgyMkJCMEFDOUFCQjhBQzc1Q0UxNzc1NjI0QzY1QUQ1MDU4NTVCRDI5RjFCMjJCMDlCREExM0I1QkFFQ0ZEMTA1MUI2NTQ4QTUxQkJDNDlEOTlCQUI4MUZERjAwNzAyQTBDQ0IyQTk3MDVENzE2MkZFRUQ5RjEzN0ZGN0FGMDUwNUIyMUIwOTY2RDA2NTFFQkRDRDA1MkY0RTE4MDY5ODlCOEFBQjJDMTIxNkIzNzJDREQ5RDQ0RDQ2N0EwOEUwQjI4MkUzOTkwNjAwOTcyQ0NDNEYwQjZEMDdERDg1ODk2MDYzM0UwNkExQ0VGRTY0OEExNzBDOTA3RjA3Qzg4NDA4NDI0MzQzRjNGQjM1MDZFN0EzRkEwNkQ0MDY5M0QyQkE3MzBGQTdCNzc3NDFFQUU2NDg2NEI2NjE3MDdGMzY0MDNCMTQyOTJDMTM1NzI5NDUwQ0YxRDk3NTcxQUE5NzJDQzg1MTVGQSIsIm1lcmNoYW50X2lkIjoiU2ZDaGFyZ2UiLCJpdiI6Ijk5RTM0MEMyNzg0MkNBOTlCQkIxQzUyNzVFQUFFNURBIiwidXJsIjoiaHR0cHM6Ly9zdGFnaW5nLnZlcmlmaWVkYWNoLmNvbS9jb25zdW1lci9BY3F1aXJlSW5mb0dhdGV3YXkuZG8ifQ.EF3K5UsPQYdua_YcRd9Yefl-KemNwEMq5-EXV7QWAZUbCQglncAaAHzzlW-sxq2XcVZcZ2qbxLkQqjzkB3tItTGUDmqysL-opqOdaaz54EKeHKC5hzQIp77DucIGYQhPxfOB_eAxTOPLvZ85c3woJ37m8BH8kuJPSoAjYrZ12geEQJQx4R2VxNT3QsxxryEWZvU1yKc8mjCl011nWz6cp4LZpHIMwUwvdCMJWUeJtAxC-Q6Ec4NqP93AFki9Ln0OOvenbOEBn3UpK_BncxKu7RFOzM8w4kSf0eopKC44awlROwZaO0k0htJAUikA_W-fgeLISuMpHmWMZz6X3Ju2Bg",
        "userPaymentOptionId": "8061731",
        "card": {}
      },
      "sessionToken": "6fa38ea2-6f1a-4620-85ae-7deaf0d5f8f1",
      "userTokenId": "2J6QZH3UF9E2",
      "status": "SUCCESS"
    }

    A successful request returns a paymentOption.redirectUrl for the particular bank.

  2. Redirect the customer to that redirectUrl for the customer to enter their credential and complete the payment.
  3. Open Banking processes the request.
  4. After processing the transaction, you receive a DMN notification (sent to the urlDetails.notificationUrl parameter that you provided in the request), that includes the result of the transaction.

For Web SDK
  1. Use the data entered by the customer to send a createPayment() request, and include the alternativePaymentMethod block containing the relevant additional Open Banking parameters, as shown below:
    Example createPayment() Request for apmgw_Instant_Open_Banking – With Mandatory Parameter

    For “paymentMethod”: “apmgw_Instant_Open_Banking“, the bank id parameter must be: “instantOb_bankId“.

    sfc.createPayment({
      "sessionToken": sessionData.sessionToken,
      "paymentOption": {
        "alternativePaymentMethod": {
          "paymentMethod": "apmgw_Instant_Open_Banking",
          "instantOb_bankId": "ngp-bbru",
          "ob_iban": "BE96315678901234"
        }
      },
      "billingAddress": {
        "country": "BE",
        "email": "test@nuvei.com"
      }
    }, function(res) {
      console.log(res);
    })
    Example createPayment() Request for apmgw_Open_Banking – No mandatory parameter

    For “paymentMethod”: “apmgw_Open_Banking“, the bank id parameter must be: “ob_bank_id“.

    sfc.createPayment({
      "sessionToken": sessionData.sessionToken,
      "paymentOption" : {
      "alternativePaymentMethod": {
        "paymentMethod": "apmgw_Open_Banking",
        "ob_bank_id": "ngp-ingba"
      }},
      "billingAddress": {
        "country": "BE",
        "email": "test@test.com"
      }
    }, 
    
    function(res) {
      console.log(res);
    })
  2. If the createPayment() request is successful, then the system automatically opens a new tab or an IFrame, redirecting the customer to their APM provider (the selected bank) site, to enter their credentials and complete the payment.
  3. To verifying the response, see the Web SDK Response Verification topic.

Parameter Description Examples
paymentMethod Identifier of a Payment Method. apmgw_Open_Banking apmgw_Instant_Open_Banking
fields A list of possible input fields required by a payment method provider for this Payment Method, as well as list of mandatory input fields per fields.listValues value, (in form of a key-value pairs to be used to populate a dropdown input field). –
fields.name Identifier of the field. ob_account_number ob_sort_code ob_iban ob_bank_id instantOb_bankId
fields.listValues A list of values of the fields.name, (to be used to populate a dropdown input field). –
fields.listValues.code Bank code used for sending the payment request. Note:
  • For the “apmgw_Instant_Open_Banking” APM the bank id parameter must be: “instantOb_bankId”
  • For the “apmgw_Open_Banking” APM the bank id parameter must be: “ob_bank_id”
ngp-bbru ngp-ingba
fields.listValues.caption Bank name for display on the UI. NextGenPSD2 ING Austria
fields.listValues.mandatoryFields A list of fields.names which are mandatory for this fields.listValues value (to be used to populate a dropdown input field). ob_account_number ob_sort_code ob_iban

 

"fields"[
  {"name"("instantOb_bankId")
    {"listValues"[
      {"caption":"BANK NAME1"},
      {"caption":"BANK NAME2"},
    }
  }
]
2022 Nuvei. All rights reserved.