Skip to content

Disbursement

Tip

Payout API is used to initiate transfer requests to e-wallets or bank accounts.

  • All requests are Post requests, and the data format is json
Disbursement Methods
wayCode Description
MPESA M-Pesa mobile wallet
AIRTEL Airtel Money mobile wallet
TKASH T-Kash mobile wallet
BANK_TRANSFER Bank transfer
Request URL
  • /v1/vexora/disbursements
Request Method
  • Method: POST
  • Content-Type: application/json
header Required Type Description
merchantNo Yes String None
Request Body Parameters
Parameter Required Type Description
sign Yes String Except for the sign field, all remaining fields should be sorted alphabetically by their first letter, combined into key1=value1key2=value2, and encrypted using the app secret as salt via MD5. The final sign value should be in lowercase.
timestamp Yes integer Timestamp
amount Yes String Payment amount (KSH 50 or above is recommended; integers only)
wayCode No String Disbursement method. If omitted, MPESA is used by default. See the disbursement methods list above for supported values.
bankCode No String Bank code. Required when wayCode is BANK_TRANSFER. Refer to the BankCode appendix.
accountNo No String Bank account number. Required when wayCode is BANK_TRANSFER.
remark No String Request remark
tradeNo Yes String Unique transaction number (recommended format: year, month, day, hour, minute, second + random number)
mobile Yes String 12-digit mobile number prefixed with 2541 or 2547. When wayCode is MPESA, AIRTEL, or TKASH, this field is the wallet account number.
notifyUrl No String Asynchronous callback URL
Request Parameter Example
{
  "sign": "000000",
  "timestamp": "1715941383720",
  "amount": "50",
  "remark": "000000",
  "tradeNo": "1000023",
  "mobile": "254115555088",
  "wayCode": "MPESA"
}
Response Result
Parameter Required Type Description
msg Yes String Request result (when returning success, it only indicates that the request was successful and cannot be used for merchant-side logic judgment)
code Yes String Request response code (when returning 0000, it only indicates that the request was successful and cannot be used for merchant-side logic judgment). For specific error codes, please refer to the business error code enumeration.
timestamp Yes Integer Transaction time in milliseconds
success Yes Boolean Transaction result
data Yes Object Return object
data.serialNumber Yes String Result ID returned by vexora, unique
data.status Yes String Transaction results,Merchants can process subsequent workflows based on the returned status in the transaction result. For details, please refer to the status code reference table.
data.desc Yes String Error description
data.remark Yes String Request return content (returned as-is)
Successful Response Example
{
    "msg": "success",
    "code": "0000",
    "timestamp": 1719829933893,
    "success": true,
    "data": {
        "serialNumber": "32e936de44164512abe419a9d1b2449a",
        "status": "0015",
        "desc": "CREDIT_INPROGRESS",
        "remark": "000000"
    }
}