All articles

Mobile money, and why verification is harder than collection

6 min readTicketRoyality

Building card-only checkout and calling everything else an alternative payment method gets the world backwards. Across much of sub-Saharan Africa, mobile money is not the alternative — it is how people pay for things, and a card is the exotic instrument.

The genuinely hard part

Accepting a mobile money payment is straightforward. Knowing that a specific payment corresponds to a specific order is not, because the confirmation arrives as an SMS to a phone, out of band from the checkout the customer is sitting in.

The failure mode this creates is expensive in both directions: a customer who paid and did not get a ticket, and a ticket issued against a payment that never arrived.

Intents and a code the customer supplies

Checkout registers an intent — this amount, this order, this number, expiring shortly. The customer pays from their phone and receives the provider's confirmation SMS. They enter the code from that message, and it is matched against the open intent.

The customer holds the proof and hands it over deliberately. That is a materially better privacy position than a system reading their messages, and it is also more robust — it does not depend on an app retaining permission to read SMS across an operating system update.

Verification, not collection

The gateway confirms that a payment happened. It does not hold the money. That distinction keeps the platform out of the regulatory perimeter that holding customer funds creates, and it means an outage in verification delays ticket issuance rather than stranding anyone's money.

Issuance waits for confirmation

A ticket is issued when the payment is confirmed and not before. Where confirmation is pending, the order shows as pending — honestly, with what happens next stated — rather than optimistically issuing a ticket that might have to be revoked at the door.

Common questions

Can I buy tickets with mobile money?
Yes. Checkout registers a payment intent, you pay from your phone, then enter the code from the provider's confirmation SMS. It is matched against the open intent and your ticket is issued once the payment is confirmed.

Keep reading

Written and edited by people. Nothing on this blog is generated and published automatically — see our editorial approach.