Skip to main content

Envelope

Every webhook has the same three top-level fields.
string
The event name. See Event types.
object
The transaction the event is about. See Fields in data.
string
When the event was created, ISO 8601.

Event types

New event types may be added. Return 2xx for any you don’t recognise.

Transaction types

Statuses

A stepRequired update keeps the status at pending. It isn’t a failure.

Fields in data

string
required
Tanda’s ID for the transaction.
string
required
The unique reference you sent.
string
required
pending, successful or failed.
string
required
deposit, withdrawal or refund.
string
The rail: momo or bank.
string
A step the customer must complete: otp or redirect.
string
Where to send the customer when stepRequired is redirect.
string
The network or bank reference, such as an M-PESA receipt number.
string
Extra detail, often the reason for a failure. For display and logs only; don’t branch on it.
number
Amount in KES, when included.
string
KES, when included.
string
Refunds only. The deposit being refunded.
string
Successful payouts only. When the payout completed, ISO 8601.
string
Failed payouts only. Why the payout failed. For display and logs only.
Optional fields are left out rather than sent as null, so parse defensively.

Example payloads