Kenya

Learn everything you need to know to make payouts in Kenya with dLocal.

Market specifications

Take a look of all the information you need to make a payout.

Country reference Mandatory paramenters

Payment methods

Find all the information about payment methods capabilities.

Bank transfers Wallet transfers

Market specifications

Do you want to know more information about Kenya's market? Go to the Expand Your Reach in Africa’s eCommerce Market article.

Country reference

country codecurrency codeamount decimalsbeneficiary.document.type namebeneficiary.document.id format
KEKES0National ID Card8 digits

Mandatory parameters

Bank transfers

Bank transfer parametersB2CB2BP2P
external_idYesYesYes
payment_method_idYesYesYes
flow_typeYesYesYes
purposeYesYesYes
countryYesYesYes
amountYesYesYes
currencyYesYesYes
beneficiary.first_nameYes-Yes
beneficiary.last_nameYes-Yes
beneficiary.business_name-Yes-
beneficiary.bank_account.branchYesYesYes
beneficiary.bank_account.accountYesYesYes
remitter.first_name--Yes
remitter.last_name--Yes
remitter.document.type--Yes
remitter.document.id--Yes
remitter.birth_info.date--Yes
remitter.address.street--Yes
remitter.address.city--Yes
remitter.address.country--Yes
remitter.nationality--Yes

Wallet transfers

Wallet transfer parametersB2CB2BP2P
external_idYesYesYes
payment_method_idYesYesYes
flow_typeYesYesYes
purposeYesYesYes
countryYesYesYes
amountYesYesYes
currencyYesYesYes
beneficiary.first_nameYes-Yes
beneficiary.last_nameYes-Yes
beneficiary.business_name-Yes-
beneficiary.phoneYesYesYes
beneficiary.instant_payment.typeYesYesYes
beneficiary.instant_payment.idYesYesYes
remitter.first_name--Yes
remitter.last_name--Yes
remitter.document.type--Yes
remitter.document.id--Yes
remitter.birth_info.date--Yes
remitter.address.street--Yes
remitter.address.city--Yes
remitter.address.country--Yes
remitter.nationality--Yes

Payment methods

Kenya supports payouts via Bank transfers and Wallet transfers. Each method requires specific parameters and follows validation rules aligned with local compliance and banking standards.

Use Wallet transfers for instant payments to mobile wallets. Use Bank transfers when sending funds directly to a bank account.

Bank transfers

Bank transfers in Kenya require detailed account information, including SWIFT code and account number. The format of these fields depends on the receiving bank, and strict validation rules apply.

Mandatory parameters

All fields listed below are required for bank transfer payouts. For successful processing, ensure correct formatting and value types.

Mandatory parameterDescription
external_idUnique payout identification at the merchant's end. Maximum 100 characters.
payment_method_idPayment method identifier. For bank transfers, use BANK_TRANSFER.
flow_typePayout flow type. Valid values: B2C (Business to Consumer), B2B (Business to Business), P2P (Person to Person), or PSP (Payment Service Provider).
purposePayout purpose code. For P2P, use REMITTANCES. See purpose codes reference.
countryCountry code. For Kenya, use KE.
currencySource currency of the FX operation. For Kenya, use KES or USD. Payouts are typically paid in local currency to the beneficiary.
amountPayout amount. For Kenya, use whole numbers (no decimals).
beneficiary.first_nameBeneficiary's first name. Maximum 50 characters.
beneficiary.last_nameBeneficiary's last name. Maximum 50 characters.
beneficiary.business_nameBeneficiary's business name. Mandatory only for B2B.
beneficiary.bank_account.branchBeneficiary's bank branch. SWIFT code (8 or 11 alphanumeric characters in upper case).
beneficiary.bank_account.accountBeneficiary's bank account number. Minimum length 8 and Maximum length 20.
remitter.first_nameRemitter's first name. Maximum 50 characters. Mandatory only for remittance (P2P).
remitter.last_nameRemitter's last name. Maximum 50 characters. Mandatory only for remittance (P2P).
remitter.document.typeType of identification document: ID for national identification number, PASS for passport. Mandatory only for remittance (P2P).
remitter.document.idRemitter's identification document or number. Maximum 45 characters. Mandatory only for remittance (P2P).
remitter.birth_info.dateRemitter's date of birth in ISO 8601 format (YYYY-MM-DD). Mandatory only for remittance (P2P).
remitter.address.streetRemitter's street address. Maximum 200 characters. Mandatory only for remittance (P2P).
remitter.address.cityRemitter's city. Maximum 40 characters. Mandatory only for remittance (P2P).
remitter.address.countryRemitter's country code in ISO 3166-1 alpha-2 format. Mandatory only for remittance (P2P).
remitter.nationalityRemitter's nationality. Use ISO 3166-1 alpha-2 format. Mandatory only for remittance (P2P).

Example request

{
  "external_id": "KE_B2C_001",
  "payment_method_id": "BANK_TRANSFER",
  "flow_type": "B2C",
  "purpose": "OTHER_SERVICES",
  "country": "KE",
  "amount": 100,
  "currency": "KES",
  "beneficiary": {
    "first_name": "John",
    "last_name": "Miles",
    "bank_account": {
      "branch": "BARCKENX",
      "account": "433212345678"
    }
  }
}
{
  "external_id": "KE_P2P_002",
  "payment_method_id": "BANK_TRANSFER",
  "flow_type": "P2P",
  "purpose": "REMITTANCES",
  "country": "KE",
  "amount": 250,
  "currency": "KES",
  "beneficiary": {
    "first_name": "Kamau",
    "last_name": "Mwangi",
    "bank_account": {
      "branch": "KCBLKENX",
      "account": "433287654321"
    }
  },
  "remitter": {
    "first_name": "James",
    "last_name": "Brown",
    "document": {
      "type": "PASS",
      "id": "XY987654"
    },
    "birth_info": {
      "date": "1990-07-25"
    },
    "address": {
      "street": "456 Oak Avenue",
      "city": "Chicago",
      "country": "US"
    },
    "nationality": "US"
  }
}

Wallet transfers

Wallet transfers enable real-time transfers using a mobile phone number linked to a wallet.

The instant_payment.type field must indicate the type of wallet being used (e.g., M-Pesa, Airtel, Equitel). The instant_payment.id field must be present and correctly formatted with the phone number.

Mandatory parameters

The table below outlines the required parameters for Wallet transfers.

Mandatory parameterDescription
external_idUnique payout identification at the merchant's end. Maximum 100 characters.
payment_method_idPayment method identifier. For wallet transfers, use INSTANT_PAYMENT.
flow_typePayout flow type. Valid values: B2C (Business to Consumer), B2B (Business to Business), P2P (Person to Person), or PSP (Payment Service Provider).
purposePayout purpose code. For P2P, use REMITTANCES. See purpose codes reference.
countryCountry code. For Kenya, use KE.
currencySource currency of the FX operation. For Kenya, use KES or USD. Payouts are typically paid in local currency to the beneficiary.
amountPayout amount. For Kenya, use whole numbers (no decimals).
beneficiary.first_nameBeneficiary's first name. Maximum 50 characters.
beneficiary.last_nameBeneficiary's last name. Maximum 50 characters.
beneficiary.business_nameBeneficiary's business name. Mandatory only for B2B.
beneficiary.phoneBeneficiary's phone number. Country code +254 plus 9 digits. Ex: +254123456789.
beneficiary.instant_payment.typeType of wallet being used: MPESA, AIRTEL, EQUITEL.
beneficiary.instant_payment.idBeneficiary's wallet identifier, typically the phone number.
remitter.first_nameRemitter's first name. Maximum 50 characters. Mandatory only for remittance (P2P).
remitter.last_nameRemitter's last name. Maximum 50 characters. Mandatory only for remittance (P2P).
remitter.document.typeType of identification document: ID for national identification number, PASS for passport. Mandatory only for remittance (P2P).
remitter.document.idRemitter's identification document or number. Maximum 45 characters. Mandatory only for remittance (P2P).
remitter.birth_info.dateRemitter's date of birth in ISO 8601 format (YYYY-MM-DD). Mandatory only for remittance (P2P).
remitter.address.streetRemitter's street address. Maximum 200 characters. Mandatory only for remittance (P2P).
remitter.address.cityRemitter's city. Maximum 40 characters. Mandatory only for remittance (P2P).
remitter.address.countryRemitter's country code in ISO 3166-1 alpha-2 format. Mandatory only for remittance (P2P).
remitter.nationalityRemitter's nationality. Use ISO 3166-1 alpha-2 format. Mandatory only for remittance (P2P).

Example request

{
  "external_id": "KE_B2C_001",
  "payment_method_id": "INSTANT_PAYMENT",
  "flow_type": "B2C",
  "country": "KE",
  "amount": 100,
  "currency": "KES",
  "purpose": "OTHER_SERVICES",
  "beneficiary": {
    "first_name": "John",
    "last_name": "Miles",
    "phone": "+254123456789",
    "instant_payment": {
      "type": "MPESA",
      "id": "+254123456789"
    }
  }
}
{
  "external_id": "KE_P2P_002",
  "payment_method_id": "INSTANT_PAYMENT",
  "flow_type": "P2P",
  "country": "KE",
  "amount": 500,
  "currency": "KES",
  "purpose": "REMITTANCES",
  "beneficiary": {
    "first_name": "Wangari",
    "last_name": "Kamau",
    "phone": "+254987654321",
    "instant_payment": {
      "type": "MPESA",
      "id": "+254987654321"
    }
  },
  "remitter": {
    "first_name": "Sarah",
    "last_name": "Johnson",
    "document": {
      "type": "PASS",
      "id": "AB123456"
    },
    "birth_info": {
      "date": "1985-06-15"
    },
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "country": "US"
    },
    "nationality": "US"
  }
}