Payment-method icon

Bancontact mobile Component

Add Bancontact mobile to an existing Components integration.

This page explains how to add Bancontact to your existing iOS Components integration.

Our iOS Component renders Bancontact in your payment form, and redirects the shopper to the Bancontact app depending on how they are accessing your app:

  • For shoppers on mobile, the shopper is switched to the Bancontact app. If this fails, the shopper is presented a QR code as a fallback.
  • For shoppers on tablet, the shopper is presented with both a QR code and a button to switch to the Bancontact app.

Requirements

Requirement Description
Integration type Make sure that you have built your iOS Components integration.
Setup steps Before you begin:

API reference

You do not need to send additional fields for Bancontact. To see optional fields that you can send for all payment methods, choose the endpoint you integrated:

Component configuration

v5.0.0 or later

If your integration uses iOS Components v5.0.0 or later, configure and create an instance of the Bancontact Component:

Component configuration
Expand view
Copy link to code block
Copy code
Copy code
let paymentMethods = session.sessionContext.paymentMethods
// Check that the payment method is supported before showing the Component.
guard let paymentMethod = paymentMethods.paymentMethod(ofType: .other("bcmc_mobile")) else { return }
let component = InstantPaymentComponent(paymentMethod: paymentMethod,
context: context,
order: nil)
self.currentComponent = component
// Set the session as the delegate.
component.delegate = session
component.initiatePayment()

v4.x.x

If your integration uses an earlier version of iOS Components:

Component configuration
Expand view
Copy link to code block
Copy code
Copy code
// Check that the payment method is supported before showing the Component.
guard let paymentMethod = paymentMethods.paymentMethod(ofType: PaymentMethod.self) else { return }
let style = FormComponentStyle()
let component = Component(paymentMethod: paymentMethod,
apiContext: context,
style: style)
present(component)

There are no configuration steps specific to Bancontact required for Components.

Recurring payments

Bancontact supports tokenization for recurring payments.

We strongly recommend that you ask explicit permission from the shopper if you intend to make future recurring payments. Being transparent about the payment schedule and the charged amount reduces the risk of SEPA Direct Debit chargebacks.

You can use recurring transactions through the Bancontact Wallet Initiated Program (WIP) and SEPA Direct Debit.

Bancontact Wallet Initiated Program

The Bancontact Wallet Initiated Program (WIP) is a service that streamlines checkout and supports subscription-based billing. It offers the following:

  • Bancontact One-Click Pay to speed up checkout and boost conversion rates
  • Bancontact Recurring to support merchant-initiated recurring or subscription payments

You have to sign up to be able to use this service and not all companies are eligible to use Bancontact WIP. To enable Bancontact WIP, contact our Support Team.

When you enable Bancontact WIP, transaction amount limits apply to ensure controlled and secure payments.

Shoppers go through Strong Customer Authentication (SCA) one time when they complete their first transaction and give their consent. Subsequent transactions do not require SCA, which reduces friction and improves the checkout flow. Because the transaction goes through SCA, there is a liability shift.

Make a recurring payment

To make recurring payments, you need to:

  1. Create a shopper token.
  2. Use the token to make future payments for the shopper.
Bancontact recurring payments are not available in the test environment. To test your integration, do a penny test in the live environment instead.

Create a token

To create a token, include in your /sessions or /payments request:

  • storePaymentMethod: true
  • shopperReference: Your unique identifier for the shopper (minimum length three characters).

When the payment has been settled, you receive a webhook containing:

  • eventCode: RECURRING_CONTRACT
  • originalReference: The pspReference of the initial payment.
  • pspReference: This is the token that you need to make recurring payments for this shopper.

Make sure that your server is able to receive RECURRING_CONTRACT as part of your standard webhooks. You can enable the RECURRING_CONTRACT event code in the webhook settings page.

Make a payment with a token

To make a payment with the token, include in your /payments request:

  • paymentMethod.storedPaymentMethodId: The pspReference from the RECURRING_CONTRACT. You can also get this value by using the /listRecurringDetails endpoint.
  • shopperReference: The unique shopper identifier that you specified when creating the token.
  • shopperInteractionContAuth.
  • recurringProcessingModel: Subscription or UnscheduledCardOnFile.

For more information about the shopperInteraction and recurringProcessingModel fields, refer to Tokenization.

The following example shows a recurring Subscription payment using SEPA Direct Debit.

Expand view
Copy link to code block
Copy code
Copy code
curl https://checkout-test.adyen.com/checkout/v68/payments \
-H 'x-api-key: ADYEN_API_KEY' \
-H 'content-type: application/json' \
-d '{
"amount":{
"value":1000,
"currency":"EUR"
},
"paymentMethod":{
"type":"sepadirectdebit",
"recurringDetailReference":"7219687191761347"
},
"reference":"YOUR_ORDER_NUMBER",
"merchantAccount":"YOUR_MERCHANT_ACCOUNT",
"shopperReference":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
"shopperInteraction":"ContAuth",
"recurringProcessingModel": "Subscription"
}'

Test and go live

Bancontact does not have a test platform, but you can simulate authorized or declined payments.

To simulate authorized or declined payments, make a test payment using the following last three digits for the payment amount:

Amount ending in Description Result
000 Simulates an approved transaction within fifteen seconds. Authorised
123 Simulates a refused transaction within fifteen seconds. Refused

Any other scenarios must be tested in the live environment using real payment details and small amounts.

Before you can accept live payments, you need to submit a request for Bancontact in your live Customer Area.

See also