One REST endpoint to trigger STK Push, auto-settle funds, and receive real-time webhooks. No SDK. No boilerplate. Just clean JSON.
1.5%
Platform fee
<2s
STK latency
99.9%
API uptime
KES 0
Setup cost
POST a request. Your customer gets a prompt on their phone. You get paid and notified via webhook. That's the whole flow.
$ curl -X POST https://obedgateway.com/api/v1/stk-push \ -H "Authorization: Bearer mpg_live_xxxxxxxx" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: order-5521-attempt-1" \ -d '{ "amount": 1000, "phone": "254712345678", "reference": "ORDER-5521", "description": "T-shirt purchase"}'# ✓ Response{ "success": true,"transaction_id": "txn_8f3a2b9cde","status": "pending","net_amount": 985,"poll_url": "/api/v1/transactions/txn_8f3a2b9cde"}}
All the primitives developers expect — secure, observable, and ready to scale from first transaction to millionth.
Trigger the M-Pesa payment prompt on any Safaricom number with a single REST call.
Funds settle to Paybill, Till, or Bank automatically — no manual transfers ever.
HMAC-signed events for payment.success, payment.failed, and payout events.
API keys hashed at rest. Webhook payloads HMAC-SHA256 signed. RLS on every table.
Full sandbox with test keys, isolated data. Flip to live in one click.
Plain REST. JSON in, JSON out. No SDK lock-in. Works with any backend stack.
Shareable hosted checkout pages. No code needed — share a URL, collect money.
Real-time transaction dashboard, API key management, and payout account tracking.
Safe retries via Idempotency-Key header — duplicate requests are deduplicated automatically.
No monthly fees. No setup costs. Pay only when you process.