Bancontact Mister Cash

Introduction

Bancontact

Bancontact Mister Cash (BCMC) is the most popular internet payment method in Belgium. It is used in more than 80% of Belgian web shops. It allows clients to pay with Belgian credit cards.

  • With BCMC’s mobile app you can paAy back friends without cash immediately after they took over a payment for you (e.g. at a restaurant).

  • You can pay your invoices at home using the BCMC mobile app. You can use the app in a growing number of businesses and stores to pay your bill without the hassle of a card reader.

How to Integrate

If you are integrating via Payment Page, please refer to its documentation on Payment Page.

If you are integrating via REST API, please refer to its documentation  on Rest Api.

General Information

Payment Mode, Countries and Currencies

This table illustrates which payment mode Bancontact belongs to. It also provides detailed information about the countries and currencies which are relevant for Bancontact.

Payment Mode

Online Bank Transfer

Countries

Belgium

Currencies

EUR

Communication Formats

This table illustrates how Bancontact notifications are encoded, and which formats and methods can be used for requests and responses.

Requests/Responses

Format

XML, JSON

Methods

POST, GET

IPN Encodement

Please follow the instructions given at Instant Payment Notification to set up IPN.

Transaction Types

Bancontact refund and recurring transactions are not provided by Bancontact directly. They can be accomplished using the payment method SEPA. See refund and recurring for details.

For transaction type details which are not given here, look at Appendix B: Transaction Types.

Transaction Type Description Link to the Sample

debit

 debit samples

refund-debit

Bancontact does not support refund-debit. Use SEPA Credit Transfer to wire funds back to the consumer.

recurring

Bancontact does not support recurring transactions. Use SEPA Direct Debit to initiate recurring transactions

Test Credentials

URLs (Endpoints)

REST API

https://api-test.wirecard.com/engine/rest/paymentmethods/

Payment Page

https://api-test.wirecard.com/engine/hpp/

Merchant Account ID (MAID)

86f03c98-6691-421d-94c8-232c3d5c2573

Username

REST API

16390-testing

Password

REST API

3!3013=D3fD8X7

Secret Key

Payment Page

2341ae35-aa13-4511-95d5-acd80f0fcb52

When using our testing environment, the Wirecard Payment Gateway does not send the request to Bancontact servers. Instead, it will be sent to a simulation endpoint that looks similar to the Bancontact landing page.

It covers the most basic situations, such as:

  • Success scenario

  • User cancellation

  • Invalid card data

The look and feel of the simulated landing page will not be regularly updated which may lead to differences when comparing with real BCMC landing page.

You can skip the input fields Card Number and Expiry Date as our testing endpoint is ignoring them. To simulate a specific scenario use one of the options presented by field Error code.

Bancontact error code

Workflow

debit
Using ReST API
Bancontact workflow debit using ReST API
  1. Consumer wants to pay a product/service.

  2. Consumer selects BCMC payment method.

  3. WPG redirects consumer from website to BCMC landing page (WPG uses the field payment-methods/payment-method/@url in the response).

  4. Consumer enters BCMC Card data.

  5. Now two actions occur simultaneously:

    1. Consumer is sent back to the shop via Redirect URL informing him of the status of the payment. The destination depends on the given redirect URLs in the debit Request (Successful) sample (provided in the success-redirect-url field).

    2. WPG sends a notification (IPN) of the payment outcome to the merchant. In order to receive server-to-server notifications, you have to provide the URL of your endpoint in the debit Request (Successful) sample that will process IPNs (provided in the notifications/notification/@url field).

Using Payment Page
Bancontact workflow debit using payment page
  1. Consumer wants to pay a product/service.

  2. Merchant redirects Consumer to Payment Page

  3. Consumer selects BCMC payment method.

  4. Payment Page redirects the consumer to BCMC landing page (WPG uses the field payment_methods/payment_method/@url in the response).

  5. Consumer completes the payment.

  6. Now two actions occur simultaneously:

    1. Consumer is sent back to the Payment Page via Redirect URL informing him of the status of the payment. The destination depends on the given redirect URLs in the Payment Page sample, debit Request (provided in the field success_redirect_url).

    2. Payment Page sends a notification (IPN) of the payment outcome to the merchant. In order to receive server-to-server notifications, you have to provide the URL of your endpoint in the Payment Page sample, debit Request that will process IPNs (notification_url).

refund

Although, BCMC does not support a native refund mechanism, the Wirecard Payment Gateway offers a solution by which you are able to move funds to your consumer. Wirecard Payment Gateway employs the SEPA Credit Transfer to wire funds back to consumer.

In order to initiate a Refund using SEPA Credit Transfer, look at the SEPA Credit Request sample.

The workflow looks like this:

Bancontact workflow using credit refund
  1. Merchant receives a request for refund from the consumer.

  2. Merchant agrees on refund amount with the consumer to refund a specific debit transaction.

  3. Refund transaction.

  4. Merchant refunds by referencing the credit to a previous debit transaction; or

  5. Funds are transferred and consumer receives refund.

Characteristics of this workflow are:

  • The workflow is offline, so you have to wait a longer period for the outcome (it is a matter of a few days).

  • SEPA Credit Transfer must be referenced to a successful debit transaction; the Transaction ID is taken from the successful debit notification.

The refund is not available immediately. You can initiate it 24 hours after the initial debit.

When making a SEPA Credit Transfer Request, keep in mind:

  1. You have to reference the successful debit in the parent-transaction-id field.

  2. Bank account details like IBAN and BIC are not provided by you in the request.

recurring

Although, BCMC does not support native mechanism for recurring payments, the Wirecard Payment Gateway offers a solution by which you are able to charge the consumer repeatedly. Wirecard Payment Gateway employs SEPA Direct Debit to withdraw funds from the consumer.

In order to initiate a Recurring transaction using SEPA Direct Debit.

For the Characteristics of the workflow see refund above. These characteristics also apply for recurring in combination with SEPA Direct Debit.

When making a SEPA Direct Debit Request, keep in mind:

  1. You have to reference successful debit in the parent-transaction-id field.

  2. Bank account details like IBAN and BIC are not provided by you in the request.

  3. You need a Mandate, which represents the consumer’s consent of being charged via SEPA Direct Debit.

  4. You need to provide your Creditor-ID in each SEPA Direct Debit request.

Fields

The fields used for BCMC requests, responses and notifications are the same as the REST API Fields resp. Payment Page. Please refer to: ReST API Fields or Payment Page.

The fields listed below are BCMC specific and either mandatory M or optional O.

Field Cardinality Data Type Description

transaction-type

M

Alphanumeric

This is the type for a transaction.

Use debit.

payment-methods

M

Alphanumeric

The name of the Payment Method.

Use bancontact.

Locale

O

 

Language used to localize the BCMC landing page.

Supported by BCMC
  • zh Chinese

  • nl Dutch

  • en English

  • fr French

  • de German

  • hi Hindi

  • it Italian

  • ja Japanese

  • pt Portuguese

  • ru Russian

  • sk Slovak

  • es Spanish

  • ru Russian

  • sk Slovak

  • es Spanish

Default locale is en English.

Samples

Go to Notification Examples if you want to see corresponding notification samples.

ReST API
debit Request (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
   <merchant-account-id>86f03c98-6691-421d-94c8-232c3d5c2573</merchant-account-id>
   <request-id>20e15877-d5fb-4893-a260-1edaba911fbf</request-id>
   <transaction-type>debit</transaction-type>
   <requested-amount currency="EUR">0.01</requested-amount>
   <payment-methods>
      <payment-method name="bancontact" />
   </payment-methods>
   <order-number>180924114516875</order-number>
   <account-holder>
      <first-name>John</first-name>
      <last-name>Doe</last-name>
      <email>john.doe@test.com</email>
      <phone/>
      <address>
         <street1>123 anystreet</street1>
         <city>Brantford</city>
         <country>CA</country>
         <postal-code>M4P1E8</postal-code>
         <state>ON</state>
      </address>
   </account-holder>
   <bank-account>
      <account-number/>
      <bank-code/>
   </bank-account>
   <shipping>
      <first-name>John</first-name>
      <last-name>Doe</last-name>
      <phone>+49123123123</phone>
      <address>
         <street1>123 anystreet</street1>
         <city>Brantford</city>
         <country>CA</country>
         <postal-code>M4P1E8</postal-code>
      </address>
   </shipping>
   <notifications>
      <notification url="https://merchant.com/ipn.php" />
   </notifications>
   <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
   <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
   <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
</payment>
debit Response (Successful)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
   <merchant-account-id>86f03c98-6691-421d-94c8-232c3d5c2573</merchant-account-id>
   <transaction-id>0bd26bfd-e3cb-40eb-a2a2-cd66059a2c22</transaction-id>
   <request-id>6d56982b-9ec8-4866-9e49-5f3da7f00251</request-id>
   <transaction-type>debit</transaction-type>
   <transaction-state>success</transaction-state>
   <completion-time-stamp>2018-09-24T10:08:01.000Z</completion-time-stamp>
   <statuses>
      <status code="201.0000" description="The resource was successfully created." severity="information" />
   </statuses>
   <requested-amount currency="EUR">0.01</requested-amount>
   <account-holder>
       <first-name>John</first-name>
       <last-name>Doe</last-name>
       <email>john.doe@test.com</email>
       <phone></phone>
       <address>
           <street1>123 anystreet</street1>
           <city>Brantford</city>
           <state>ON</state>
           <country>CA</country>
           <postal-code>M4P1E8</postal-code>
       </address>
   </account-holder>
   <shipping>
       <first-name>John</first-name>
       <last-name>Doe</last-name>
       <phone>+49123123123</phone>
       <address>
           <street1>123 anystreet</street1>
           <city>Brantford</city>
           <country>CA</country>
           <postal-code>M4P1E8</postal-code>
       </address>
   </shipping>
   <order-number>180924120801003</order-number>
   <notifications>
       <notification url="https://merchant.com/ipn.php"></notification>
   </notifications>
   <payment-methods>
       <payment-method url="https://demoshop-test.wirecard.com/demoshop/rest/sandbox/bcmc/payment?redirectionVersion=IR_WS_2.6&amp;redirectionData=9e471b1c-1c0a-4a78-978c-28f3ae7fac4c" name="bancontact" />
   </payment-methods>
   <bank-account>
       <account-number></account-number>
       <bank-code></bank-code>
   </bank-account>
   <cancel-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/cancel</cancel-redirect-url>
   <fail-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/error</fail-redirect-url>
   <success-redirect-url>https://demoshop-test.wirecard.com/demoshop/#/success</success-redirect-url>
</payment>
debit Request (Failure)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
   <merchant-account-id>86f03c98-6691-421d-94c8-232c3d5c2573</merchant-account-id>
   <request-id>qqaaq20e15877-d5fb-4893-a260-1edaba911fbf</request-id>
   <transaction-type>debit</transaction-type>
   <requested-amount currency="EUR">0.01</requested-amount>
   <payment-methods>
      <payment-method name="bancontact" />
   </payment-methods>
   <order-number>180924114516811111111111111111111111175</order-number>
</payment>
debit Response (Failure)
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" xmlns:ns2="http://www.elastic-payments.com/schema/epa/transaction">
   <merchant-account-id>86f03c98-6691-421d-94c8-232c3d5c2573</merchant-account-id>
   <transaction-id>e2b6b05b-d76d-4d3a-9159-36af9b65a49f</transaction-id>
   <request-id>qqaaq20e15877-d5fb-4893-a260-1edaba911fbf</request-id>
   <transaction-type>debit</transaction-type>
   <transaction-state>failed</transaction-state>
   <completion-time-stamp>2018-09-24T09:58:58.000Z</completion-time-stamp>
   <statuses>
      <status code="400.1132" description="The Order Number is too long. Please check." severity="error" />
   </statuses>
   <requested-amount currency="EUR">0.01</requested-amount>
   <order-number>180924114516811111111111111111111111175</order-number>
   <payment-methods>
      <payment-method name="bancontact" />
   </payment-methods>
</payment>
Payment Page
debit Request (Successful)
var requestData = {
  "request_id" : "75887972-6777-4af6-96fb-1c5419d2e80f",
  "request_time_stamp" : "20170201131500",
  "merchant_account_id" : "9e1b95df-3928-4256-af7b-2431a3c16c33",
  "transaction_type" : "debit",
  "requested_amount" : "0.01",
  "requested_amount_currency" : "EUR",
  "request_signature" : "6bb0393236df76463afcfb2a41ddbe43e13635aab2eac9115be9a9cfc3cfc2cb",
  "first_name" : "John",
  "last_name" : "Doe",
  "email" : "john.doe@test.com",
  "street1" : "123 anystreet",
  "city" : "Brantford",
  "state" : "ON",
  "country" : "CA",
  "postal_code" : "M4P1E8",
  "order_number" : "488037",
  "shipping_first_name" : "John",
  "shipping_last_name" : "Doe",
  "shipping_street1" : "123 anystreet",
  "shipping_city" : "Brantford",
  "shipping_country" : "CA",
  "shipping_postal_code" : "M4P1E8",
  "notification_url" : "https://merchant.com/ipn.php",
  "success_redirect_url" : "https://merchant.com/success.php",
  "fail_redirect_url" : "https://merchant.com/fail.php"
};
WirecardPaymentPage.hostedPay(requestData);
Custom URL: