Events
Every change you can react to is an event. They're delivered as webhooks and kept in a log you can read back — handy for catching up after downtime or backfilling a new system.
The event object
| Field | |
|---|---|
id |
evt_… — unique; the same id is sent on every webhook retry. |
object |
"event" |
type |
See below. |
created |
Unix seconds when it happened. |
data.object |
The object it's about, as it was when the event was first sent. |
Types
| Type | When |
|---|---|
order.created |
A customer placed an order (sent once the short undo window has passed). |
order.paid |
The order is fully paid (M-Pesa, card, or cash collected at the door or counter). |
order.deposit_paid |
A deposit the shop's terms asked for was paid; the order goes ahead with the rest due on delivery. |
order.payment_required |
The shop asked for payment before delivery on this order. |
order.payment_failed |
A payment attempt failed or expired. The order stays open; the customer can retry. |
order.dispatched |
A rider was assigned (or reassigned). |
order.picked_up |
The rider has the order. |
order.arrived |
The rider is at the customer. |
order.delivered |
Handed over (with the delivery code if the shop uses one). |
order.delivery_failed |
Couldn't be delivered (no answer, wrong location, refused). Stock is returned. |
order.ready_for_pickup |
A pickup order is ready at the counter. |
order.cancelled |
Cancelled by the customer, the shop, or because it went unpaid. Stock is returned. |
order.refund_needed |
Money arrived that must be returned (paid twice, or paid after cancelling). |
order.rated |
The customer rated the order. |
customer.created |
A new customer (first message, or created through the API). |
cart.abandoned |
A customer left items in their cart without ordering. Good for a follow-up. |
checkout_session.completed |
A checkout session became an order. |
List events
GET /v1/events — newest first, paginated.
| Query | |
|---|---|
type |
An exact type, or a prefix: order.* |
created_gte, created_lt |
Unix seconds |
curl "$KIBANDA_API/v1/events?type=order.*&created_gte=1792700000" -H "Authorization: Bearer $KIBANDA_KEY"
Retrieve an event
GET /v1/events/{id}