Environments
Production vs development URLs. In dev you must use -sandbox endpoints.
Development / sandbox: use -sandbox endpoints
On https://dev-api.rukapay.net (dev), do not call the production paths. Use the full sandbox URLs below — same request body, simulated responses, no real money movement.
- Validate beneficiary:
https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox - Process transfer:
https://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandbox
Production: https://api.rukapay.net/api/v1/gateway/validate-beneficiary · https://api.rukapay.net/api/v1/gateway/process-transfer
Production vs development endpoints
| Action | Production | Development (sandbox) |
|---|---|---|
| Validate beneficiary | https://api.rukapay.net/api/v1/gateway/validate-beneficiary | https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox |
| Process transfer | https://api.rukapay.net/api/v1/gateway/process-transfer | https://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandbox |
Sandbox host: https://dev-api.rukapay.net
Production
Base URL: https://api.rukapay.net/api/v1/gateway
https://api.rukapay.net/api/v1/gateway/process-transferhttps://api.rukapay.net/api/v1/gateway/validate-beneficiary
Live API keys only. Real funds move on MTN, Airtel, banks, and bill networks.
Development / sandbox
Base URL: https://dev-api.rukapay.net/api/v1/gateway
While integrating against dev, always call the -sandbox paths — not process-transfer or validate-beneficiary.
https://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandbox— simulated transfers (send, collect, bank, bill, airtime)https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox— dummy beneficiary validation
Request and response bodies are the same as production. Sandbox endpoints are only available in the development environment.
Sandbox transfer example
curl -X POST https://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandbox \
-H "x-api-key: YOUR_SANDBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactionMode": "PARTNER_COLLECT_MNO",
"amount": 50000,
"currency": "UGX",
"phoneNumber": "256700000000",
"mnoProvider": "MTN",
"narration": "Invoice payment #1001",
"partnerReference": "PARTNER-REF-123456",
"callbackUrl": "https://your-app.com/webhooks/rukapay"
}'Sandbox validate example
curl -X POST https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox \
-H "x-api-key: YOUR_SANDBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"transactionMode":"PARTNER_SEND_MNO","phoneNumber":"256700000000","mnoProvider":"MTN"}'Partner Swagger
Interactive API docs (when enabled): {PARTNER_API_URL}/partner/docs
Testing checklist (dev)
- Use sandbox API key against dev-api.rukapay.net
- Call
https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandboxbefore first payout test - Call
https://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandboxwithPARTNER_COLLECT_MNOand a testcallbackUrl - Switch to production paths only when going live on api.rukapay.net