Skip to Content
KenyaCollect (Kenya M-Pesa)

Collect (Kenya M-Pesa)

Create one M-Pesa collection per API call. The payer approves on their phone. Live API keys only. Scope: payin:create.

Idempotency-Key is required (16–255 chars). Replaying the same key + same body returns the first response.

Limits: 20–145,000 KES.

Create collection

POST/v1/ke/collectspayin:create

Request fields

FieldRequiredNotes
amountyesDecimal string, 20–145,000 KES
accountNumberyesKenya MSISDN: 2547XXXXXXXX, 07XXXXXXXX, or 7XXXXXXXX
accountNameyesPayer name
customerEmailnoPayer email
merchantReferencenoYour order / reference id
descriptionnoShown in the collection flow when supported
metadatanoOpaque JSON stored on the transaction
{ "amount": "500", "accountNumber": "254712345678", "accountName": "Jane Doe", "customerEmail": "payer@example.com", "merchantReference": "order-42", "description": "Invoice 42", "metadata": { "orderId": "42" } }

Store transactionId. Prompt the payer to approve the M-Pesa request on their phone.

Settlement is KES only. There is no FX swap to USDC/USDT on this rail.

Poll status

GET/v1/ke/collects/:transactionIdpayin:create

No body. Sign with {timestamp}..

curl -X GET https://api.transacty.ai/v1/ke/collects/{transactionId} \
  -H "X-Transacty-Key: $TRANSACTY_KEY" \
  -H "X-Transacty-Timestamp: $TS" \
  -H "X-Transacty-Signature: $SIG" \
  -H "Content-Type: application/json"

Poll until status is terminal (success / failed), or rely on payin.completed / payin.failed.

Next steps

Last updated on