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

GET/pingCheck that your key works.
GET/accountMerchant id and object counts.
GET/balanceCollected, paid out and net balance.
POST/collectCharge a mobile money wallet.
POST/payoutsSend money to a mobile money wallet.
GET/transactionsList with filters and pagination.
GET/transactions/{reference}One transaction, re-checked live.
GET/paymentsLatest 100 records (shortcut).
GET/payment-linksList your payment links.
POST/payment-linksCreate a hosted checkout link.
PATCH/payment-links/{id}Pause, resume or edit a link.
DELETE/payment-links/{id}Delete a link.
GET/webhooksList endpoints and their secrets.
POST/webhooksRegister an endpoint.
POST/webhooks/{id}/testSend a test event.
DELETE/webhooks/{id}Remove an endpoint.
GET/webhook-deliveriesRecent delivery attempts.
Quick start
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.