Mobile Money Integration
YnoPay reconciles mobile money payments in real time by parsing SMS notifications from collector phones. This guide explains how the flow works.
Architecture
- Merchant registers a Collector Device (Android phone with an active mobile money SIM)
- Customer sends a P2P transfer to the collector phone number
- The collector app reads the operator confirmation SMS
- The SMS is parsed by YnoPay's operator-specific parsers
- The parsed transaction is matched to a
PaymentIntent - A
payment_intent.succeededwebhook fires
Supported operators
| Operator | Countries | Status |
|---|---|---|
| Orange Money | Mali, Burkina Faso | Live |
| Moov Money | Mali | Live |
| Wave | Senegal, Ivory Coast | Coming soon |
| MTN MoMo | Ivory Coast, Guinea | Coming soon |
Setting up a collector
// 1. Create a collector device
const device = await ynopay.collectorDevices.create({
label: 'Shop Phone - Orange',
});
// 2. Store the secret securely (shown once)
console.log(device.secret); // hmac_...
// 3. Install the YnoPay Collector app on the phone
// 4. Enter the device ID and secret during pairing
// 5. The app auto-starts SMS listeningMatching logic
YnoPay matches incoming payments to PaymentIntents using:
- Amount — exact match to the PaymentIntent amount
- Reference — merchant reference embedded in the SMS (if the customer included it)
- Timing — payments received within the session window
Unmatched payments appear in the dashboard reconciliation view for manual matching.