Skip to main content
Use a mobile money charge when you already have the customer’s phone number. Tanda sends a payment prompt to their phone (an STK push on M-PESA); they enter their M-PESA or Airtel Money PIN to approve, and the money lands in your KES wallet.

1. Send the prompt

Call Mobile money charge.
Response
Tell the customer to check their phone as soon as you get the response. Prompts time out after a short while; if the customer misses it, start a new charge with a new externalReference.

2. Wait for the outcome

The customer approves (or ignores) the prompt on their phone, so the result arrives asynchronously as a transaction_updated webhook.
Successful
Failed
thirdPartyReference is the M-PESA or Airtel receipt number. Store it: customers quote it when they contact you. If you haven’t received a webhook, check with Get transaction using the transactionId or your externalReference. Fulfil only when chargeStatus is successful.

3. Handle an OTP step

Occasionally a charge needs a one-time code. The webhook arrives with status: "pending" and stepRequired: "otp":
Ask the customer for the code and submit it with Validate OTP:
A final successful or failed webhook follows.

Why prompts fail

The note field explains a failure. The common ones: The full list is in Transaction errors. Don’t branch your code on the wording of note; use status.

Refunds

You can refund a successful mobile money payment back to the customer’s wallet. See Refunds.