Skip to main content

Bancontact Payment Integration

Bancontact is the most widely used payment method in Belgium. Customers approve the payment with their Bancontact card or the Bancontact app. This guide explains how to accept Bancontact payments with the Netvalve Payment Gateway.

Availability
Customer countryCurrencypaymentOption
Belgium (BE)EURapm_bancontact

The order currency must be EUR for Bancontact to be offered.

For the shared redirect flow, webhook handling, and Checkout SDK notes, see the European Payment Methods overview.


How to offer Bancontact​

Contact the Netvalve team to enable Bancontact on your account before going live.


Step 1 — Create the order​

Send a POST request to the Create Order endpoint with paymentOption set to "apm_bancontact" and the order currency set to EUR.

POST /order — request body
{
"amount": 44.99,
"currency": "EUR",
"siteId": "f76fb7ed-3312-4791-a216-45918f899271",
"clientOrderId": "{{clientOrderId}}",
"orderDesc": "Order #12345",
"successUrl": "https://merchantsite.com/success.html",
"cancelUrl": "https://merchantsite.com/cancel.html",
"failedUrl": "https://merchantsite.com/failed.html",
"pendingUrl": "https://merchantsite.com/pending.html",
"paymentOption": "apm_bancontact",
"customerDetails": {
"customerAddress": "1 Test Street",
"customerCity": "Brussels",
"customerCountryCode": "BE",
"customerEmail": "customer@example.com",
"customerIp": "123.123.123.123",
"customerName": "Louis",
"customerLastName": "Peeters",
"customerPhone": "800-1234567",
"customerZipCode": "1000"
}
}
tip

paymentOption accepts a comma-separated list. For example, "card,apm_bancontact" shows both card and Bancontact on the hosted page.


Step 2 — Redirect and handle the outcome​

On success the response contains a redirectUrl (verify responseCode === "GTW_1000" first). Send the customer there; Netvalve takes them to Bancontact to authorise, then returns them to one of your URLs:

OutcomeRedirect target
Payment succeededsuccessUrl
Customer cancelledcancelUrl
Payment failedfailedUrl
Payment pendingpendingUrl

Treat the webhook or an Inquiry poll as the source of truth for the final result.


Sandbox testing​

Create the order against the Sandbox / UAT base URL and follow the redirectUrl. On the Bancontact test page, enter one of the test card numbers below to choose the outcome:

Card numberExpiryResult
6060059999989902301/2035Authentication succeeds (frictionless)
6060059999989908001/2035Authentication denied

Then check that the customer lands on the matching return URL and that your webhook records the same result.

Mobile app options

The test page offers the Bancontact app (QR code or app link) alongside the card-number form, depending on screen size. For payments over €1,500 the app options are hidden and only the card-number form is shown.

See Testing in sandbox for the shared setup, amount limits, and how to test the pending path.


ResourceLink
European Payment Methods overviewOverview
Hosted Payment Page guideHosted Payment Page
Swagger API referenceAPI Reference
Webhook Message guideWebhook Message
Error Codes referenceError Codes