Integrations

Disbursement

Send funds securely from your business account to a recipient.

Overview

Disbursements are asynchronous transactions. Store your reference and wait for a confirmed final status.

Send a disbursement

Mobile Money disbursements

Use POST {{base_url}}/payments/disburse to send a Mobile Money disbursement through mtn_ug or airtel_ug.

The request body is the same for Personal and Business accounts. Only the Authorization header changes according to the client configured on the Integrations page.

Request fields

FieldTypeDescription
provider_code string The Mobile Money provider. Use mtn_ug or airtel_ug.
amount integer The disbursement amount in whole UGX. For example, 50000 represents UGX 50,000.
customer_phone string The recipient's phone number using digits only. It must start with country code 256.
external_id string A unique ID generated for this request. Webhooks return it so your application can identify the related disbursement.

Personal account disbursement

Use the Bearer-authenticated paymentGateway configured with the Personal account access token.

Personal account request
const t = await paymentGateway.post("{{base_url}}/payments/disburse", {
  provider_code: "mtn_ug",
  amount: 50000,
  customer_phone: "256700000000",
  external_id: "txn_20260717_003",
});

if (t.status !== 201) throw new Error("Disbursement request failed");

Business account disbursement

Use the API-key-authenticated paymentGateway configured with the Business account API key ID and secret.

Business account request
const t = await paymentGateway.post("{{base_url}}/payments/disburse", {
  provider_code: "airtel_ug",
  amount: 50000,
  customer_phone: "256700000000",
  external_id: "txn_20260717_004",
});

if (t.status !== 201) throw new Error("Disbursement request failed");

Successful request

A successful disbursement request returns HTTP 201 Created. The response includes payment_id; store it so you can retrieve the payment and check its latest status.