> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.crisscross.money/payout-market-kenya/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.crisscross.money/_mcp/server. # Kenya Payouts Use this guide when you want to send KES payouts to recipients in Kenya. Kenya supports **bank transfers** and **mobile wallets (M-Pesa, Airtel)**. ## Overview * **Currency:** KES * **Payment location:** `KEN` * **Supported rails:** Bank transfer, Mobile wallet * **Payment methods:** * Bank transfer → `paymentMethodId: "banktransfer"`, `recipient.type: "bank_account"` * Mobile wallet → `paymentMethodId: "mobilemoney"`, `recipient.type: "mobile_money"` ## Required fields by rail ### Bank transfer | Field | Required | Notes | | ------------------- | -------- | -------------------- | | `accountNumber` | Yes | Bank account number | | `bankCode` | Yes | Local bank code | | `accountHolderName` | Yes | Name on the account | | `country` | Yes | `KEN` | | `phoneNumber` | No | International format | ### Mobile wallet (M-Pesa, Airtel) | Field | Required | Notes | | ------------- | -------- | ------------------------------ | | `phoneNumber` | Yes | MSISDN in international format | | `country` | Yes | `KEN` | | `operator` | Yes | Use `mpesa` or `airtel` | | `name` | No | Recipient name | Top-level required fields for every payout: `merchantId`, `merchantReference`, `destinationValue` (with `minorAmount` and `currency`), `paymentMethodId`, `paymentLocation`, `recipient`, `sender` (see [Sender Details](#sender-details-required)). ## Sender Details (Required) Every payout requires a `sender` object with `fullName`, `identity`, and `identityNumber` for KYT/KYC screening. Kenya payouts additionally require the fields below for regulatory compliance. | Field | Type | Required | Description | Example | | ---------------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------- | | `fullName` | string | **Yes** | Sender's full name | `"Jane Smith"` | | `phoneNumber` | string | **Yes** | Sender's phone number | `"27821234567"` | | `nationality` | string | **Yes** | ISO 3-letter country code | `"ZAF"` | | `identity` | string | **Yes** | Document type: `passport`, `nationalId`, `driversLicense`, `residencePermit`, `businessRegistrationNumber`, or `other` | `"passport"` | | `identityNumber` | string | **Yes** | Identity document number | `"A12345678"` | | `dateOfBirth` | string | **Yes** | Date of birth (YYYY-MM-DD) | `"1990-01-15"` | | `purposeOfFunds` | string | **Yes** | Purpose of the transfer | `"salary"` | | `sourceOfFunds` | string | **Yes** | Source of funds | `"business income"` | | `relationship` | string | **Yes** | Relationship to recipient | `"employer"` | > If `nationality` is not provided, the system falls back to `country`, `countryCode`, or the merchant's configured home country. ## Example requests ### Bank transfer ```json { "merchantId": "your-merchant-id", "merchantReference": "PAYOUT-KE-001", "destinationValue": { "minorAmount": 200000, "currency": "KES" }, "paymentMethodId": "banktransfer", "paymentLocation": "KEN", "recipient": { "type": "bank_account", "accountNumber": "0123456789", "bankCode": "01", "accountHolderName": "Wanjiku Njeri", "country": "KEN" }, "sender": { "fullName": "Jane Smith", "phoneNumber": "27821234567", "nationality": "ZAF", "identity": "passport", "identityNumber": "A12345678", "dateOfBirth": "1990-01-15", "purposeOfFunds": "salary", "sourceOfFunds": "business income", "relationship": "employer" } } ``` ### Mobile wallet (M-Pesa) — Individual sender ```json { "merchantId": "your-merchant-id", "merchantReference": "PAYOUT_550e8400-e29b-41d4-a716-446655440000", "destinationValue": { "minorAmount": 2000, "currency": "KES" }, "paymentMethodId": "mobilemoney", "paymentLocation": "KEN", "attributes": {}, "recipient": { "type": "mobile_money", "name": "John Doe", "operator": "mpesa", "country": "KEN", "phoneNumber": "254723993187" }, "sender": { "fullName": "Jane Smith", "phoneNumber": "27821234567", "nationality": "ZAF", "identity": "passport", "identityNumber": "A12345678", "dateOfBirth": "1990-01-15", "purposeOfFunds": "salary", "sourceOfFunds": "business income", "relationship": "employer" } } ``` ### Mobile wallet (M-Pesa) — Company sender When the sender is a company, use the company's registered details: ```json { "merchantId": "your-merchant-id", "merchantReference": "PAYOUT_660e8400-e29b-41d4-a716-446655440001", "destinationValue": { "minorAmount": 50000, "currency": "KES" }, "paymentMethodId": "mobilemoney", "paymentLocation": "KEN", "attributes": {}, "recipient": { "type": "mobile_money", "name": "John Doe", "operator": "mpesa", "country": "KEN", "phoneNumber": "254723993187" }, "sender": { "fullName": "Acme Corporation Ltd", "phoneNumber": "27110001234", "nationality": "ZAF", "identity": "businessRegistrationNumber", "identityNumber": "2020/123456/07", "dateOfBirth": "2015-03-20", "purposeOfFunds": "vendor payment", "sourceOfFunds": "business revenue", "relationship": "business" } } ``` **Company sender mapping:** | Sender field | Company value | | ---------------- | ---------------------------------- | | `fullName` | Company registered name | | `identity` | `"businessRegistrationNumber"` | | `identityNumber` | Company registration number | | `dateOfBirth` | Date of incorporation (YYYY-MM-DD) | ## Important notes * **Sender Details**: The `sender` object is required for all payouts. Requests missing required sender fields will be rejected with a validation error. ## Related guides * [Bank Transfers](/payout-bank-transfers) * [Mobile Wallet](/payout-mobile-wallet) * [Supported Destinations](/payout-supported-destinations) > KES payouts to banks and mobile wallets