Bancontact
Bancontact is a Belgian payment method for payments through the customer's trusted banking environment.
With Bancontact customers in Belgium can pay securely and directly online and in stores via their bank account. This popular payment method in Belgium offers a fast and reliable payment experience on both desktop and mobile. Pay.nl also supports features such as refunds and easy integration via modern APIs, allowing businesses to process payments flexibly and efficiently.
| Category | Details |
|---|---|
| Category | Regional payment options |
| Available country codes: | BE |
| Supported currencies | EUR |
| Supported API | Order: create |
| Minimum transaction amount | €0.01 |
| Maximum transaction amount | €10,000.00 |
| Time-out | 30 minutes |
| Order operations | Multiple (partial) refunds per transaction allowed, up to 100% of the order amount + €30 |
| Refund validity | 13 months |
| Recurring | Yes - Via WIP |
| Guaranteed payment method | Dispute possible |
| Chargeback risk | Dispute possible (low chance) |
| Chargeback period | 13 months |
| Surcharging | Not allowed |
Customer identifier
When a Bancontact payment is successfully authorized, you receive a CustomerID. This value is stored in the field CustomerKEY. By default, this value consists of the IBAN, optionally, you can choose the PAN (Primary Account Number) instead — a masked card number used as the customerID and KEY.
Current processing of the customer identifier and CustomerKey
| Route | CustomerID | CustomerKEY |
|---|---|---|
| Standard | IBAN (BE2349399887723) | Tokenized IBAN |
| Optimization opportunity | PAN (670431 ******** 123) | Tokenized PAN |
As explained above, the route determines whether you receive an IBAN or PAN in the CustomerID and CustomerKEY field. Please contact Pay. Support to change the route to your preference.
Card network or Account2Account payment?
Although a Bancontact payment often feels to the consumer like a account-to-account payment (Account-to-Account), technically, Bancontact is a card network. The payment is processed via Bancontact's card infrastructure and follows the same principles as other card payments, such as authorization, clearing, and settlement.
What makes Bancontact special is that, upon a successful payment, the issuing bank often also provides the payer's IBAN. This allows the merchant to see directly which bank account the payment came from. This gives Bancontact several advantages comparable to an Account-to-Account solution, such as easier reconciliation and a clear link between the payment and the customer's bank account.
For the merchant, this means that Bancontact combines the advantages of both worlds:
- The reliability and acceptance of a card network, including authorization before the payment is approved.
- The transparency of an account payment, because the IBAN is often included in the payment information.
It's important to know that providing the IBAN depends on the issuing bank. In most cases it is available, but this is not guaranteed for every transaction. Technically, the payment always remains a card transaction and never a SEPA Credit Transfer or other Account-to-Account payment.
Extra security for online Bancontact payments
Technically, Bancontact is a card payment method. Although a Bancontact payment often feels to the consumer like a direct account payment, the transaction is processed via the Bancontact card network. As a result, Bancontact supports the same security standards as other card networks, including EMV 3-D Secure (3DS).
When a payment carries an increased fraud risk, or when the issuing bank requires it, the cardholder may be asked to confirm the payment with an extra step. This usually happens via the mobile banking app, biometric verification (fingerprint or facial recognition), or a PIN code.
How does 3D Secure work?
During authorization, the issuing bank assesses whether additional verification is needed. In many cases, this happens entirely in the background (frictionless). Only when extra assurance is needed is the consumer asked to authenticate themselves.
This process complies with the European PSD2 Strong Customer Authentication (SCA) requirements.
Apple Pay and Google Wallet
Because Bancontact is a card network, Bancontact cards can also be added to Apple Pay and Google Wallet when the issuing bank supports this.
When a consumer pays with a Bancontact card via Apple Pay or Google Wallet, the security mechanisms of the card network are also used. The cardholder's identity is usually confirmed via Face ID, Touch ID, fingerprint, or the device passcode. This verification counts as Strong Customer Authentication, so a separate 3D Secure challenge is no longer needed.
For the merchant, the payment is processed in the same way as any other card payment.
Benefits for merchants
By supporting EMV 3-D Secure, you benefit from:
- Stronger protection against fraud.
- Compliance with PSD2 SCA regulations.
- A higher chance of successful authorizations.
- Fewer chargebacks thanks to authenticated transactions.
- Support for Apple Pay and Google Wallet with Bancontact cards.
Support for wallets
The protocol supports more extensive functionality for digital wallets, including:
- OneClick payments
- Recurring payments
- Wallet Initiated Payments (payments initiated from a wallet)
Support for modern payment flows
Bancontact supports various payment forms, including:
- online payments;
- physical card payments;
- refunds;
- wallet payments;
- deferred authorisations (authorize later);
- deferred sales (finalize later);
- card validity checks (not available at PAY)
Deffered Authroisation is used within Merchant Approved Transactions, Deferred Sales for Auth/Capture changes.
Response codes for Bancontact
According to the official Bancontact BSP Protocol Bancontact uses P39 (Action Code) as the response code. This is based on ISO 8583 but differs from Visa/Mastercard on some points.
| Code | Meaning | Remark |
|---|---|---|
| 000 | Approved | Payment approved |
| 100 | Do not honor | Generic rejection by issuer |
| 101 | Expired card | Card expired |
| 104 | Restricted card | Card restricted/blocked |
| 106 | Allowable number of PIN tries exceeded | Maximum number of PIN attempts reached |
| 110 | Invalid amount | Invalid amount |
| 111 | Invalid card number | Invalid card number |
| 116 | Insufficient funds | Insufficient balance |
| 120 | Invalid transaction | Invalid transaction / also used by Switch validations |
| 121 | Exceeds withdrawal amount limit | Limit exceeded |
| 123 | Security violation | Security flaw |
| 125 | Card not effective | Card not yet or no longer valid |
| 181 | Card blocked | Card blocked |
| 182 | No CVM/Frictionless transaction velocity limit exceeded | Limit for No-CVM/Frictionless exceeded |
| 185 | Product(s) not allowed | Product or service not allowed |
| 200 | Card picked up by ATM | ATM only |
| 202 | Suspected fraud | Suspicion of fraud |
| 208 | Lost card | Lost card |
| 209 | Stolen card | Stolen map |
| 210 | Suspected counterfeit card | Suspected forged card |
| 211 | Card in opposition | Card blocked |
| 212 | Account in opposition | Account blocked |
| 500 | Reconciliation successfully processed | Settlement/reconciliation |
| 800 | Accepted (Network messages) | Network management |
| 902 | Invalid transaction | Invalid transaction |
| 905 | Acquirer not supported by Switch | Acquirer not supported |
| 908 | Transaction destination cannot be found | Routing problem |
| 909 | System malfunction | System error |
| 911 | Time out of Issuer response | Timeout issuer |
| 912 | Card Issuer unavailable | Issuer unreachable |
| 940 | Problem or timeout at card reset | ATM problem |
| 941 | Cardholder forgot card | Card left in ATM |
These codes are defined in P39 – Action Code of the Bancontact BSP Protocol.
Key differences with Visa/Mastercard
Bancontact uses, among others:
- 100 = Do not honor (instead of the ISO code 05 you often see with Visa/Mastercard)
- 116 = Insufficient funds
- 181 = Card blocked
- 182 = No CVM/Frictionless velocity exceeded
- 902–912 for technical and routing errors
This means that when you process a Bancontact transaction, you 100 should interpret as the generic "Do not honor" decline, not 05.
- ✅ Success: 000
- ❌ Hard declines: 100, 101, 104, 106, 111, 181, 202, 208–212
- 🔄 Soft declines / Retry: 116, 121, 909, 911, 912
- ⚙️ Technical errors: 500, 800, 902, 905, 908, 909, 911, 912