Feature request: Accommodate Safaricom M-Pesa (Kenya) added as a payment method for KES (Kenyan Shilling) national currency

This could be done with a payment type just for this one mobile payment network, just as how Chase QuickPay gets its own payment method entry, however mobile money is more of a category with various mobile network options within.

But after that, it’s pretty basic.

Would need three fields in total:

Country: [ India | Kenya | Romania .| Uganda } etc. ]

Network: [ Safaricom M-Pesa | Airtel (Kenya) ]

Mobile number: [+[country code] nnnnnnnnn ]

No name needed.

Could this be something added to the roadmap?

M-Pesa is a good payment method for trading because it is relatively hard money. One cannot simply do a chargeback, though there are reversals that are performed when fraud (e.g., thief uses a stolen phone and somehow figures out the PIN) I don’t know if other mobile money networks have the same degree of being non-repudiable as M-Pesa, but most are going to work much better than, say, PayPal as the payment method.

Hey @sgornick, yes, this is something we’d be interested in adding. It’s just been a matter of finding someone experienced with M-Pesa to provide the information you’ve provided above. Do you have direct personal experience with M-Pesa? Any further details you can provide would be appreciated, especially with regard to how you know these things to be true. Thanks!

I lived in Kenya 2013-2016 and used Safaricom M-Pesa daily for deposit (cash-in), withdraw (cash-out), send and receive, Lipa na M-Pesa (retail merchant payments) and PayBill (e.g., for utility bill payment). I used M-Pesa regularly for both local (in-person/face-to-face) and online Bitcoin buy/sell trading. I did similar with Airtel (KE) there, though on a much less frequent basis. I sell Bitcoin to buyers paying with M-Pesa on LocalBitcoins yet today.

Here’s an example of the response from M-Pesa (received via SMS) to a successful send transaction.

“Your transaction of Kshs. NNNN.N has successfully been credited to 254XXXXXXXXX - FIRSTNAME LASTNAME with Ref. Number 123456789012 and MPESA Receipt Number XYZ1ABCDE0.Thank you”

There are various funding methods (e.g., transfer from Equitel bank account to an M-Pesa mobile number), so there are a few different response messages.

In a dispute, there’s really no way for the recipient or third party to prove that this response message is authentic though. So a fraudulent sender could fabricate such a receipt / screen shot, to claim funds were sent even though no funds were sent.

An additional fraudulent activity for users to be on the alert for is the spoofed transaction receipt. The recipient might see an SMS message/receipt stating that NNNN.NN ksh was received, and thus deliver the escrowed bitcoins – only to later realize the text message did not come from Safaricom / M-Pesa and thus no shillings had actually been received.

M-Pesa does have some restrictions. At most 70,000 Ksh (~USD$700) can be sent per-transaction, and 140,000 Ksh per day / 24-hour period. The maximum balance in a phone account is 100,000 Ksh, so a person sending two 70,000 Ksh transactions will find one transaction completes and the second attempt will fail.

I am not sure that we can add a payment method where there is no tamper-proof evidence of sending funds.

If there is no way for the arbitrator to determine if the money was sent or not, there is not much more that he can do other than take a blind guess.

Lack of certainty in receiving the funds is just another problem that will allow for trades to never even go to arbitration and BTC to be completely out of control of the arbitrator in case of fraud.

Doesn’t every payment method have this same flaw?

I can say I transferred funds via Chase QuickPay, for instance, but if the receiver claims to have not received it there is no way for an arbitrator to know for sure. I can fabricate a confirmation message (screen shot, for instance) requiring little more technical sophistication than the fabricated M-Pesa confirmation message I describe. Chase isn’t going to tell a third party (e.g., arbitrator) whether or not a transaction between two accounts occurred.

So if Bisq is limited to only payment methods having “tamper-proof evidence of sending funds”, the list of payment methods will be pretty short.

Arbitration process can make use of software like PageSigner to make cryptographic screen shot of the webpage that uses HTTPS. So for online banking there is a way to prove the payment.

Safaricom does provide online statements, using their “selfcare” website:

There is also an M-Ledger app (Android) that lets you see transaction history.

1 Like

And since I’m limited to two links per reply, I’m posting more here:

Other methods include send a “mini statement” (received via SMS), or full statement to e-mail:

Well the website is then enough, I guess, to provide tamper-proof evidence of a payment.