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.
null, so parse defensively.
Example payloads
Deposit created
Deposit created
Deposit successful
Deposit successful
Deposit failed
Deposit failed
Deposit needs an OTP
Deposit needs an OTP
Deposit needs a redirect
Deposit needs a redirect
Payout created
Payout created
Payout successful
Payout successful
Payout failed
Payout failed
Refund successful
Refund successful

