Before reading this API document, please make sure to check API Description Guide first.
Transaction Limits
| Transaction Type | Limit |
|---|---|
| Collection | KES: 10.00-250000.00 |
| Disbursement | KES: 10.00-100000.00 |
Amount Decimal Places: KES — 2 decimal places
Collection API
- Kenya collection supports Mobile Money (EWALLET) only. If no phone number is provided in the request, the returned
payUrlredirects the user to a phone number input page. - After the phone number is submitted, the user either receives an STK push on the phone (enter PIN to confirm) or is redirected to the operator page to complete the payment, depending on the operator.
- If the operator requires OTP, the user enters the OTP on the cashier page to complete the payment.
Collection Application
Brief Description:- Create a collection order
/kes/collect/apply
Parameters:
| Parameter Name | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Long | Business ID (obtained from backend, needs to pass the corresponding Business ID based on the currency in the URL) |
| orderId | Yes | String | Merchant order number (must be unique, length no more than 48) |
| name | Yes | String | Payer name |
| phone | Yes | String | Payer mobile number (Kenya mobile number, 12 digits starting with 254) |
| Yes | String | Payer email address | |
| amount | Yes | String | Transaction amount, up to 2 decimal places. Range: 10.00-250,000.00 |
| payType | Yes | String | Payment Method Type |
| inBankCode | Yes | String | Payment Method Code |
| callBackUrl | Yes | String | Redirect URL after successful payment |
| callBackFailUrl | Yes | String | Redirect URL after failed payment |
| notifyUrl | No | String | Callback URL |
| subject | Yes | String | Payment remark |
| body | No | String | Remark details |
| partnerUserId | Yes | String | Unique user identifier (e.g., userId), used for risk control system, must be valid, otherwise it will affect the transaction. Format: digits, letters, or symbols -~!@#$%&*()_. |
| sign | Yes | String | Signature |
{
"appId": 1054,
"orderId": "M233323000059",
"amount": "300",
"phone": "254712345678",
"email": "johndoe@example.com",
"name": "john doe",
"inBankCode": "SAFARICOM",
"payType": "EWALLET",
"callBackUrl": "https://merchant.com/payment/success",
"callBackFailUrl": "https://merchant.com/payment/fail",
"partnerUserId": "149597870",
"sign": "af0gAHkUOyYHu9owQp8NJ4mPEeUW4vuJcjdxqLIzrVw8AvpLSjD1DXupReSG/CyuSkFRyiIvCp5u703AuGGmfgD2gKDH3Ywau41bAbG2jnHJ8mtjiSJ5iWUzanyd4Kr7d1+rETbzUl7/BkW3t0X8UUFdqpxwG8DPUjAwUKfplWDHV7koG51Ozexd80DCsmW6eWdouAZ1uNXGLYmV3ftE3BmfNRtuv1C5bfTJWrTEIOxbF6g2uYOFZTlIgrQgd7/2PsAYwQQXNz8Q8CYl4OxqCv4pXJxaLWPbR5tqZu9og5kn32C9aHW/NlU1y39vzz+4ef81yPAqUV9oHlSMSPrMmw=="
}
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M233323000059",
"orderNo": "6023071013539074",
"payUrl": "https://pay.haipay.asia/cashier/1L9zQS2",
"sign": "YEoA8Y2JzQFGVzwJSqmemm1Kfv/bfyIfCqv2dp7RNzT5B72AQvdD+nt2nR4sL1HWscvmNHyVt5ovAi7MMhy3ziih/sMph+wPx4YjH3W1h5DyBvSlWvaKfKrK5ViomZ0pPYWydwRHnnRnicxToHK9S6qtSy7Q73O0hdz4hJ9p41Th3ycBl2Q9SeqSZYSY1ohcPDhdyRf2y0prb8rHgpBKzxZ5BKX/1bsE9OmsSEHAEYT8OGgko6aNe8XPAhr4G48cpWTftvnGQuzh0O65nuZRI/PF+Axt2zJCVbFHDDSREI9NlAT82ebDqhlVdxQzKE67D1nxgjb3dPmDUYHOBpmwxQ=="
}
}
| Parameter Name | Type | Description |
|---|---|---|
| orderId | String | Merchant order number (must be unique) |
| orderNo | String | Platform order number |
| payUrl | String | Payment link |
| sign | String | Signature |
Collection Query
Brief Description:- Query collection order
/kes/collect/query
Parameters:
| Parameter Name | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Long | Business ID (obtained from backend, needs to pass the corresponding Business ID based on the currency in the URL) |
| orderId | Yes | String | Merchant order number |
| orderNo | No | String | Platform order number (faster response) |
| sign | Yes | String | Signature |
{
"appId": 1054,
"orderId": "M22222000028",
"sign": "EmyJGm3ELzG4FsOd0Krs9ncbSjo4oTGuXWML+7djYla3+VAwd9wS17z38p/7U2ZAjroO04XrE7YXcB1o76Dtyipj3h3bJzs7FYma1QNkMUdt9hh7m8U6hMsMQX7vIWHtXNwz4pbTSC75+kQWXaCew7KoE6LXECdJU8AISgNgeki2TK9R0pCfshr0Z2SZBPeuT6OvIH5LdmqgdZhuqnffGU2qnXk4KMkO848e6/WALLBR+LE1wyKHfPnYVcuKSMVYxkvKyyIL5JIPEgW0o5bh4RCbaUn3NZtyYwrU1uQ3ZDFRThm9j6XAQP+LBlmq3nOePqBtp/VDVarRaV+7FbQg3A=="
}
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M22222000028",
"orderNo": "6023042811314347",
"amount": "50000.00",
"actualAmount": "0.00",
"fee": "0.00",
"status": 1,
"sign": "fP433ygWVDLVGxYkVnIJj7riGq0U3vyVX+MbBAImxfGLZkZcEAHVEoVYuULZSmXAAXKRSyd67WlDNm+24pougM54ofAoH4HMtCL2tfCoBReFyz3z02AGKkrKE2xWhSpWoqfQoBvzwuN5iGMMu0s9Q1YvqiwJ8WDVIENnmiIyD8qDJN7caHTW2US14/faG+9AvnuIgJ/nu7/jogOlgEYdZdVYU7gcRDE+d47KjlFGswQkJ/h/uzV7cWtUqrtOO7ZnZ3/z33Xx8awokX36QoYcPSWAU0h+Ij9O9402HNhm1eTbYcLU0uI/z8xCAtyAI/tTyiFijpiNlxUKQj+zKILw=="
}
}
| Parameter Name | Type | Description |
|---|---|---|
| orderId | String | Merchant order number (must be unique) |
| orderNo | String | Platform order number |
| amount | String | Transaction amount |
| actualAmount | String | Received amount |
| fee | String | Transaction fee |
| status | Integer | Status (0 Not Started, 1 In Progress, 2 Success (final), 3 Failed (final), -1 Exception Pending Confirmation) |
| payTime | String | Payment success time (when status=2), format: yyyy-MM-dd HH:mm:ss (East Africa Time) |
| errorMsg | String | Failure reason (when status=3) |
| sign | String | Signature |
Payment Methods
| Currency | Payment Type (payType) | Payment Code (inBankCode) | Limit | Status | Description |
|---|---|---|---|---|---|
| KES | EWALLET | AIRTEL | 10.00-250000.00 | Available | AIRTEL |
| KES | EWALLET | EQUITEL | 10.00-250000.00 | Available | EQUITEL |
| KES | EWALLET | SAFARICOM (M-Pesa) | 10.00-250000.00 | Available | SAFARICOM (M-Pesa) |
| KES | EWALLET | T-Kash | 10.00-250000.00 | Available | T-Kash |
| KES | EWALLET | Telcom Kenya | 10.00-250000.00 | Available | Telcom Kenya |
Disbursement API
Disbursement Apply
Description:- Create a Disbursement order
/kes/pay/apply
Parameters:
| Parameter | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Long | Business ID (obtained from backend, must match the currency in the URL) |
| orderId | Yes | String | Merchant order ID (must be unique, length ≤ 48) |
| amount | Yes | String | Transaction amount, up to 2 decimal places. Range: 10.00-100,000.00 |
| accountType | Yes | String | Account type: EWALLET (e-wallet), BANK_ACCOUNT (bank) |
| bankCode | Yes | String | Payment Method Code |
| accountNo | Yes | String | User bank account number / mobile number (mobile number for EWALLET type) |
| name | Yes | String | Recipient name (Format: English characters only, 1–30 characters. Format: “firstName middleName lastName”(middleName is optional and does not support special characters or numbers.)) |
| phone | Yes | String | Real phone number |
| Yes | String | Real email address | |
| notifyUrl | No | String | Callback URL |
| subject | No | String | Payment note (transaction title, product name, payment reason) |
| body | No | String | Detailed note |
| partnerUserId | Yes | String | User unique identifier (e.g., userId). Used by risk control, must be valid. Format: numbers, letters, or common symbols -~!@#$%&*()_. |
| sign | Yes | String | Signature |
{
"appId": 1054,
"orderId": "M100000450012",
"amount": "500",
"accountType": "EWALLET",
"bankCode": "SAFARICOM",
"accountNo": "254712345678",
"name": "john doe",
"phone": "254712345678",
"email": "johndoe@example.com",
"subject": "iphone13",
"body": "ProMotion technology with adaptive refresh rates up to 120Hz",
"partnerUserId": "149597870",
"sign": "I1PeK3eJOVsFFNowxVRqMXpeWm1lr/BcRpBi8WsW4wVo1+5CC3JsrFq/m/L2O69NzKHvtDWi4zia3DL3dPut0yMyUyqL91LNCSaeISbGsQPlhEsQpyTOryS/RKOfsrn2Xo37SCF/phAvndOk2jwwGwqM5xLz1ms9Ukl85wv27QFNrXIMxK2p18oe7MpMYrgf+xvEBE/VqCtKMtN9pO449wWwXzHWNPbZ76s4pAvKwRE9yXQDr7Iw14Dktcnl1FoLM4gWM/obkO+mz6SyAGDuXhVh/+OD/IGNiCyTCNq6ciQY28UnCFV6ZIP40gxsFhfBJKbK+Raw7y1Bh912ifYfug=="
}
{
"appId": 1054,
"orderId": "M100000450012",
"amount": "500",
"accountType": "BANK_ACCOUNT",
"bankCode": "KCB",
"accountNo": "1234567890",
"name": "john doe",
"phone": "254712345678",
"email": "johndoe@example.com",
"subject": "iphone13",
"body": "ProMotion technology with adaptive refresh rates up to 120Hz",
"partnerUserId": "149597870",
"sign": "I1PeK3eJOVsFFNowxVRqMXpeWm1lr/BcRpBi8WsW4wVo1+5CC3JsrFq/m/L2O69NzKHvtDWi4zia3DL3dPut0yMyUyqL91LNCSaeISbGsQPlhEsQpyTOryS/RKOfsrn2Xo37SCF/phAvndOk2jwwGwqM5xLz1ms9Ukl85wv27QFNrXIMxK2p18oe7MpMYrgf+xvEBE/VqCtKMtN9pO449wWwXzHWNPbZ76s4pAvKwRE9yXQDr7Iw14Dktcnl1FoLM4gWM/obkO+mz6SyAGDuXhVh/+OD/IGNiCyTCNq6ciQY28UnCFV6ZIP40gxsFhfBJKbK+Raw7y1Bh912ifYfug=="
}
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M100000450013",
"orderNo": "3023062014149637",
"sign": "LmhUnkw5j0pMiimsG8rKwdNNZGvXH5MpSmD6mdHZwq1SQwuK5BohmdEoqKB/jkMk28o3da4Cxh6Q+tW97+yTCemRrF+dMaHA73rpOeUuujKQl/UcFvJuMhfLBa2tp09L71NzoBqpPD6aXf37mYAz8E1HmERwFPpac5FVxIYanHG8cqmMLJYsVmHTSxWavgWU03ys9UczBePkBiR8sl2FSOhFABB0wAP28lswrV/ABS68IsLKtyd1fyI3GBfSbIK5nDEEnlE+EdElFdLs9taAxJImeVF1x4eT47+bkPJ2qS8z3K8QGzKLF3W+8SiRZGfSwDTsLKH+2Vycvy5auRl+ag=="
}
}
data Parameter Description
| Parameter | Required | Type | Description |
|---|---|---|---|
| orderId | Yes | String | Merchant order ID (must be unique) |
| orderNo | Yes | String | Platform order ID |
| sign | Yes | String | Signature |
Disbursement Query
Description:- Query a Disbursement order
/kes/pay/query
Parameters:
| Parameter | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Long | Business ID (obtained from backend, must match the currency in the URL) |
| orderId | Yes | String | Merchant order ID |
| orderNo | No | String | Platform order ID (faster response) |
| sign | Yes | String | Signature |
{
"appId": 1000,
"orderId": "M1234567111",
"orderNo": "3022111516571436",
"sign": "ZxkVZL+GAyv0VhvWn4IvuYahTzxgQuthkuV2ONWiqIfIDb2avvHlFOUJVzqZi1q8CPHXZm1ltanRTRVTxfsuftLvGeDioUHglWt46/RU6c1OPznpLGsZ35Q3n5tW2y1EnOsxPynXBFLuDQy+aZ3l9u6AQ30T0zQexMGT+IxuFkmUp02g/6juaHa5ZgNMv7lN67ixIp162wrM7OJuaOif872QijSceRdZhzaMGImAwB0D4MosRV4WMBOKkwgPdmS7GuZN66YUidXk3wTGqX3MYRw6M0kj4eNegSUwPXvp4q4p0KO8Y3xUMld54GY2ApX3WN3CBtC/vpJqEszjGBbbGg=="
}
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M1234567111",
"orderNo": "3022111516571436",
"amount": "100000.00",
"fee": "0.00",
"status": 3,
"errorMsg": "error",
"sign": "KKuvCl0SuNANJs+l2ogDaJm8pmV+Hi+Xa7q27vJ6D1Ehs4aOp13kRbITfJAhczh3T81BE9qwHeJaYwf+r0EypKM9TL6pMwfG8Az4gRy1D57wiUaVjl2PWcvbEqrn1hL0b+btkjvAM9I+CcSv+wuOW3/uku17Ws3FhgJLj9sFsQUBAPjDO+758VnwBytCOLBmljLBXyKgNgpmFQ1/DNkqWl0UNzyLK45Zw3yf5NiwhEFbvW0jlOWlfu/ql4hluISUQG573jEoFCBEnQLb2tQoRZj1QYNRCXPf5lbej0vzqbEwvR9h+ZOf255t1MocJkdIe463DTV5U3KZdVT87HMagw=="
}
}
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M1234567112",
"orderNo": "3022111517401574",
"amount": "100000.00",
"fee": "1003.00",
"status": 2,
"payTime": "2024-03-01 23:59:59",
"sign": "khPtOmGq+cpKX0HFAI/lbP0dx4oVyNAnL5oLsdmhDJdASlQm0yg5I3o+MhImYggEsL6c2bo5fP29t54OZFqSdQDfIuNDvGbAMAr4mRBxc0hoHLkBLyyagfVPBLyQA1JY8XV3ZL4ySzQ3ZQnMCfrh2K39ueUuz6HpZ03Hj0KYijVRCXAZaio/L5jfLBT12QXmvIfAHa8s/k9flhK05ENHPep3zjj/MZGOEaX7jkEJLfjK0duypDCa61BRQjM+oePOdVsgleIl1Yf98UAxMDZ/A3912KFHEb+/jvmdnulNbiJFyuT1fEe+j2teUgw3vFsZAtwNWAgxhC7UO+N0Q5z4EA=="
}
}
data Parameter Description
| Parameter | Type | Description |
|---|---|---|
| orderId | String | Merchant order ID (must be unique) |
| orderNo | String | Platform order ID |
| amount | String | Transaction amount |
| fee | String | Fee |
| status | Integer | Order status (0 Not Started, 1 Processing, 2 Disbursement Success (final), 3 Disbursement Failed (final), -1 Exception Pending Confirmation) |
| payTime | String | Payment success time (present when status=2) (East Africa Time), format: yyyy-MM-dd HH:mm:ss |
| errorMsg | String | Payment failure reason (present when status=3) |
| sign | String | Signature |
Payment Methods
Mobile Payment (EWALLET)
Mobile Payment (EWALLET)
| Currency | Payment Type (accountType) | Payment Code (bankCode) | Limit | Status | Description |
|---|---|---|---|---|---|
| KES | EWALLET | AIRTEL | 10.00-100000.00 | Available | AIRTEL |
| KES | EWALLET | EQUITEL | 10.00-100000.00 | Available | EQUITEL |
| KES | EWALLET | SAFARICOM | 10.00-100000.00 | Available | SAFARICOM |
| KES | EWALLET | T-Kash | 10.00-100000.00 | Available | T-Kash |
| KES | EWALLET | Telcom Kenya | 10.00-100000.00 | Available | Telcom Kenya |
Bank Code (BANK_ACCOUNT)
Bank Code (BANK_ACCOUNT)
| Currency | Payment Type (accountType) | Payment Code (bankCode) | Limit | Status | Description |
|---|---|---|---|---|---|
| KES | BANK_ACCOUNT | ABC Bank | 10.00-100000.00 | Available | ABC Bank |
| KES | BANK_ACCOUNT | ABSA Bank Kenya | 10.00-100000.00 | Available | ABSA Bank Kenya |
| KES | BANK_ACCOUNT | Access Bank | 10.00-100000.00 | Available | Access Bank |
| KES | BANK_ACCOUNT | Bank of Africa Kenya | 10.00-100000.00 | Available | Bank of Africa Kenya |
| KES | BANK_ACCOUNT | Bank of Baroda | 10.00-100000.00 | Available | Bank of Baroda |
| KES | BANK_ACCOUNT | Bank of India | 10.00-100000.00 | Available | Bank of India |
| KES | BANK_ACCOUNT | Chase Bank | 10.00-100000.00 | Available | Chase Bank |
| KES | BANK_ACCOUNT | Choice Microfinance Bank | 10.00-100000.00 | Available | Choice Microfinance Bank |
| KES | BANK_ACCOUNT | Citi Bank | 10.00-100000.00 | Available | Citi Bank |
| KES | BANK_ACCOUNT | Co-operative Bank of Kenya | 10.00-100000.00 | Available | Co-operative Bank of Kenya |
| KES | BANK_ACCOUNT | Consolidated Bank of Kenya | 10.00-100000.00 | Available | Consolidated Bank of Kenya |
| KES | BANK_ACCOUNT | Credit Bank | 10.00-100000.00 | Available | Credit Bank |
| KES | BANK_ACCOUNT | Development Bank | 10.00-100000.00 | Available | Development Bank |
| KES | BANK_ACCOUNT | Diamond Trust Bank | 10.00-100000.00 | Available | Diamond Trust Bank |
| KES | BANK_ACCOUNT | DIB Bank | 10.00-100000.00 | Available | DIB Bank |
| KES | BANK_ACCOUNT | EcoBank PLC | 10.00-100000.00 | Available | EcoBank PLC |
| KES | BANK_ACCOUNT | Equatorial Commercial Bank | 10.00-100000.00 | Available | Equatorial Commercial Bank |
| KES | BANK_ACCOUNT | Equity Bank | 10.00-100000.00 | Available | Equity Bank |
| KES | BANK_ACCOUNT | Family Bank | 10.00-100000.00 | Available | Family Bank |
| KES | BANK_ACCOUNT | Faulu Bank | 10.00-100000.00 | Available | Faulu Bank |
| KES | BANK_ACCOUNT | First Community Bank | 10.00-100000.00 | Available | First Community Bank |
| KES | BANK_ACCOUNT | Guaranty Trust Bank | 10.00-100000.00 | Available | Guaranty Trust Bank |
| KES | BANK_ACCOUNT | Guardian Bank | 10.00-100000.00 | Available | Guardian Bank |
| KES | BANK_ACCOUNT | Gulf African Bank | 10.00-100000.00 | Available | Gulf African Bank |
| KES | BANK_ACCOUNT | Habib Bank AG Zurich | 10.00-100000.00 | Available | Habib Bank AG Zurich |
| KES | BANK_ACCOUNT | Housing finance | 10.00-100000.00 | Available | Housing finance |
| KES | BANK_ACCOUNT | I&M Bank | 10.00-100000.00 | Available | I&M Bank |
| KES | BANK_ACCOUNT | IPS (Instant Payment Switch) | 10.00-100000.00 | Available | IPS (Instant Payment Switch) |
| KES | BANK_ACCOUNT | Kenya Commercial Bank | 10.00-100000.00 | Available | Kenya Commercial Bank |
| KES | BANK_ACCOUNT | Kingdom Bank | 10.00-100000.00 | Available | Kingdom Bank |
| KES | BANK_ACCOUNT | KWFT | 10.00-100000.00 | Available | KWFT |
| KES | BANK_ACCOUNT | M-Oriental | 10.00-100000.00 | Available | M-Oriental |
| KES | BANK_ACCOUNT | Mayfair Bank | 10.00-100000.00 | Available | Mayfair Bank |
| KES | BANK_ACCOUNT | Middle East Bank Kenya | 10.00-100000.00 | Available | Middle East Bank Kenya |
| KES | BANK_ACCOUNT | NBK | 10.00-100000.00 | Available | NBK |
| KES | BANK_ACCOUNT | NCBA Bank Kenya | 10.00-100000.00 | Available | NCBA Bank Kenya |
| KES | BANK_ACCOUNT | Paramount Universal Bank | 10.00-100000.00 | Available | Paramount Universal Bank |
| KES | BANK_ACCOUNT | Post Bank | 10.00-100000.00 | Available | Post Bank |
| KES | BANK_ACCOUNT | Prime Bank | 10.00-100000.00 | Available | Prime Bank |
| KES | BANK_ACCOUNT | SBM | 10.00-100000.00 | Available | SBM |
| KES | BANK_ACCOUNT | Sidian Bank | 10.00-100000.00 | Available | Sidian Bank |
| KES | BANK_ACCOUNT | Stanbic Bank | 10.00-100000.00 | Available | Stanbic Bank |
| KES | BANK_ACCOUNT | Standard Chartered Bank | 10.00-100000.00 | Available | Standard Chartered Bank |
| KES | BANK_ACCOUNT | Stima Sacco | 10.00-100000.00 | Available | Stima Sacco |
| KES | BANK_ACCOUNT | UBA Kenya | 10.00-100000.00 | Available | UBA Kenya |
| KES | BANK_ACCOUNT | Victoria Bank | 10.00-100000.00 | Available | Victoria Bank |

