Bancontact Wallet Initiated Payment (WIP)

๐Ÿ“˜

This feature is only available in EMEA and limited to certain acquirers.

๐Ÿ“˜

Account settings

This feature can only be used if your account has been enabled with the respective service and the Bancontact Wallet ID as well as the Bancontact Token ID set in our system.

At the same time the Bancontact switch verifies whether the merchant is allowed to execute One-Click and/or Recurring WIP transactions as per the flags that were indicated in the WIP Application Form.

Registration of WIP

Before you can initiate a customer or merchant-initiated WIP, you must complete a one-time registration by conducting a sale transaction that includes authentication through 3D-Secure. Alternatively, you may perform a transaction with a zero amount.

WIP registration can be completed using the Hosted Payment Page (Connect), the Checkout solution, or the payment REST API.

In payment REST API you will need to send the following objects under createToken object:

AttributePresenceDescription
valueOClient-supplied payment token value. Only applicable for DataVault tokenization scheme.
reusableMIf the token is reusable.
If this object is sent, then use value 'true'.
declineDuplicatesODecline duplicate payment info if client token is supplied.
If this object is sent, then use value 'false'.
customWalletRegistration.walletTypeOUse value 'BANCONTACT_WALLET'
ยดcustomWalletRegistration.authenticationMethodsCIndicating how the Cardholder was authenticated by the Merchant Wallet for transaction initiation.

An array of strings can be sent in case multiple authentication methods have been performed.

If this object is absent, then 'USERNAME_PASSWORD_PIN' will be applied.

This value can also be set during account boarding.

Please find below an example of a WIP registration:

{
  "requestType":"PaymentCardSaleTransaction",
  "transactionAmount":{
    "total":26.00,
    "currency":"EUR",
    "components":{
      "subtotal":21,
      "vatAmount":2,
      "shipping":3
    }
  },
  "paymentMethod":{
    "paymentCard":{
      "number":"606005XXXXXXX9064",
      "expiryDate":
      {
        "month":"01",
        "year":"29"
      }
    }
  }
  ,"authenticationRequest":{
    "authenticationType":"Secure3DAuthenticationRequest",
    "termURL":"https://test-url",
    "methodNotificationURL":"https://test-url-2",
    "challengeIndicator":"01",
    "challengeWindowSize":"05"
  },
  "storeId":"23xxxxx919",
  "order":{
    "orderId":"1234567890",
  },
  "transactionOrigin":"ECOM",
  "createToken":{
    "reusable":true,
    "declineDuplicates":false,
    "customWalletRegistration":{
      "walletType":"BANCONTACT_WALLET",
      "authenticationMethods":["USERNAME_PASSWORD_PIN"]
    }
  }
}

Initiation of a WIP

The initiation of a WIP itself can be done through REST API by using this endpoint: https://docs.fiserv.dev/public/reference/submitprimarytransaction

You need to send the token that was created during registration by using the requestType 'PaymentTokenSaleTransaction'. The token itself needs to be send in this object paymentMethod.paymentToken.

According to Bancontact specification a WIP can be executed either as OneClick payment (aka Express Checkout payment) or recurring payment / installment from a customer wallet loaded with Bancontact card.

One-click payment be done up to 500.00 EUR, recurring or installment can be done up to 1500.00 EUR.

Please send the following elements in the WIP to the Gateway:

AttributeValue for OneClick payment
(customer initiated)
Value for Recurring or installment
(merchant initiated transaction)
initiatorCARDHOLDERMERCHANT
sequenceSUBSEQUENTSUBSEQUENT
scheduledfalsetrue or false
authenticationRequestObject to be sent in case you want to ask the customer to authenticate via 3D-SecureN/A

Please find below examples for the various scenarios:

{
    "storeId": "2338102919",
    "requestType": "PaymentTokenSaleTransaction",
    "merchantTransactionId": "Merchant-1234",
    "transactionAmount": {
        "total": "20.0",
        "currency": "EUR"
    },
    "paymentMethod": {
        "paymentToken": {
            "value": "780A33E9-5CA1-4682-8B6B-6877EAC83326"
        }
    },
    "storedCredentials": {
        "sequence": "SUBSEQUENT",
        "scheduled": false,
        "initiator": "CARDHOLDER"
    },
     "authenticationRequest": {
        "authenticationType": "Secure3DAuthenticationRequest",
        "termURL": "https://test3.ipg-online.com/webshop/simulator/secure3d/return",
        "methodNotificationURL": "https://test3.test/notify",
        "challengeIndicator": "04",
        "challengeWindowSize": "01"
    }
}
{
    "storeId": "2338102919",
    "requestType": "PaymentTokenSaleTransaction",
    "merchantTransactionId": "Merchant-1234",
    "transactionAmount": {
        "total": "20.0",
        "currency": "EUR"
    },
    "paymentMethod": {
        "paymentToken": {
            "value": "780A33E9-5CA1-4682-8B6B-6877EAC83326"
        }
    },
    "storedCredentials": {
        "sequence": "SUBSEQUENT",
        "scheduled": false,
        "initiator": "CARDHOLDER"
    },
}
{
    "storeId": "2338102919",
    "requestType": "PaymentTokenSaleTransaction",
    "merchantTransactionId": "Merchant-1234",
    "transactionAmount": {
        "total": "20.0",
        "currency": "EUR"
    },
    "paymentMethod": {
        "paymentToken": {
            "value": "780A33E9-5CA1-4682-8B6B-6877EAC83326"
        }
    },
    "storedCredentials": {
        "sequence": "SUBSEQUENT",
        "scheduled": false,
        "initiator": "MERCHANT"
    },
}

Want a quick overview?