Overview
RohoPay is a single REST API (api.rohopay.com) that sits between your application and two payment providers — Relworx (mobile money + card) and Iotec (mobile money). You interact only with the RohoPay API; provider selection, failover, and commission tracking are handled automatically.
Request Flows
Mobile Money Collection
- You call
POST /api/v1/collectwith phone + amount - RohoPay creates a transaction record and calls the provider
- Provider sends a USSD prompt to the user’s phone
- User approves or rejects
- Provider sends a webhook to RohoPay
- RohoPay updates the transaction and fires
deposit.successful(or similar) to yourcallback_url
Card Payment (3D Secure)
- You call
POST /api/v1/checkoutwith card details +return_url - RohoPay creates a card order and returns a
payment_url - You redirect the user to
payment_url(bank’s 3DS page) - User authenticates with their bank
- User is redirected back to your
return_url - Provider sends a webhook confirming the final status
- RohoPay fires
deposit.successfulto yourcallback_url
Provider Routing
Each project has apreferred_provider setting. If the preferred provider is unavailable, RohoPay automatically routes to the other provider. The failover_reason field on the transaction records why.
| Provider | Mobile Money | Card |
|---|---|---|
| Relworx | ✅ | ✅ |
| Iotec | ✅ | ❌ |
Platform URLs
| Service | URL | Purpose |
|---|---|---|
| API | api.rohopay.com | REST API — what you call |
| Dashboard | payments.rohopay.com | Manage projects, wallet, keys |
| Digital checkout | products.rohopay.com | Buyer-facing payment pages |
| WordPress | plugins.rohopay.com | WooCommerce plugin management |
| Website | rohopay.com | Marketing / public site |
Authentication Model
| Caller | Auth type | Scope |
|---|---|---|
| Your server / app | Authorization: Bearer {api_key} | Per-project API access |
| Card checkout (browser) | api_key in request body | Single checkout initiation |
| RohoPay → your server | x-rohopay-signature HMAC header | Webhook delivery verification |
Key Security Properties
- API keys are hashed before storage — the raw key is shown once at creation
- Key rotation is atomic — new key issued and old one revoked simultaneously
- Webhooks are signed with HMAC-SHA256 — always verify before processing
- Idempotency keys prevent duplicate charges on network retries