> ## Documentation Index
> Fetch the complete documentation index at: https://doc.haipay.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Kenya Payment API

<Warning>
  **Before reading this API document, please make sure to check [**API Description Guide**](/docs/en/guide/api_description_guide) first.**
</Warning>

## **Transaction Limits**

| Transaction Type | Limit          |
| :--------------- | :------------- |
| Disbursement     | KES: 10-999999 |

> **Amount Decimal Places:** KES — 2 decimal places

## **Disbursement API**

### **Disbursement Apply**

**Description:**

* Create a Disbursement order

**URL: `/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-999,999                                                                                                                          |
| accountType   | Yes      | String | Account type: EWALLET (e-wallet), BANK\_ACCOUNT (bank)                                                                                                                                 |
| bankCode      | Yes      | String | [Payment Method Code](#bankCode)                                                                                                                                                       |
| 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                                                                                                                                                                      |
| email         | 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                                                                                                                                                                              |

#####

request (when accountType is EWALLET)

```json theme={null}
{
    "appId": 1054,
    "orderId": "M100000450012",
    "amount": "500",
    "accountType": "EWALLET",
    "bankCode": "0001",
    "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=="
}
```

request (when accountType is BANK\_ACCOUNT)

```json theme={null}
{
    "appId": 1054,
    "orderId": "M100000450012",
    "amount": "500",
    "accountType": "BANK_ACCOUNT",
    "bankCode": "0001",
    "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=="
}
```

response

```json theme={null}
{
    "status": "1",
    "error": "00000000",
    "msg": "",
    "data": {
    "orderId": "M100000450013",
    "orderNo": "3023062014149637",
    "sign": "LmhUnkw5j0pMiimsG8rKwdNNZGvXH5MpSmD6mdHZwq1SQwuK5BohmdEoqKB/jkMk28o3da4Cxh6Q+tW97+yTCemRrF+dMaHA73rpOeUuujKQl/UcFvJuMhfLBa2tp09L71NzoBqpPD6aXf37mYAz8E1HmERwFPpac5FVxIYanHG8cqmMLJYsVmHTSxWavgWU03ys9UczBePkBiR8sl2FSOhFABB0wAP28lswrV/ABS68IsLKtyd1fyI3GBfSbIK5nDEEnlE+EdElFdLs9taAxJImeVF1x4eT47+bkPJ2qS8z3K8QGzKLF3W+8SiRZGfSwDTsLKH+2Vycvy5auRl+ag=="
}
}
```

Return `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

**URL: `/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                                                               |

request

```json theme={null}
{
    "appId": 1000,
    "orderId": "M1234567111",
    "orderNo": "3022111516571436",
    "sign": "ZxkVZL+GAyv0VhvWn4IvuYahTzxgQuthkuV2ONWiqIfIDb2avvHlFOUJVzqZi1q8CPHXZm1ltanRTRVTxfsuftLvGeDioUHglWt46/RU6c1OPznpLGsZ35Q3n5tW2y1EnOsxPynXBFLuDQy+aZ3l9u6AQ30T0zQexMGT+IxuFkmUp02g/6juaHa5ZgNMv7lN67ixIp162wrM7OJuaOif872QijSceRdZhzaMGImAwB0D4MosRV4WMBOKkwgPdmS7GuZN66YUidXk3wTGqX3MYRw6M0kj4eNegSUwPXvp4q4p0KO8Y3xUMld54GY2ApX3WN3CBtC/vpJqEszjGBbbGg=="
}
```

response — Order Failed

```json theme={null}
{
    "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=="
}
}
```

response — Order Successful

```json theme={null}
{
    "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=="
}
}
```

Return `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**<a id="bankCode" />

<Accordion title="Mobile Payment (EWALLET)">
  | Currency | Payment Type (accountType) | Payment Code (bankCode) | Limit     | Status    | Description           |
  | -------- | -------------------------- | ----------------------- | --------- | --------- | --------------------- |
  | KES      | EWALLET                    | 0001                    | 10-999999 | Available | SAFARICOM (M-Pesa)    |
  | KES      | EWALLET                    | 0002                    | 10-999999 | Available | AIRTEL (Airtel Money) |
  | KES      | EWALLET                    | 0003                    | 10-999999 | Available | EQUITEL (Equitel)     |
  | KES      | EWALLET                    | 63907                   | 10-999999 | Available | T-Kash (Telkom Kenya) |
  | KES      | EWALLET                    | 97                      | 10-999999 | Available | Telcom Kenya          |
</Accordion>

<Accordion title="Bank Code (BANK_ACCOUNT)">
  | Currency | Payment Type (accountType) | Payment Code (bankCode) | Limit     | Status    | Description                  |
  | -------- | -------------------------- | ----------------------- | --------- | --------- | ---------------------------- |
  | KES      | BANK\_ACCOUNT              | 0001                    | 10-999999 | Available | Kenya Commercial Bank        |
  | KES      | BANK\_ACCOUNT              | 0002                    | 10-999999 | Available | Standard Chartered Bank      |
  | KES      | BANK\_ACCOUNT              | 0003                    | 10-999999 | Available | ABSA Bank Kenya              |
  | KES      | BANK\_ACCOUNT              | 0005                    | 10-999999 | Available | Bank of India                |
  | KES      | BANK\_ACCOUNT              | 0006                    | 10-999999 | Available | Bank of Baroda               |
  | KES      | BANK\_ACCOUNT              | 0007                    | 10-999999 | Available | NCBA Bank Kenya              |
  | KES      | BANK\_ACCOUNT              | 0010                    | 10-999999 | Available | Prime Bank                   |
  | KES      | BANK\_ACCOUNT              | 0011                    | 10-999999 | Available | Co-operative Bank of Kenya   |
  | KES      | BANK\_ACCOUNT              | 0012                    | 10-999999 | Available | NBK                          |
  | KES      | BANK\_ACCOUNT              | 0014                    | 10-999999 | Available | M-Oriental                   |
  | KES      | BANK\_ACCOUNT              | 0016                    | 10-999999 | Available | Citi Bank                    |
  | KES      | BANK\_ACCOUNT              | 0017                    | 10-999999 | Available | Habib Bank AG Zurich         |
  | KES      | BANK\_ACCOUNT              | 0018                    | 10-999999 | Available | Middle East Bank Kenya       |
  | KES      | BANK\_ACCOUNT              | 0019                    | 10-999999 | Available | Bank of Africa Kenya         |
  | KES      | BANK\_ACCOUNT              | 0023                    | 10-999999 | Available | Consolidated Bank of Kenya   |
  | KES      | BANK\_ACCOUNT              | 0025                    | 10-999999 | Available | Credit Bank                  |
  | KES      | BANK\_ACCOUNT              | 0026                    | 10-999999 | Available | Access Bank                  |
  | KES      | BANK\_ACCOUNT              | 0030                    | 10-999999 | Available | Chase Bank                   |
  | KES      | BANK\_ACCOUNT              | 0031                    | 10-999999 | Available | Stanbic Bank                 |
  | KES      | BANK\_ACCOUNT              | 0035                    | 10-999999 | Available | ABC Bank                     |
  | KES      | BANK\_ACCOUNT              | 0036                    | 10-999999 | Available | Choice Microfinance Bank     |
  | KES      | BANK\_ACCOUNT              | 0043                    | 10-999999 | Available | EcoBank PLC                  |
  | KES      | BANK\_ACCOUNT              | 0049                    | 10-999999 | Available | Equatorial Commercial Bank   |
  | KES      | BANK\_ACCOUNT              | 0050                    | 10-999999 | Available | Paramount Universal Bank     |
  | KES      | BANK\_ACCOUNT              | 0051                    | 10-999999 | Available | Kingdom Bank                 |
  | KES      | BANK\_ACCOUNT              | 0053                    | 10-999999 | Available | Guaranty Trust Bank          |
  | KES      | BANK\_ACCOUNT              | 0054                    | 10-999999 | Available | Victoria Bank                |
  | KES      | BANK\_ACCOUNT              | 0055                    | 10-999999 | Available | Guardian Bank                |
  | KES      | BANK\_ACCOUNT              | 0057                    | 10-999999 | Available | I\&M Bank                    |
  | KES      | BANK\_ACCOUNT              | 0059                    | 10-999999 | Available | Development Bank             |
  | KES      | BANK\_ACCOUNT              | 0060                    | 10-999999 | Available | SBM                          |
  | KES      | BANK\_ACCOUNT              | 0061                    | 10-999999 | Available | Housing finance              |
  | KES      | BANK\_ACCOUNT              | 0063                    | 10-999999 | Available | Diamond Trust Bank           |
  | KES      | BANK\_ACCOUNT              | 0065                    | 10-999999 | Available | Mayfair Bank                 |
  | KES      | BANK\_ACCOUNT              | 0066                    | 10-999999 | Available | Sidian Bank                  |
  | KES      | BANK\_ACCOUNT              | 0068                    | 10-999999 | Available | Equity Bank                  |
  | KES      | BANK\_ACCOUNT              | 0070                    | 10-999999 | Available | Family Bank                  |
  | KES      | BANK\_ACCOUNT              | 0072                    | 10-999999 | Available | Gulf African Bank            |
  | KES      | BANK\_ACCOUNT              | 0074                    | 10-999999 | Available | First Community Bank         |
  | KES      | BANK\_ACCOUNT              | 0075                    | 10-999999 | Available | DIB Bank                     |
  | KES      | BANK\_ACCOUNT              | 0076                    | 10-999999 | Available | UBA Kenya                    |
  | KES      | BANK\_ACCOUNT              | 0078                    | 10-999999 | Available | KWFT                         |
  | KES      | BANK\_ACCOUNT              | 0079                    | 10-999999 | Available | Faulu Bank                   |
  | KES      | BANK\_ACCOUNT              | 0089                    | 10-999999 | Available | Stima Sacco                  |
  | KES      | BANK\_ACCOUNT              | 0099                    | 10-999999 | Available | Post Bank                    |
  | KES      | BANK\_ACCOUNT              | 9999                    | 10-999999 | Available | IPS (Instant Payment Switch) |
</Accordion>

## Related Topics

* [Common API](/docs/en/api/version2/CommonApi)
* [HaiPay API Description and Common Rules](/docs/en/guide/api_description_guide)
* [Global Cashier Payment API](/docs/en/api/version2/GlobalCashier)
