Recurring - Bancontact WIP (One Click)

Bancontact WIP (Wallet Initiated Payments) enables recurring payments using Bancontact cards, supporting one-click checkouts and subscription-based business models through a seamless customer experience.

Payment method properties

Markets (consumer)BE
Processing currenciesEUR
Consumer currenciesEUR
Authentication methodsREDIRECT SCAN_CODE APP_INTENT
Authentication timeout1 hour
Minimum payment amount0.01 EUR
Maximum payment amountEUR 1,500.00 for WIP recurring
EUR 500.00 for WIP One-Click
Payment instrumentBANCONTACT_ACCOUNT
Recurring paymentsYes
Separate capturesNo
RefundFull - Partial - Multiple
Refund validity365 days
DisputesNo
Settlement riskNo

How it works:

Once a consumer authorizes their initial payment, PPRO securely tokenizes their card details. This unlocks two powerful Bancontact features for merchants:

  1. One-Click Payments: A streamlined checkout that lets consumers complete future purchases with a single click, bypassing the need for re-authentication.
  2. Recurring Payments: Simplifies subscriptions by allowing merchants to automatically charge the tokenized card without needing the consumer's active involvement.

To offer Bancontact recurring and one-click payments, you must use our Payment Agreements API:

1 - Create a payment agreement with an initial charge

To create a Bancontact payment agreement, provide the following information when calling our /v1/payment-agreements API:

Data FieldDescription
paymentMethodBANCONTACT
consumer.nameFull name of the consumer.
consumer.countryThe country from which the consumer is shopping.
authenticationSettings: REDIRECT
settings.returnUrl
Add the url where the consumer should be redirected to after they complete the payment. Required for the REDIRECT payment flow.
initialPaymentCharge.amount.valueInitial Payment Charge Amount
initialPaymentCharge.amount.currencyInitial Payment Charge Currency

When creating a new payment agreement for Bancontact WIP, you must also include the initialPaymentCharge object in the agreement creation call to immediately initiate the first payment, without making a separate call.

Request

POST /v1/payment-agreements

{
    "paymentMethod": "BANCONTACT",
    "description": "PPRO Agreement",
    "merchantPaymentAgreementReference": "{{$guid}}",
    "startDate": "2025-05-27T20:24:27Z",
    "webhooksUrl":"https://webhook",
    "amount": {
        "value": 300,
        "currency": "EUR"
    },
    "amountType": "EXACT",
    "authenticationSettings": [
        {
            "type": "REDIRECT",
            "settings": {
                "returnUrl": "https://www.ppro.com/"
            }
        }
    ],
    "consumer": {
        "name": "Ernestine Bartoletti",
        "email": "[email protected]",
        "country": "BE",
        "client": {
            "ip": "227.149.145.184"
        },
        "taxIdentification": "1111111111",
        "billingAddress": {
            "firstName": "Ernestine",
            "lastName": "Bartoletti",
            "street": "Rue de Fierlant 67",
            "postalCode": "1190",
            "city": "Bruxelles",
            "region": "Bruxelles",
            "country": "BE"
        }
    },
    "initialPaymentCharge": {
        "paymentDescriptor": "Link and Pay initial charge",
        "merchantPaymentChargeReference": "MTR12345678",
        "autoCapture": "true",
        "amount": {
            "value": 300,
            "currency": "EUR"
        }
    }
}

Response

You'll receive our standard payment agreement response (see responses in the API Reference)

{
    "id": "agr_TWXXaIGRgLr5QDMiBpO5i",
    "status": "AUTHENTICATION_PENDING",
    "description": "PPRO Agreement",
    "merchantPaymentAgreementReference": "7868f408-bf21-4751-a778-b02bdef100cc",
    "paymentMethod": "BANCONTACT",
    "startDate": "2025-05-27T20:24:27.000Z",
    "amount": {
        "value": 300,
        "currency": "EUR"
    },
    "instrumentId": "instr_0J75cbDCIrhZBsuSuvdxb",
    "amountType": "EXACT",
    "consumer": {
        "name": "Ernestine Bartoletti",
        "email": "[email protected]",
        "country": "BE",
        "client": {
            "ip": "227.149.145.184"
        },
        "taxIdentification": "1111111111",
        "billingAddress": {
            "firstName": "Ernestine",
            "lastName": "Bartoletti",
            "street": "Rue de Fierlant 67",
            "postalCode": "1190",
            "city": "Bruxelles",
            "region": "Bruxelles",
            "country": "BE"
        }
    },
    "authenticationMethods": [
        {
            "details": {
                "mobileIntentUri": "bepgenapp://DoTx?TransId=1BANCONTACT.SANDBOX.CP-PL.PPRO.COM/BEP/LA/PWXISDCFTC49RYLZ7TB36DX95BQBMQHSGYXKK/1Y23YI6GUWEUXTJHUCSAVMLT4LDQRLSA1$LNLK62BMVBPWHYEOCP4J5RWY"
            },
            "type": "APP_INTENT"
        },
        {
            "details": {
                "codeType": "QR",
                "codePayload": "BEP://1BANCONTACT.SANDBOX.CP-PL.PPRO.COM/BEP/LA/PWXISDCFTC49RYLZ7TB36DX95BQBMQHSGYXKK/1Y23YI6GUWEUXTJHUCSAVMLT4LDQRLSA1$LNLK62BMVBPWHYEOCP4J5RWY"
            },
            "type": "SCAN_CODE"
        },
        {
            "details": {
                "requestUrl": "https://authman.sandbox.lp-pl.ppro.com/v0/pages/?redirection_token=eyJhbGciOiJIUzUxMiJ9.eyJzZXNzaW9uIjp7InIiOiJhZ3JfVFdYWGFJR1JnTHI1UURNaUJwTzVpIiwicyI6Imh0dHBzOi8vd3d3LnBwcm8uY29tLyIsImYiOiJodHRwczovL3d3dy5wcHJvLmNvbS8_aXNGYWlsdXJlPXRydWUiLCJtIjoicHByb19wbGF5Z3JvdW5kX21lcmNoYW50In19._G-tcKSECZePEgZlanZlNxhilzQTGMB_gSKLU4upRAP1jRoy45VtmQweHCJMRQboBZ49HXpnUoMw1XDmXcCsCg",
                "requestMethod": "GET"
            },
            "type": "REDIRECT"
        }
    ],
    "history": [
        {
            "id": "ahist_ofWEEdL98oLgvziSI6Y76",
            "status": "AUTHENTICATION_PENDING",
            "createdAt": "2025-05-26T21:49:17.042Z"
        }
    ],
    "initialPaymentChargeId": "charge_yJOAc3AHMzjIbPpLl5Kfz",
    "createdAt": "2025-05-26T21:49:17.041Z",
    "updatedAt": "2025-05-26T21:49:17.041Z"
}

2 - Create subsequent recurring charges

To initiate a subsequent recurring or one-click payments, send a request against an active agreement /v1/payment-agreements/{agreement-id}/payment-charges

Request

POST /v1/payment-agreements/{agreement-id}/payment-charges

{
    "initiator": "CONSUMER",
    "amount": {
        "value": 100,
        "currency": "EUR"
    }
}

Response

{
    "id": "charge_zV1lIZgtwA6ISVTIfVQCG",
    "paymentMethod": "BANCONTACT",
    "currency": "EUR",
    "country": "BE",
    "instrumentId": "instr_JhWD58stcyXfZtKECpJ8j",
    "status": "CAPTURED",
    "consumer": {
        "name": "Ernestine Bartoletti",
        "email": "[email protected]",
        "country": "BE",
        "client": {
            "ip": "227.149.145.184"
        },
        "taxIdentification": "1111111111",
        "billingAddress": {
            "firstName": "Ernestine",
            "lastName": "Bartoletti",
            "street": "Rue de Fierlant 67",
            "postalCode": "1190",
            "city": "Bruxelles",
            "region": "Bruxelles",
            "country": "BE"
        }
    },
    "authorizations": [
        {
            "id": "authz_5qdfMm5Eg7D2T24PK0QfJ",
            "amount": 100,
            "status": "AUTHORIZED",
            "createdAt": "2026-02-12T12:09:08.262Z",
            "updatedAt": "2026-02-12T12:09:08.262Z"
        }
    ],
    "captures": [
        {
            "id": "capture_jQV2tChAup7zr0HQyyqwH",
            "amount": 100,
            "status": "CAPTURED",
            "createdAt": "2026-02-12T12:09:08.457Z",
            "updatedAt": "2026-02-12T12:09:08.457Z"
        }
    ],
    "refunds": [],
    "voids": [],
    "createdAt": "2026-02-12T12:09:07.933Z",
    "updatedAt": "2026-02-12T12:09:08.457Z"
}
📘

Maximum Transaction amount per Merchant

Bancontact also imposes a maximum transaction amount on each Merchant after onboarding:

  • The amount of a WIP Transaction must be lower than or equal to the WIP Maximum Merchant Amount allowed for the Merchant.
  • The WIP Maximum Merchant Amount must be lower than or equal to the global WIP Maximum
    Transaction Amount.
  • Split Payments using WIP Transactions are not allowed. The Merchant is not allowed to trigger a payment for an amount that would be larger than its WIP Maximum Merchant Amount by initiating multiple WIP transactions of an amount lower than the WIP Maximum Merchant Amount.

Bancontact WIP Requirements for Merchant and Cardholder Interaction

To support Bancontact WIP, the Merchant must meet specific UX requirements on its checkout page:

  • The Merchant shall have a simple and easily accessible procedure in place to allow the Cardholder to dispute a WIP Transaction or to ask the Merchant to cancel a WIP transaction through a refund.
  • The Merchant shall have a simple and easily accessible procedure in place to allow the Cardholder to add, update or delete his Bancontact card(s) used to perform WIP transactions.
  • An electronic transaction receipt shall be sent to the Cardholder containing all mandatory transaction data as well as a clear procedure to ask the Merchant to refund this transaction or retain any future payments in the case of a recurring payment.
  • The cardholder shall have established a relationship (As a minimum, the Cardholder shall have approved the Terms and Conditions of the Merchant) with the Merchant to receive ongoing services and give permission to the Merchant to debit his account on a recurring or ad-hoc basis.

Disputes, Chargeback and Fraud Management

Bancontact WIP transactions have the same risk/authentication profile as 3DS authenticated transactions, so disputes are extremely uncommon, and there is a liability shift from the merchant to the issuer in these purchases. However, onboarding reliable merchants is extremely important, as the risk of fraudulent merchants can rely on PPRO and the PSP customer.

If Dispute or Fraudulent transactions exceed exclusion rates set by the scheme, the merchant might be excluded from Bancontact WIP, reach your account manager for more information.

Merchant onboarding to Bancontact WIP

Enrollment to Bancontact WIP is an asynchronous process that requires explicit approval from the Bancontact scheme. To enroll a merchant for Bancontact WIP, follow these steps:

  1. Complete the application form provided by the PPRO team, including:
    1. Basic merchant information
    2. Description of the products and/or services to be offered through Bancontact WIP
    3. Expected transaction volumes and average transaction values
    4. Merchant risk management details
  2. Await for the Bancontact approval and PPRO feedback.
  3. Once approval is granted, create the merchant's first payment agreement, including the initial charge.