Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.kulmipay.com/llms.txt

Use this file to discover all available pages before exploring further.

Use Bank Payouts when the recipient should receive funds in a Kenyan bank account. KulmiPay routes these payouts through PesaLink.

Transaction fields

FieldRequiredDescription
accountYesRecipient bank account number.
bank_codeYesRecipient bank code. Fetch valid codes from GET /api/v1/send-money/bank-codes/ke/.
amountYesAmount to send in KES. Minimum is KES 100.
nameNoRecipient name for your records.
narrativeNoPayment reason shown in your reports.
idempotency_keyNoUnique key to prevent duplicate payouts.

Initiate a bank payout

curl -X POST https://app.kulmipay.com/api/v1/send-money/initiate/ \
  -H "Authorization: Bearer ISSecretKey_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "KES",
    "provider": "PESALINK",
    "requires_approval": "YES",
    "transactions": [
      {
        "account": "1234567890",
        "bank_code": "68",
        "amount": "5000",
        "name": "John Kamau",
        "narrative": "Vendor payment",
        "idempotency_key": "vendor-jan-john-001"
      }
    ]
  }'

Get bank codes

curl https://app.kulmipay.com/api/v1/send-money/bank-codes/ke/ \
  -H "Authorization: Bearer ISSecretKey_live_xxxxxxxxxxxxxxxx"

Validate bank account

curl -X POST https://app.kulmipay.com/api/v1/send-money/validate-accounts/ \
  -H "Authorization: Bearer ISSecretKey_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "PESALINK",
    "account": "1234567890",
    "bank_code": "68"
  }'