How M-Pesa Is Used On P2P Trading Platforms

Kenya Coin
7 min readDec 30, 2020

This post describes how m-Pesa Payments for bitcoin (BTC) trades are handled on P2P Trading Platforms.

Note: These procedures describe the process for the Safaricom m-Pesa network that is available in Kenya ($KES currency). Other m-Pesa franchises in other markets (i.e., countries) may have different procedures.

Offers

A P2P Trading Platforms serves four functions:

  • Advertising of Trade Offers (Buyer seeks Seller, or Seller seeks Buyer)
  • Escrow (of the Seller’s Coins)
  • Transaction Support (Notifications, Messaging / Chat, Trade Status)
  • Dispute negotiation (Arbitration, Mediation)

Offers

A trade happens when a buyer finds a seller’s offer and conducts a trade, or when a seller finds a buyer’s offer and conducts that trade. With most P2P trading platforms, the Payment Details for the offer would include enough information to inform the counterparty of how fiat payment is to occur, and any restrictions. No personal information should be included (e.g., mobile number or e-mail address), such that it gets displayed publicly unless the party listing the offer wants that information available publicly.

Initiate (Enter Trade Contract)

TODO: Describe this part, which is where buyer “takes” the seller’s offer, or where the seller “takes” the buyer’s offer. The process in which this happens varies fron one platform to the next, but usually proceeds to where both sides acknowledge each other and then the seller would commit the bitcoins to be purchased into the escrow mechanism.

Request Payment

The bitcoin Seller includes in the Trade / Contract the payment details (or uses the P2P Platform’s in-trade chat feature, depending on the P2P Platform) the mobile number for where the Buyer is to send the m-Pesa payment. Optionally, the Seller may also provide to the Buyer the m-Pesa accountholder’s name that is registered for that m-Pesa account. This is so that the Buyer has the opportunity to know if the payment was sent to the correct mobile number. The mobile number provided may not necessarily be the Seller’s, as if this is a “third party payment”, the Seller may provide the mobile number of someone else (e.g., a family member’s mobile number, if this is a “remittance” payment to them, for example) — the Designated Recipient.

Send Payment

The Buyer uses the “Send Money” feature in the mySafaricom app (if using a smartphone), or the STK menu (if not using the app, or sending from a feature phone), and enters the mobile number provided by the Seller along with the amount to send, followed by the sender’s m-Pesa Account PIN.

A pop up screen will appear with that information. Choosing the response OK will then initiate the send. Another pop up message then appears displaying the name of the person registered for that mobile number. If the Buyer wants to cancel (e.g., the amount was wrong, or the name doesn’t match the name provided by the Seller), the Buyer can simply press any letter or number within 25 seconds and the request to send payment will not proceed. The amount sent plus the m-Pesa transaction fee will then be subtracted from the Buyer’s m-Pesa balance. An m-Pesa Receipt SMS text message is sent by m-Pesa to both the m-Pesa Payment sender (i.e., the Buyer) as well as the m-Pesa Payment recipient (i.e., Seller, or Designated Recipient).

m-Pesa Receipt SMS Text Message

After receiving the m-Pesa Receipt SMS text message, the Buyer then marks the Trade / Contract as “Payment Received”.

Verify That Payment Was Received

The Seller is alerted to the status of the Trade / Contract and verifies that the m-Pesa Payment was received. This verification is performed by requesting an m-Pesa “Mini Statement”, which is received as an SMS text message. If this is a “third party payment”, the Seller would ask the Designated Recipient to confirm that the m-Pesa Payment was received. Because SMS text messages can be “spoofed”, an m-Pesa Receipt SMS text message should not solely be used as evidence that payment was confirmed as scammers would send a fake receipt to trick the Seller into thinking the payment has been received when it was not. The Mini Statement is generated by m-Pesa and will accurately show the details of the m-Pesa Payment, if one was sent. The m-Pesa Receipt SMS text message will also show the m-Pesa Balance that existed after the m-Pesa Payment was received, so some Sellers are comfortable simply eyeballing that to determine if the m-Pesa Payment was received (since nobody else would know that exact amount), but that is a shortcut that should not be relied on.

Release Escrow

If the m-Pesa Payment was truly received, the Seller chooses “Release Escrow” (or similarly named function, depending on the P2P Platform) to cause the Seller’s escrowed bitcoin to be transferred to the Buyer.

NOTE: Once the bitcoin escrow is released to the Buyer, there is no longer anything either the Seller or the P2P Trading Platform’s Dispute Mediator can do to reclaim any of the bitcoin that was released.

Reversal Risk

After the Buyer has sent payment, m-Pesa has a mechanism permitting the Buyer (sender) to reverse the m-Pesa Payment. This reversal will only happen not just if the payment received to the m-Pesa account remain unspent, but also if the recipient gives an OK for the payment to be reversed — at least that’s how it is supposed to work.

Safaricom message describing typical procedures for reversing payment

There are reports of the reversal being processed because the m-Pesa Support Representative could not reach the recipient of the (allegedly) errant m-Pesa Payment, and thus that Support Representative made the judgement that reversal of the m-Pesa Payment was warranted.

The recipient of the m-Pesa Payment has the ability to prevent a reversal from occurring by transferring, spending, or withdrawing the funds that were received. Because a person can have multiple mobile numbers, each with its own m-Pesa Account, Sellers can protect against a reversal by having one m-Pesa dedicated for trading, leaving no balance in the account after transferring out each payment immediately after it is received.

Disputes

If there is a dispute between the Buyer and Seller, the P2P Platform’s Dispute Mediator / Arbitrator has a few methods available to assist in finding a resolution. The Mini Statement from both the sender (i.e., Buyer) and the m-pesa Payment Recipient (i.e., the Seller or the Designated Recipient) should both show the same m-Pesa Payment (with the same “confirmation” number existing on both sides). If the dispute cannot be resolved (e.g., Buyer’s Mini Statement shows the payment sent, but the m-Pesa payment recipient’s Mini Statement does not) the two can try to raise the dispute with m-Pesa Customer Support. There is also the option for both sides to receive an m-Pesa Full Statement that is received as a PDF via e-mail.

Between the m-Pesa Receipt SMS text message from both sides, and/or a Mini Statement SMS text message or Full Statement (PDF) from both sides, the P2P Platform Dispute Mediator might have enough information to resolve the dispute. In the rare occurrence where the dispute still remains unresolved, further progress towards resolution might be made by coaching each of the two parties to invite each to go visit an m-Pesa store location (e.g., Safaricom shop) and request assistance from staff to help identify where the problem might lie and possible options to resolve the issue.

Payment Network Integration

The m-Pesa Payment Network has integrated with numerous other payment networks. For instance, a Buyer might use a remittance network (e.g., WorldRemit) to send payment to the mobile number provided by the seller. In that situation, the Buyer does not have an m-Pesa Account and is sending through the remittance network.

Another integration is with domestic banks. An Equity bank customer can send money to an m-Pesa mobile number using the Equitel platform. That is another example where the Buyer might not have an m-Pesa account and is sending through another payment network. These variations can make settling disputes involve a variation of the procedures described above. The Seller listing a Trade Offer may include wording to require that the Buyer must have an m-Pesa account (to prevent a potential issue from involvement of an intermediary payment network).

There’s yet another integration, and that is with a service offered by m-Pesa itself — Lipa na m-Pesa. The Seller might have a Lipa na m-Pesa merchant account. The Seller would ask the Buyer to pay a Lisa na m-Pesa “paybill” number instead of using Send Money to send to a mobile number. The process is otherwise similar to a normal Send Money transaction, however there is no option for the person paying that Lipa na m-Pesa paybill to later reverse the payment.

Resources

There is an m-Pesa user guide with a section on Sending Money, Withdrawing, and more. Additionally, an m-Pesa app (standalone) is soon to be released.

Contact

For suggestions, corrections or additions, feel free to send a direct message to @KenyaCoin on Twitter, or to @KenyaCoin@BitcoinHackers.org using Mastodon.

--

--

Kenya Coin

Curated Bitcoin and other cryptocurrency news as it relates to Kenya.