ObPay API
Base URL: https://obpay.online/api/public/v1
The ObPay API lets your website or app receive and send mobile money in Uganda, Kenya and Tanzania. Every request is JSON over HTTPS, authenticated with your secret key, and every response has the same shape: { "success": true, "data": … } or { "success": false, "error": "…" }.
1. Create an API key
Dashboard → API keys. Copy the secret once; it is never shown again.
2. Receive money
POST /collect with the payer's number and the amount.
3. Send money
POST /payouts to pay a customer, supplier or staff member.
4. Confirm the result
Listen for a webhook, or poll GET /transactions/{reference}.
All endpoints
/pingCheck that your key works./accountMerchant id and object counts./balanceCollected, paid out and net balance./collectCharge a mobile money wallet./payoutsSend money to a mobile money wallet./transactionsList with filters and pagination./transactions/{reference}One transaction, re-checked live./paymentsLatest 100 records (shortcut)./payment-linksList your payment links./payment-linksCreate a hosted checkout link./payment-links/{id}Pause, resume or edit a link./payment-links/{id}Delete a link./webhooksList endpoints and their secrets./webhooksRegister an endpoint./webhooks/{id}/testSend a test event./webhooks/{id}Remove an endpoint./webhook-deliveriesRecent delivery attempts.curl -X POST "https://obpay.online/api/public/v1/collect" \
-H "Authorization: Bearer sk_live_your_secret_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "UGX",
"phone_number": "+256700000000",
"reference": "ORDER-1001",
"description": "Order 1001"
}'Rate limit: 90 requests per minute per key. Amounts are in the major unit (5000 = UGX 5,000). Phone numbers can be local (0700000000) or international — ObPay converts them for you.