Skip to main content

Uganda

CurrencyUGX
Country codeUG
Phone formatCountry code 256 + number, digits only, no + (e.g. 256772123456)
Collect withMobile money push, Checkout
Send withprovider: "INTASEND-XB"
Amount limitsMobile money: UGX 500 to 5,000,000. Bank: UGX 5,000 to 5,000,000

Networks​

NetworkDetected by prefix / operator_code
MTN Mobile Money25677, 25678, 25676, 25639
Airtel Money25670, 25675, 25674

Collect a payment​

Send a mobile money prompt to the customer's phone:

curl -X POST https://api.intasend.com/api/v1/payment/intasend-xb-push/ \
-H "Authorization: Bearer $INTASEND_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "UGX",
"country": "UG",
"phone_number": "256772123456",
"api_ref": "order-123"
}'

On Checkout with currency: "UGX", customers can choose MTN or Airtel. The amount must be between 500 and 5,000,000.

The response contains an invoice in PENDING or PROCESSING state. Wait for the collection_event webhook or poll payment status until state is COMPLETE or FAILED.

Send money​

Validate the recipient first​

curl -X POST https://api.intasend.com/api/v1/send-money/validate-accounts/ \
-H "Authorization: Bearer $INTASEND_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider": "INTASEND-XB",
"country": "UG",
"account": "256772123456"
}'

Initiate the payout​

curl -X POST https://api.intasend.com/api/v1/send-money/initiate/ \
-H "Authorization: Bearer $INTASEND_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"currency": "UGX",
"country": "UG",
"provider": "INTASEND-XB",
"requires_approval": "NO",
"callback_url": "https://example.com/intasend/payouts",
"transactions": [
{
"name": "John Doe",
"account": "256772123456",
"amount": "5000",
"narrative": "Payout"
}
]
}'

Track it with /send-money/status/ using the returned tracking_id.

Send to a bank account​

Use provider: "INTASEND-XB-BANK". Bank codes come from GET /send-money/bank-codes/ug/.

curl -X POST https://api.intasend.com/api/v1/send-money/initiate/ \
-H "Authorization: Bearer $INTASEND_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"currency": "UGX",
"country": "UG",
"provider": "INTASEND-XB-BANK",
"transactions": [
{
"name": "Okello James",
"account": "3100012345",
"bank_code": "CENTENARY_RURAL_DEVELOPMENT_BANK_UGANDA_TRANSFER",
"amount": "50000",
"narrative": "Supplier"
}
]
}'

name is the account holder's name. You can validate a bank account first with {"provider": "INTASEND-XB-BANK", "country": "UG", "account": "…", "bank_code": "…"}.