Integrate Bancontact and allow consumers to pay with a no-chargeback risk debit card.

If you use PPRO’s hosted payment page, the consumer can choose one of the following options:

  • enter the card details (3D-Secure)
  • authenticate using a mobile app (QR code, or app-to-app “URL intent”)

Payment Method Properties

Available country codesBE
Processing (Presentation) currenciesEUR
Settlement currenciesEUR
Consumer currenciesEUR
Channel member tagbcmc
Scheme name in the settlement fileBancontact/MisterCash
Minimum transaction amountEUR 0.01
Maximum transaction amountEUR 1,500 for mobile payments (URL intent and QR code)

No known limit for the standard flow
Session timeout1 hour
RefundFull and partial, multiple partial and over refunds are all available.
Refund Validity365 days
Integration TypeAsynchronous

Transaction Flow

  1. The consumer selects Bancontact as their preferred payment method.
  2. The consumer is redirected to a payment page where they are presented with an option to enter their PAN or scan a QR code.
  3. If:
    1. The consumer chooses to enter their PAN, and they are redirected to their issuing bank for a 3DS authentication.
    2. The consumer scans their QR code they confirm the payment in the Bancontact app.
  4. The merchant receives the payment confirmation of the payment.
  5. The merchant can ship the order/deliver the goods to the consumer.

Bancontact Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeDescription
specin.apptoappurlOasciiCustom app URL for redirecting the consumer back to the app, which triggered the payment. Overrides MerchantRedirectURL for mobile flows.

For standard input parameters, check Input parameters for the TRANSACTION call.

This payment method supports the dynamic descriptor field (see The dynamic descriptor).



MerchantRedirectURL is still required in the API payload when using an app to app flow and may not be localhost or equivalent.

Specific output parameters for the TRANSACTION call

Field NameTypeDescription
SPECOUT.BEPURLasciiTrigger URL for mobile payment options.

Example (contrived):


For more information regarding the mobile payment options, see the Additional Information section below.
SPECOUT.CARDBINasciiThe BIN of the Bancontact card used (first six digits of the Bancontact card)
SPECOUT.CARDLAST4DIGITSasciiThe last four digits of the Bancontact card
SPECOUT.SRCIBANasciiIBAN of the consumer’s account

Values do not vary over time. You can use this value for risk and statistics purposes.
SPECOUT.CARDTOKENasciiA unique token representing the Bancontact card. This parameter will only be exposed for Link+Pay transactions (Bancontact Wallet Initiated Payments(WIP)) if the linkage succeeded. If you use Link+Pay transactions, support for this SPECOUT being emitted without a value must be added. This means that the linkage failed; there's therefore no token for WIP transactions. These linking failures can happen in case of technical issues.

Please note the new functionality of this SPECOUT above - the existing functionality of outputting a rotating card token has been deprecated and will be replaced by the functionality above. Please use SPECOUT.SRCIBAN for uniquely identifying returning customers.
SPECOUT.TRANSACTIONFLOWasciiThe payment flow of the last attempt:

- ecommerce (card number entry and 3D -Secure)

- qrcode (payment app triggered through QR code)

- urlintent (payment app triggered through URL intent, such as app-to-app)
SPECOUT.CARDEXPIRYasciiYYMM expiry date of the card, as stored at time of initial transaction. Always shown in case of successful authorization.
SPECOUT.CARDMASKEDPANasciiTruncated version of the full card PAN inclusive of the BIN and last four digits as a single string. Sample output: 487123XXXXXX9876
SPECOUT.SRCBICasciiThe BIC of the consumer's account.
SPECOUT.SRCCOUNTRYasciiThe 2-letter ISO code of the country from where the consumer makes the payment. It is extracted from the IBAN.

For standard output parameters, check Output parameters for the TRANSACTION call.

Bancontact Language Recommendations

The Belgian market is diverse in its language support requirements. PPRO therefore recommends detecting the language of the consumer and sending the preferredlanguage API parameter.

Field Name M/OTypeValues
preferredlanguageOasciiISO two-letter language code format:

fr - French

nl - Dutch

de - German

en - English



Please note that preferredlanguage is not a SPECIN; the field is simply preferredlanguage. This field is applicable to other LPMs, however many LPMs lack the diverse language support of Bancontact.

TRANSACTION call input


TRANSACTION call output


Additional Information

Mobile payment options (QR code / open payment app via link i.e. URL intent) are only available for transactions up to 1500 euros. The SPECOUT.BEPURL output parameter is only emitted in this case.

About the payment page

  • The payment page must be supported in 4 different languages: English, Dutch, French, German.
  • The payment page adjusts to different screen sizes based on the device of the consumer:
    • Mobile (up to 599px wide): vertical display of payment app link and direct PAN input form
    • Small-sized devices (up to 767px): horizontal display of payment app link and direct PAN input form
    • Medium-sized devices (up to 1199px): horizontal display of both mobile options (payment app link and QR code) and direct PAN input form
    • Large-sized or desktop devices (from 1200px): horizontal display of QR code and direct PAN input form
  • There are different payment options for the consumer:
    • PAN input (card number and expiry date) and redirect for 3D-Secure authentication
    • QR code scanning (and finish the payment in the Bancontact app on another device)
    • URL intent for app-to-app

Branding Guidelines

For branding information, see the Bancontact branding guidelines.


Does PPRO support a client hosting the PAN-entry page?

At this time, only PPRO can host the PAN-entry page.

Does PPRO use Maestro or other scheme's rails for Bancontact (or the other way around)?

PPRO's Bancontact connection is native to the scheme itself. This means that we cannot process co-branded card networks, such as Maestro, as Bancontact transactions. The opposite scenario is not possible either.