KES Payout (new encryption)
Summary
These APIs are used to initiate a KES payout
Integration steps
Token GenerationGet Bank Lists
Make a GET call to the Bank List API
GET {{env_url}}/wallet/merchant/bank/transfer/request/banks/KES?type=mobile-money
Headers
Content-Type
application/json
Authorization
Bearer <token here>
{
"message": "success",
"error": null,
"data": [
{
"code": "M-PESA",
"name": "M-PESA - MOBILE MONEY"
},
{
"code": "AIRTEL",
"name": "AIRTEL"
}
]
}Resolve Bank Account (Not Available)
(Not Available)Make a POST call to the resolve account API
POST {{env_url}}/wallet/merchant/bank/transfer/request/resolve/account
Headers
Context-Type
application/json
Authorization
Bearer <token here>
Request Body
bankCode*
430000
countryCode*
KE
accountNumber*
0690000032
accountType*
personal
documentType*
String
Customer’s mode of identity. This could be one of: [identityNumber, passportNumber, businessRegistrationNumber]
businessId*
String
133
documentNumber*
String
8801235111088
{
"status": true,
"message": "Personal Account Verification attempted",
"data": {
"verified": true,
"verificationMessage": "Account is verified successfully"
}
}This error occurs when the account number cannot be verified
{"error":"Bad request"}This error occurs when the right "countryCode" is not passed in
{
"message": "Operation not allowed.",
"error": "Operation not allowed",
"data": null
}Merchant Payout request
Make a POST call to the Merchant payout request API
POST {{env_url}}/wallet/merchant/{businessId}/bank/transfer/v2/request
You would need to pass, as a header the x-auth-token. This can be obtained from your merchant dashboard → Settings → Generate API keys → Merchant public key.
Headers
Content-Type
application/json
x-auth-token
Your merchant public key
Authorization
Bearer <token here>
Request body (encrypted):
{
"message": "encrypted-request-body"
}Request body (plain)
Request Body
country*
KE
bankCode*
430000
amount*
100
accountName*
Sydney Mark
requestId*
String
kbtr-3857-011-133-166993253334816
description*
String
Payout
currency*
String
KES
bankName*
String
Ubank Ltd
accountNumber*
String
0690000032
serviceCode*
String
The short code of beneficiary bank account
{
"id": 3,
"amount": 1000,
"payoutStatus": "PENDING",
"requestId": "kbtr-3857-011-133-166993253334816",
"narration": "certification",
"country": "KE",
"fee": 25,
"serviceCode": "009",
"bankCode": "430000",
"bankName": "Ubank Ltd",
"accountNumber": "0690000032",
"accountName": "Pastor Bright"
}{
"message": "A human readable error message",
"error": "Bad Request",
"data": null
}Query payout status
Make a call to fetch status of initiated payouts.
Last updated

