Required fields for UMEME
customerName— from validate responsebeneficiary.namephoneNumber— real Uganda MSISDN (256XXXXXXXXX)customerType— customerType must be PREPAID or POSTPAID — use the value returned by validate-beneficiary (beneficiary
Gateway API
Pay utilities and subscriptions with PARTNER_PAY_BILL_PAYMENT.
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.
https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandboxhttps://dev-api.rukapay.net/api/v1/gateway/process-transfer-sandboxBill payments use billerCode (e.g. NWSC, UMEME, URA) and customer accountNumber. Aliases biller_code and account_number are accepted.
POST /validate-beneficiary with billerCode and accountNumber to confirm the account and retrieve beneficiary.name, customerType (UMEME), or area (NWSC).POST /process-transfer with the amount, customerName (from validate), a real Uganda phoneNumber, and any biller-specific fields echoed from the validate response.Select a biller to see validate and pay request examples. Each biller has different required fields on the pay step.
UMEME — Uganda Electricity Distribution Company · Sandbox test account: 1111222233
curl -X POST https://api.rukapay.net/api/v1/gateway/validate-beneficiary \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactionMode": "PARTNER_PAY_BILL_PAYMENT",
"billerCode": "UMEME",
"accountNumber": "1111222233"
}'On sandbox use validate-beneficiary-sandbox instead.
curl -X POST https://api.rukapay.net/api/v1/gateway/process-transfer \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactionMode": "PARTNER_PAY_BILL_PAYMENT",
"amount": 50000,
"currency": "UGX",
"billerCode": "UMEME",
"accountNumber": "1111222233",
"customerName": "Mary Nakato",
"phoneNumber": "256770123456",
"narration": "UMEME bill payment",
"partnerReference": "BILL-UMEME-001",
"customerType": "PREPAID"
}'Required fields for UMEME
customerName — from validate response beneficiary.namephoneNumber — real Uganda MSISDN (256XXXXXXXXX)customerType — customerType must be PREPAID or POSTPAID — use the value returned by validate-beneficiary (beneficiarycurl -X POST https://dev-api.rukapay.net/api/v1/gateway/validate-beneficiary-sandbox \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transactionMode": "PARTNER_PAY_BILL_PAYMENT",
"billerCode": "UMEME",
"accountNumber": "1111222233"
}'https://api.rukapay.net/api/v1/gateway/process-transfertransactionModeRequiredPARTNER_PAY_BILL_PAYMENT
amountRequiredAmount in UGX (minimum 100).
currencyRequiredCurrency code. Default UGX.
narrationRequiredTransfer description shown in records.
partnerReferenceRequiredUnique partner reference for idempotency and tracking.
billerCodeRequiredBiller code: NWSC, UMEME, URA, DSTV, GOTV, or STARTIMES. Alias: biller_code.
accountNumberRequiredCustomer account or meter number. Alias: account_number.
customerNameRequiredAccount holder name from validate-beneficiary (beneficiary.name). Aliases: accountName, recipientName.
phoneNumberRequiredUganda MSISDN 256XXXXXXXXX. Dummy numbers such as 256700000000 are not allowed. Aliases: customer_phone, customerPhone.
customerTypeRequired for UMEME: PREPAID or POSTPAID (from validate). Aliases: area, meterNumber.
areaRequired for NWSC: service area (e.g. Kampala). Valid values: Kampala, Entebbe, Jinja, Mukono, Iganga, Lugazi, Kawuku, Kajjansi, Others. Aliases: customerType, meterNumber.
walletTypeESCROW or COMMISSION. Default ESCROW.
metadataCustom data returned in partner callback.
{
"transactionMode": "PARTNER_PAY_BILL_PAYMENT",
"amount": 50000,
"currency": "UGX",
"billerCode": "UMEME",
"accountNumber": "1111222233",
"customerName": "Mary Nakato",
"phoneNumber": "256770123456",
"narration": "UMEME bill payment",
"partnerReference": "BILL-UMEME-001",
"customerType": "PREPAID"
}{
"success": true,
"message": "Transfer processed successfully",
"transaction": {
"transactionId": "cm5abc123xyz",
"reference": "RKP-20260521-001",
"amount": 50000,
"fee": 1000,
"totalCharged": 51000,
"status": "SUCCESS",
"recipient": {
"name": "John Doe",
"account": "256700000000",
"provider": "MTN"
},
"createdAt": "2026-05-21T10:30:00.000Z"
},
"walletBalance": {
"walletId": "wal_partner_escrow",
"walletType": "ESCROW",
"balanceBefore": 1000000,
"balanceAfter": 949000,
"currency": "UGX"
}
}OK
Bill payment processed or pending.
https://api.rukapay.net/api/v1/gateway/validate-beneficiarytransactionModeRequiredPARTNER_PAY_BILL_PAYMENT
billerCodeRequiredBiller code: NWSC, UMEME, URA, DSTV, GOTV, or STARTIMES. Alias: biller_code.
accountNumberRequiredCustomer account or meter number. Alias: account_number.
{
"transactionMode": "PARTNER_PAY_BILL_PAYMENT",
"billerCode": "UMEME",
"accountNumber": "1111222233"
}{
"success": true,
"message": "Beneficiary validated successfully",
"beneficiary": {
"billerCode": "UMEME",
"accountNumber": "1111222233",
"name": "Mary Nakato",
"customerType": "PREPAID",
"area": "PREPAID",
"isValid": true
}
}OK
Account validated.
https://api.rukapay.net/api/v1/gateway/transactions/{transactionIdOrReference}/statustransactionIdOrReferenceRequiredTransaction ID or your partnerReference.
{
"success": true,
"message": "Transaction found",
"transaction": {
"id": "cm5abc123xyz",
"partnerReference": "PARTNER-REF-123456",
"mnoId": "MTN-FIN-987654",
"mnoTransactionId": "MTN-FIN-987654",
"amount": 50000,
"fee": 1000,
"totalAmount": 51000,
"currency": "UGX",
"status": "SUCCESS",
"destinationType": "MNO",
"destination": { "phoneNumber": "256700000000", "provider": "MTN" },
"createdAt": "2026-05-21T10:30:00.000Z",
"completedAt": "2026-05-21T10:30:45.000Z"
}
}OK
Transaction found.
Not Found
TRANSACTION_NOT_FOUND.
Pass the biller code in billerCode. There is no list-billers endpoint — use the codes below.
| Code | Biller | Extra pay fields | Sandbox account |
|---|---|---|---|
UMEME | Uganda Electricity Distribution Company | customerType | 1111222233 |
NWSC | National Water and Sewerage Corporation | area | 123456789 |
URA | Uganda Revenue Authority | — | 2222333344 |
DSTV | DSTV Pay-TV subscription | — | 3333444455 |
GOTV | GOtv Pay-TV subscription | — | — |
STARTIMES | StarTimes Pay-TV subscription | — | — |