Bancontact Wallet Initiated Payment (WIP)

📘

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

Bancontact Wallet Initiated Payments (WIP)

Bancontact Wallet Initiated Payments (WIP) allow a merchant wallet to initiate follow-up payments from a customer wallet that contains a Bancontact card. The feature is available only in EMEA and only for merchants and acquirers enabled for Bancontact WIP.

Account Setup

Before using Bancontact WIP, your account must be enabled for the required services:

  • Bancontact card acceptance
  • 3-D Secure authentication
  • Payment token creation
  • Bancontact WIP configuration

Your account must also be configured with the Bancontact WIP merchant identifier and the Bancontact WIP token assigned during onboarding. These values are configured by our gateway; they are not sent in each transaction request.

Bancontact or the acquirer may decline WIP transactions if the merchant is not approved for the requested WIP use case, such as one-click or recurring payments.

Supported Use Cases

Bancontact WIP supports two follow-up payment scenarios:

Use caseDescriptionTypical stored credential values
One-click paymentCustomer-initiated follow-up payment from a saved Bancontact card.sequence=SUBSEQUENT, scheduled=false, initiator=CARDHOLDER
Recurring or installment paymentMerchant-initiated follow-up payment from a saved Bancontact card.sequence=SUBSEQUENT, scheduled=true, initiator=MERCHANT

Bancontact scheme limits may apply. One-click payments may be authorised up to 500 EUR, and recurring or installment payments may be authorised up to 1500 EUR. These limits are enforced by the Bancontact/acquirer processing flow and may result in a decline if exceeded.

WIP Registration

Before a WIP payment can be initiated, the customer must complete a one-time registration. Registration creates a reusable payment token and stores the required Bancontact wallet authentication data for later WIP transactions.

Registration is usually completed with a sale transaction that includes 3-D Secure authentication. A zero-amount registration may be used only when it still completes the required authentication and token creation.

Registration Fields

For REST API registration, send a PaymentCardSaleTransaction with authenticationRequest and createToken.

Send the following fields in createToken:

AttributePresenceDescription
valueOptionalClient-supplied payment token value. Only applicable for DataVault tokenization.
reusableRequired for WIPMust be true for WIP, because the token is used for subsequent payments.
declineDuplicatesOptionalSet to false when duplicate payment information should not be declined.
customWalletRegistrationOptionalInclude this object when registering a Bancontact wallet.
customWalletRegistration.walletTypeRequired when customWalletRegistration is sentMust be BANCONTACT_WALLET.
customWalletRegistration.authenticationMethodsOptionalIndicates how the cardholder was authenticated by the merchant wallet. If omitted, the configured account value is used. If no account value is configured, USERNAME_PASSWORD_PIN is applied by default.

Supported authenticationMethods values:

  • USERNAME_PASSWORD_PIN
  • SECRET_KEY_HARDWARE
  • SECRET_KEY_SOFTWARE
  • LOCATION_BASED_AUTHENTICATION
  • ENVIRONMENTAL_AUTHENTICATION
  • BEHAVIORAL_AUTHENTICATION
  • BIOMETRICS_AUTHENTICATION
  • OUT_OF_BAND_USER_AUTHENTICATION

Registration Example

{
  "requestType": "PaymentCardSaleTransaction",
  "storeId": "2338102919",
  "merchantTransactionId": "wip-registration-1234",
  "transactionAmount": {
    "total": 26.00,
    "currency": "EUR",
    "components": {
      "subtotal": 21.00,
      "vatAmount": 2.00,
      "shipping": 3.00
    }
  },
  "paymentMethod": {
    "paymentCard": {
      "number": "606005XXXXXXX9064",
      "expiryDate": {
        "month": "01",
        "year": "29"
      }
    }
  },
  "authenticationRequest": {
    "authenticationType": "Secure3DAuthenticationRequest",
    "termURL": "https://www.example.com/3ds/return",
    "methodNotificationURL": "https://www.example.com/3ds/method-notification",
    "challengeIndicator": "01",
    "challengeWindowSize": "05"
  },
  "order": {
    "orderId": "1234567890"
  },
  "transactionOrigin": "ECOM",
  "createToken": {
    "reusable": true,
    "declineDuplicates": false,
    "customWalletRegistration": {
      "walletType": "BANCONTACT_WALLET",
      "authenticationMethods": [
        "USERNAME_PASSWORD_PIN"
      ]
    }
  }
}

The response contains the payment token that must be stored by the merchant and used for later WIP initiation.

WIP Initiation

After registration, initiate a WIP payment by submitting a primary transaction with:

  • requestType set to PaymentTokenSaleTransaction
  • paymentMethod.paymentToken.value set to the token created during registration
  • storedCredentials set according to the WIP use case

Do not include authenticationRequest in the standard WIP initiation request. The initial WIP registration already captured the required authentication data. If the customer must authenticate again with 3-D Secure, handle that as a separate authenticated token payment flow rather than the standard WIP initiation flow.

Stored Credential Values

AttributeOne-click paymentRecurring or installment payment
storedCredentials.sequenceSUBSEQUENTSUBSEQUENT
storedCredentials.scheduledfalsetrue
storedCredentials.initiatorCARDHOLDERMERCHANT

For subsequent payments, include a reference returned from the initial registration where available:

  • storedCredentials.referencedSchemeTransactionId, or
  • storedCredentials.referencedTransactionLinkIdentifier

One-Click WIP Example

{
  "requestType": "PaymentTokenSaleTransaction",
  "storeId": "2338102919",
  "merchantTransactionId": "wip-oneclick-1234",
  "transactionAmount": {
    "total": 20.00,
    "currency": "EUR"
  },
  "paymentMethod": {
    "paymentToken": {
      "value": "780A33E9-5CA1-4682-8B6B-6877EAC83326"
    }
  },
  "transactionOrigin": "ECOM",
  "storedCredentials": {
    "sequence": "SUBSEQUENT",
    "scheduled": false,
    "initiator": "CARDHOLDER",
    "referencedSchemeTransactionId": "019087868716215"
  }
}

Recurring WIP Example

{
  "requestType": "PaymentTokenSaleTransaction",
  "storeId": "2338102919",
  "merchantTransactionId": "wip-recurring-1234",
  "transactionAmount": {
    "total": 35.00,
    "currency": "EUR"
  },
  "paymentMethod": {
    "paymentToken": {
      "value": "780A33E9-5CA1-4682-8B6B-6877EAC83326"
    }
  },
  "transactionOrigin": "ECOM",
  "storedCredentials": {
    "sequence": "SUBSEQUENT",
    "scheduled": true,
    "initiator": "MERCHANT",
    "referencedSchemeTransactionId": "019087868716215"
  }
}
Want a quick overview?