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

Environments — full examples →

Production vs development endpoints

ActionProductionDevelopment (sandbox)
Validate beneficiaryhttps://api.rukapay.net/api/v1/gateway/validate-beneficiaryhttps://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox
Process transferhttps://api.rukapay.net/api/v1/gateway/process-transferhttps://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-transfer
  • https://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
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)

  1. Use sandbox API key against dev-api.rukapay.net
  2. Call https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox before first payout test
  3. Call https://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandbox with PARTNER_COLLECT_MNO and a test callbackUrl
  4. Switch to production paths only when going live on api.rukapay.net

API Keys · Getting Started