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 currencies | EUR |
| Consumer currencies | EUR |
| Authentication methods | REDIRECT SCAN_CODE APP_INTENT |
| Authentication timeout | 1 hour |
| Minimum payment amount | 0.01 EUR |
| Maximum payment amount | EUR 1,500.00 for WIP recurring EUR 500.00 for WIP One-Click |
| Payment instrument | BANCONTACT_ACCOUNT |
| Recurring payments | Yes |
| Separate captures | No |
| Refund | Full - Partial - Multiple |
| Refund validity | 365 days |
| Disputes | No |
| Settlement risk | No |
How it works:
Once a consumer authorizes their initial payment, PPRO securely tokenizes their card details. This unlocks two powerful Bancontact features for merchants:
- One-Click Payments: A streamlined checkout that lets consumers complete future purchases with a single click, bypassing the need for re-authentication.
- 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 Field | Description |
|---|---|
| paymentMethod | BANCONTACT |
| consumer.name | Full name of the consumer. |
| consumer.country | The 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.value | Initial Payment Charge Amount |
| initialPaymentCharge.amount.currency | Initial 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 MerchantBancontact 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:
- Complete the application form provided by the PPRO team, including:
- Basic merchant information
- Description of the products and/or services to be offered through Bancontact WIP
- Expected transaction volumes and average transaction values
- Merchant risk management details
- Await for the Bancontact approval and PPRO feedback.
- Once approval is granted, create the merchant's first payment agreement, including the initial charge.