Bancontact payment method

As discussed at the gathering: Global Gathering - Day 8 - Pipe Prioritisation - DEV PIPE

We agree to do a spike on how much it would take to provide Bancontact as a payment method.

Bancontact (ex Mister Cash) is the leading payment method used in Belgium / Netherlands / Luxembourg (Benelux).

The goals of the spike were:

  1. know the best way to integrate bancontact : through stripe https://stripe.com/docs/sources/bancontact or in another form
  2. Estimate the size of the work to be done and the main steps and their complexity

The scope of this spike excludes Subscription / recurring payment.

To get bancontact to process recurrent payments without authorization through Stripe is another story that is possible and supported but will require some work on the stripe integration at least: https://stripe.com/docs/sources/bancontact/recurring

@luisramos0 did the spike and @maikel reviewed it here:https://github.com/openfoodfoundation/openfoodnetwork/issues/3901

The following of this post is mostly a copy-paste of the content in Github so that we can pursue the discussion here. Luis, Maikel, if I changed anything from what you did, please tell me so.

How Bancontact works

  1. Bancontact does not have an open API that we can use directly. Every business has to go through one of their partners to actually handle payments. That could be Mollie, Stripe or some other listed partner: https://www.bancontact.com/en/professional/payment-button
  2. Customers want to pay with the Bancontact app instead of a credit card. While Stripe and Paypal both take credit card payments and a business can choose with which payment provider they want to accept cards, Bancontact is a different way of paying. The idea was that a customer connects their bank account to Bancontact and can then make easy transfers through a smartphone app.
  3. Bancontact is more similar to a type of credit card than a type of payment gateway. We now have to find the best payment service provider accepting Bancontact payments.

Payment authorization with Redirect

In this payment method, Bancontact, we need to redirect the user to an external website that will then redirect back to OFN.
This payment workflow will require some rework of the stripe gateway (maybe we create a separate stripe gateway for this type of integration).

An important point apart from implementing the redirect logic is that this will require us to have some sort of webhooks that receive info from stripe when the payment is authorized: the user is redirected to the payment website and then back to OFN but the authorization in the payment system is asyncronous and OFN will need a webhook to receive a call from the payment system, after the user is redirected back, stating whether the payment was authorized or not.
This will require some work to create the webhook.

Stripe sources or other payment gateways?

To get this integration working with Stripe we would need:

  • find out how to configure stripe for this
  • create payment method and it’s custom details in the backoffice
  • develop code to call stripe with appropriate details (source)
  • develop webhook to take response from stripe
  • developer code to wait for webhook call, validate and show user appropriate feedback

Overall, this looks like a straight forward problem but there are quite a few things to do and test.

The work done to make this work with Stripe will be reusable for other payment methods. Of course stripe fees will be an important point (see below).
This redirect logic might also be useful for PSD2 #3927

Apart from Stripe, there are many other payment gateways that integrate with bancontact.
One of the providers is a Belgium provider https://www.mollie.com/en/pricing/ that integrates with bancontact and has a spree plugin that works with Spree v3.

Fees

Lets look at some example data. A wholesaler may have 120 orders per month with an average order of €100. A food hub may have 200 orders per month with an average order of €30.

Provider Fee hub fees wholesaler fees
Stripe 1.4% + €0.25 €134 €198
Mollie €0.39 €78 €47

Well, looking at the numbers mathematically, Stripe is only cheaper if the average order is less than €10. That’s very rare. In Australia, many food hubs would say that they can’t afford Stripe. Is that the same in Belgium? No separate pricing about Bancontact via Stripe was found.

Robust implementation and maintainability

Stripe is very capable of implementing robust solutions. Mollie may not have the same standard of service but all payment providers are pretty good. The Spree payment gateway looks okay. It has recent commits. Both seem to have an easy API.

Conclusion

Integrating a new payment gateway into OFN is a long-term investment. Main criteria are fees for the enterprise and maintainability.

Stripe Mollie
Pros Quicker to implement Cheaper + We would win access to a new provider as alternative to Stripe and Paypal. That reduces dependency.
Cons Dependency and price Mollie will not have the same service/docs/etc of Stripe Implementing bancontact with mollie will take longer than doing it with Stripe because it will be a new gateway that will require setup (that will mostly be already done in Stripe)

Maybe we want both? First implement Stripe to have a quick solution and then make it great by implementing Mollie or similar?

Estimated amount of time to implement through Stripe

List of tasks above, webhook and validation part being the most novel thing to do. Luis estimate is L, guessing that a dev would take at least 40 hours to do this.

Remaining questions for the community

Is there another payment gateway like stripe that we would like to integrate with?

Were there any plans to integrate with another gateway in the past? This could be a good opportunity to build that integration as long as that new payment gateway integrates with bancontact.

What should be our next steps?

ping @Theodore @Kirsten @danielle @MyriamBoure @sauloperez @lin_d_hop @Matt-Yorkley @nick

EDIT FROM @Rachel: after a quick chat we Théo on Slack we agree that I would edit this post to remove email credentials (as this post is public).

Basically this was a forwarded email exchange between Renata (Payconiq) and Bertrand (Les paniers Lorrains ?)

@Theodore I’m not sure I understood exactly the email between Payconiq and Bertrand. How did the conversation started? Is payconiq widly used in Belgium? Is this something we need to study as well?

For everyone, payconiq website:

Excuse me if I’m being stupid - but I thought that the main reason there was pressure for additional payment gateways and methods was because Stripe is considered too expensive? So doing this through Stripe wouldn’t solve the problem? Or Belgium / Bancontact is a different case?

Very detailed report! I have to admit that that Mollie service looks very interesting and affordable. I think I get it but I’d like to understand what are the differences compared to Stripe.

For bertrand the digital paiement method are expensive (Fix price), as wel as “mircrotransaction” in Stripe. He talk about “group transaction” => a mecanism of intern credit. Pehaps, cheaper with payconiq. Pehaps, with the Oxfam shop, we could have cheaper prices.

Oxfam-Magasin du monde work with

  • ingenico for bancontact paiement at shop
  • Mollie for donation
  • they have some contact with payconic for phone paiement.
    I will have a meeting on thuesday 30 july with the comptability team to clarify this aspect.

Thanks you Rachel for this analyse. If I understand wel, it’s more robust and easy for OFN community if we use Stripe for bancontact than Mollie. But it cost more for hubs.

@Theodore I didn’t do anything except transfert @luisramos0 and @maikel 's analysis from github to here :wink:

But yes in a way you’ve summed up the situation. So the community needs now to decide if we want to pursue with stripe in order to deliver something more quickly (and possibly more stable - although this needs to be studied more closely) or if the cost for hubs is considered unbearable.

I have the feeling that we have a dev analysis but that maybe we lack a product one? I’m not sure I can handle this study currently, but I would be up to pair with someone on this. @lin_d_hop would you be available ?

For informations:
Oxfam-Magasins du monde have a contract with Ingenico for bancontact payment in the shops. Fee for transaction + subscription
Oxfam will use Mollie for donation services in a short time. Because we just obtain a certification of tax exemption for donation. Great news for us ! it’s a bit like hello asso in France.
Oxfam prospect payconic to pay with a KR code in shop with smartphone or eventually online (fee only on transaction).
Oxfam doesn’t know stripe without me.

Ok so I’m trying to see if we need to look at other payment gateways before taking a final decision.

Do you remember how you’ve found Mollie @maikel ? I don’t see it in:

The way I’ve searched for a payment gateway “challenger” so far is that I’ve looked at our current criteria which are:

  1. Is providing the Bancontact payment method
  2. Maintainability / deployment cost
  3. Price

With only this scope Paybox catch my eye because this gateway was mentionned by @MyriamBoure as “cheap” here : Integrate the cheapest EU payment gateway for big hubs : Paybox Direct Plus

But they have a really bad website :scream: that has badly been updated since they got acquired by Verifone. I guess they might be bad at criteria number 2.
The only way to get their fees is apparently to call them.

@MyriamBoure is Alterconso currently using this payment gateway?

What I like about analyzing them is that we could tick two boxes with Paybox: answer the Bancontact need AND answer the need for cheaper credit card transaction :muscle:
So I went on and asked myself what were the other needs / problems we currently have in the payment area and that are NOT covered by Stripe. The big winner here is ewallet / #splitpayments !

See How to offer Mangopay as a payment method to hubs? [Split Payments]

@lin_d_hop I didn’t dive into this conversation yet, but it seems that you were involved in it quite deeply. So if you remember anything that would prevent to add Mangopay (or something similar that enables an ewallet) to this spike please shout.
My idea is not to release an ewallet right away. My point is that if we are considering adding a new payment gateway to answer the Bancontact payment, we should add a payment gateway that can answer another need in the future.
I feel pretty confident that split payments will one day be prioritized. But maybe I’m wrong and maybe the overhead work of adding a new payment gatheway is too expensive in terms of dev time currently and we need to go to the easiest solution, which is Stripe.

Other criteria that I’m wondering about :
2. World coverage? Or do we want to target Europe only?
3. Age / weight of the payment gateways. Like if it is a startup we might need to wait a couple of years. We don’t want a payment gateways that can be dead soon.I’m adding this in the maintainability criteria.

So here is an updated table with all criteria and pros and cons:

Stripe Mollie Paybox Mangopay
Bancontact YES YES YES YES
Maintainability GOOD BAD BAD GOOD?
Price in EU 1,4 % + 0,25 € 0.39 € ? 1,8% + 0,18€
Price outside EU 2,9 % + 0,25 € ? ? 2,5% + 0,25€
Ewallet NO NO NO YES
World Coverage YES YES ? YES

Looking forward to any feedbacks!

I didn’t find Mollie, @luisramos0 mentioned it first on Github.

That’s a nice comparison. I’m not sure about the price label inside and outside the EU. The Australian pricing for Stripe is 1.75% + 30¢ for national cards and 2.9% + 30¢ for international cards. I think that it’s always relative to the country. Using an Australian credit card in Australia is cheaper than using a European card here. And using a European card in Europe is cheaper than using an Australian card there.

I also find it difficult to imagine how cheap or expensive these fees are when a fixed charged is combined with a percentage. I need absolute amounts. Maybe we can compare to Stripe. Mollie is cheaper than Stripe for all orders bigger than €10,00. And Mangopay is cheaper than Stripe for all orders smaller than €17,50. It’s actually more expensive than Stripe. We can also look at the fee of an average order of €30:

  • Stripe: 67c
  • Mangopay: 72c
  • Mollie: 39c

Mollie Bancontact support is documented here https://www.mollie.com/en/payments/bancontact