Skip to content

Payouts API

Payout (disbursement) operations — send money to recipients. Access via payd.payouts.

Methods

mpesa(params)

Send money to an M-Pesa user in Kenya.

Endpoint: POST /api/v2/withdrawal

typescript
const result = await payd.payouts.mpesa(params: MpesaPayoutParams): Promise<MpesaPayoutResponse>;

MpesaPayoutParams

FieldTypeRequiredDescription
phoneNumberstringYesRecipient's Kenyan phone: 0XXXXXXXXX or +254XXXXXXXXX
amountnumberYesAmount in KES (10 – 250,000)
narrationstringYesPayout description
callbackUrlstringYes*Webhook URL
walletType"local" | "USD"NoFunding wallet (default: "local")

MpesaPayoutResponse

FieldTypeDescription
successbooleanWhether payout was initiated
messagestringAPI message
statusstringStatus string
transactionReferencestringUnique transaction reference
channelstring"MPESA"
amountnumberPayout amount
_rawRecord<string, unknown>Raw API response

panAfrican(params)

Send money to a mobile wallet or bank account across Africa.

Endpoint: POST /api/v2/payments

typescript
const result = await payd.payouts.panAfrican(params: PanAfricanPayoutParams): Promise<PanAfricanPayoutResponse>;

PanAfricanPayoutParams

FieldTypeRequiredDescription
usernamestringYes*Payd account username
networkCodestringYesFrom network discovery
accountName"bank" | "phone"YesAccount type
accountHolderNamestringYesRecipient's full name
accountNumberstringYesBank account or mobile money number
amountnumberYesAmount in target currency (> 0)
phoneNumberstringYesPhone with country code (+XXXXXXXXX)
channelIdstringYesFrom network discovery
narrationstringYesPayout description
currencystringYesISO currency code (e.g., NGN)
callbackUrlstringYes*Webhook URL
transactionChannel"bank" | "phone"YesMust match network type
providerNamestringYesProvider name from network discovery
providerCodestringYesProvider code from network discovery
walletType"local" | "USD"NoFunding wallet (default: "local")

PanAfricanPayoutResponse

FieldTypeDescription
successbooleanWhether payout was initiated
messagestringAPI message
statusstringStatus string
transactionReferencestringUnique transaction reference
channelstringPayment channel
amountnumberPayout amount
_rawRecord<string, unknown>Raw API response

merchant(params)

Pay to an M-Pesa Paybill or Till number in Kenya.

Endpoint: POST /api/v3/withdrawal

typescript
const result = await payd.payouts.merchant(params: MerchantPayoutParams): Promise<MerchantPayoutResponse>;

MerchantPayoutParams

FieldTypeRequiredDescription
usernamestringYes*Payd account username
amountnumberYesAmount in KES (> 0)
phoneNumberstringYesPhone with country code (+254XXXXXXXXX)
narrationstringYesPayment description
businessAccountstringYesPaybill or Till number
businessNumberstringYesAccount number (Paybill) or "N/A" (Till)
callbackUrlstringYes*Webhook URL
walletType"local" | "USD"NoFunding wallet (default: "local")

MerchantPayoutResponse

FieldTypeDescription
successbooleanWhether payment was initiated
messagestringAPI message
statusstringStatus string
transactionReferencestringUnique transaction reference
channelstringPayment channel
amountnumberPayment amount
_rawRecord<string, unknown>Raw API response

*Fields marked with * fall back to client defaults if empty.

Released under the MIT License.