m0xy is built on Kenya's payment rails from day one — not bolted on. Production Daraja. HMAC-verified callbacks. Consent-first architecture. We are ready for Open Banking before the APIs drop.
The opportunity
What we built
Unified transaction schema
Every payment rail normalized to one format. The same schema whether the source is an M-Pesa STK Push, a Pochi la Biashara transfer, or a future Open Banking API feed.
{
"transaction_id": "TXN_MPE_9842104",
"provider": "MPESA_STK",
"timestamp": "2026-06-03T16:15:00Z",
"amount": 1500.00,
"currency": "KES",
"direction": "OUTBOUND",
"status": "completed",
"counterparty": {
"name": "NAIVAS SUPERMARKET",
"type": "MERCHANT",
"identifier": "7654321"
},
"category": "Shopping",
"mpesa_receipt": "RGH72KQ9X1",
"consent_verified": true
}
{
"transaction_id": "TXN_PCH_1029384",
"provider": "MPESA_POCHI",
"timestamp": "2026-06-03T14:22:00Z",
"amount": 350.00,
"currency": "KES",
"direction": "OUTBOUND",
"status": "completed",
"counterparty": {
"name": "MAMA MBOGA - GIKOMBA",
"type": "POCHI_MERCHANT",
"identifier": "2547XXXXXXXX"
},
"category": "Food & Drinks",
"mpesa_receipt": "RGH83LR2Y4",
"consent_verified": true
}
{
"transaction_id": "TXN_PBL_7730192",
"provider": "MPESA_PAYBILL",
"timestamp": "2026-06-02T09:05:00Z",
"amount": 4200.00,
"currency": "KES",
"direction": "OUTBOUND",
"status": "completed",
"counterparty": {
"name": "KENYA POWER",
"type": "UTILITY",
"identifier": "522522"
},
"category": "Utilities",
"account_reference": "01234567890",
"consent_verified": true
}
{
// Same schema. Different adapter.
// When CBK Open Banking APIs launch,
// only the intake pipe changes.
"transaction_id": "TXN_OBK_4410293",
"provider": "CBK_OPEN_BANKING_API",
"timestamp": "2026-XX-XXT00:00:00Z",
"amount": 8750.00,
"currency": "KES",
"direction": "OUTBOUND",
"status": "completed",
"counterparty": {
"name": "EQUITY BANK",
"type": "BANK_TRANSFER",
"identifier": "0123456789"
},
"category": "Savings",
"fapi_standard": "KE-OAUTH-2026.1",
"consent_verified": true
}
CBK Open Banking alignment