Payment-method icon

Bancontact mobile for API only

Accept Bancontact payments using our APIs, and build your own payment form.

With Bancontact mobile, the shopper completes the payment in the Payconiq by Bancontact app installed on their mobile device.

Before you begin

Bancontact mobile payments are supported from Checkout API v53 or later.

Before starting your integration:

  1. Make sure that you have set up your back end implementation for making API requests.
  2. Add Bancontact mobile in your test Customer Area.
  3. Enable the bcmcmobile.urlIntent parameter in the payment response:
    • In your Customer Area, go to Developers > Additional data > under 3D Secure, select the checkbox for 3DS2 Additional Fields.

Build your payment form for Bancontact

Include Bancontact in the list of available payment methods. You don't need to collect any information from the shopper in your payment form.

If you're using the /paymentMethods endpoint to show which payment methods are available to the shopper, specify in your request:

The response contains:

  • paymentMethod.type: bcmc_mobile

We provide a Bancontact logo which you can use on your payment form. For more information, refer to Downloading logos.

Make a payment

When a shopper chooses to pay with Bancontact mobile, you need to redirect them to the Bancontact app, depending on how they are accessing your site:

  • For shoppers on desktop or laptop, present a QR code.
  • For shoppers on mobile, present a button that redirects to the Bancontact app.
  • For shoppers on tablet, you can present a QR code or a button that redirects to the Bancontact app, or both.

We recommend that you use screen size to determine whether the shopper is accessing your site on mobile, desktop, or tablet.

Follow this flow to let the shopper pay on a desktop or laptop by scanning a QR code and paying with their Bancontact app.

When the shopper selects to pay with Bancontact, make a /payments request with:

  • paymentMethod.type: bcmc_mobile
  • returnURL: The URL where the shopper is redirected back to after completing the payment.

Sample /payments request:

The /payments response contains:

    "resultCode": "Pending",
    "action": {
        "paymentData": "Ab02b4c0!BQABAgCpM2q6...==",
        "paymentMethodType": "bcmc_mobile",
        "url": "BEPGenApp://DoTx?$P5FOT6N55HYZNXVPFDGIHEJC",
        "qrCodeData": "BEP://$RYB4BPBNXDTVG3PLKTXV5OVE",
        "type": "qrCode"

After initiating the payment, the shopper has 15 minutes to complete it. We recommend that you show this timer to the shopper.

Present the QR code

Follow these steps to render the QR code on your checkout page:

  1. Use the qrCodeData from the action object to render the QR code on your checkout page.
  2. After the shopper scans the QR code and completes the payment, we send a webhook informing you of the payment result.
  3. Present the payment result to your shopper.

Present the payment result

Wait for a webhook to know the outcome of the payment. The webhooks you can receive for Bancontact mobile are:

eventCode success field Description Action to take
AUTHORISATION false The transaction failed. Do not proceed with the order. Inform the shopper that the payment failed.
AUTHORISATION true The shopper successfully completed the payment. Inform the shopper that the payment has been successful and proceed with the order.

Recurring payments

Bancontact recurring payments are not available in the test environment. To test your integration, do a penny test in the live environment instead.

We support recurring transactions for Bancontact through SEPA Direct Debit. To make recurring payments, you need to:

  1. Create a shopper token.
  2. Use the token to make future payments for the shopper.

Create a token

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

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:

  • 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.

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