Bancontact
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 codes | BE |
Processing (Presentation) currencies | EUR |
Settlement currencies | EUR |
Consumer currencies | EUR |
Channel member tag | bcmc |
Scheme name in the settlement file | Bancontact/MisterCash |
Minimum transaction amount | EUR 0.01 |
Maximum transaction amount | EUR 1,500 for mobile payments (URL intent and QR code) No known limit for the standard flow |
Session timeout | 1 hour |
Refund | Full and partial, multiple partial and over refunds are all available. |
Refund Validity | 365 days |
Chargeback | No |
Integration Type | Asynchronous |
Sandbox | PPRO-hosted |
Transaction Flow
- The consumer selects Bancontact as their preferred payment method.
- The consumer is redirected to a payment page where they are presented with an option to enter their PAN or scan a QR code.
- If:
- The consumer chooses to enter their PAN, and they are redirected to their issuing bank for a 3DS authentication.
- The consumer scans their QR code they confirm the payment in the Bancontact app.
- The merchant receives the payment confirmation of the payment.
- The merchant can ship the order/deliver the goods to the consumer.
Bancontact Integration
Specific input parameters for the TRANSACTION call
Field Name | M/O/C | Type | Description |
---|---|---|---|
specin.apptoappurl | O | ascii | Custom 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).
Note
MerchantRedirectURL
is still required in the API payload when using an app to app flow and may not belocalhost
orequivalent
.
Specific output parameters for the TRANSACTION call
Field Name | Type | Description |
---|---|---|
SPECOUT.BEPURL | ascii | Trigger URL for mobile payment options. Example (contrived): BEP://1BC.GIROGATE.DE/BCMC/ 123456789$ICAE3BUIH5P9U53Y5HKA9CRT For more information regarding the mobile payment options, see the Additional Information section below. |
SPECOUT.CARDBIN | ascii | The BIN of the Bancontact card used (first six digits of the Bancontact card) |
SPECOUT.CARDLAST4DIGITS | ascii | The last four digits of the Bancontact card |
SPECOUT.SRCIBAN | ascii | IBAN of the consumer’s account |
SPECOUT.SCHEMEDECLINEREASON | ascii | A text description in case of FAILREASON=REMOTE_DECLINE .Values do not vary over time. You can use this value for risk and statistics purposes. |
SPECOUT.CARDTOKEN | ascii | A 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.TRANSACTIONFLOW | ascii | The 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.CARDEXPIRY | ascii | YYMM expiry date of the card, as stored at time of initial transaction. Always shown in case of successful authorization. |
SPECOUT.CARDMASKEDPAN | ascii | Truncated version of the full card PAN inclusive of the BIN and last four digits as a single string. Sample output: 487123XXXXXX9876 |
SPECOUT.SRCBIC | ascii | The BIC of the consumer's account. |
SPECOUT.SRCCOUNTRY | ascii | The 2-letter ISO code of the country from where the consumer makes the payment. It is extracted from the IBAN. |
`SPECOUT.URLINTENT | ascii | The URL to directly forward the user to their BancontactPayconiq app on their mobile device to complete the transaction. |
`SPECOUT.EXPIRYMONTH | ascii | The month in which the Bancontact card used in the transaction will expire. |
`SPECOUT.EXPIRYYEAR | ascii | The year in which the Bancontact card used in the transaction will expire. |
`SPECOUT.PREFERREDLANGUAGE | ascii | The preferred language set by the customer. |
`SPECOUT.PROVIDERERRORMESSAGE | ascii | The error message returned by Bancontact as a response to the transaction request. |
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/O | Type | Values |
---|---|---|---|
preferredlanguage | O | ascii | ISO two-letter language code format:fr - Frenchnl - Dutchde - Germanen - English |
Note
Please note that
preferredlanguage
is not a SPECIN; the field is simplypreferredlanguage
. This field is applicable to other LPMs, however many LPMs lack the diverse language support of Bancontact.
TRANSACTION call input
tag=bcmc
&txtype=TRANSACTION
&countrycode=BE
¤cy=EUR
&amount=1055
&merchanttxid=MYp3MF6zHDQm
&login=johndoe
&password=wXBrpVporFVjGO4R
&contractid=JOHNDOETESTCONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
¬ificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&specin.dynamicdescriptor=DynDescriptor
&accountholdername=Tester+Doe
&preferredlanguage=fr
&returnmode=urlencodeext
TRANSACTION call output
REQUESTSTATUS=SUCCEEDED
&STATUS=SUCCEEDED
&TXID=600520459
&ERRMSG=
&CHANNEL=testchannel
&TAG=bcmc
&REDIRECTSECRET=d6rSVahlxK0t0Du8tpD12VRE3PosHBUA
&SPECOUT.BEPURL=BEP://1BC.GIROGATE.DE/BCMC/123456789$ICAE3BUIH5P9U53Y5HKA9CRT
&SPECOUT.CARDBIN=670999
&SPECOUT.CARDLAST4DIGITS=9999
&SPECOUT.CARDTOKEN=S-621f64eb-6271c974-abcd-abcd-abcd-492f7b123456
&SPECOUT.PAYMENTPURPOSE=2G2ABCD
&SPECOUT.SRCBIC=GKCCBEBB
&SPECOUT.SRCCOUNTRY=BE
&SPECOUT.SRCIBAN=BE12561483123456
&SPECOUT.TRANSACTIONFLOW=ecommerce
&SPECOUT.CARDEXPIRY=2604
&SPECOUT.CARDMASKEDPAN=60799XXXXXX9999
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.
FAQ
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.
Updated about 1 month ago