POST request to the webhook_url you set when creating the session.
Event types
| Event | When it fires |
|---|---|
transaction.received | A payment has been recorded on the session |
session.closed, terminal.offline) will be added over time.
Payload
Channel values
| Value | Meaning |
|---|---|
bank_transfer | NIP / instant bank transfer |
pos | POS terminal |
ussd | USSD payment |
card | Web/card payment |
Handling webhooks
Your endpoint should:- Return a
200response quickly — Kler does not wait for your processing to complete - Process the event asynchronously if needed
- Be idempotent — the same
transaction.idmay be delivered more than once
Retries
If your endpoint does not return a2xx response, Kler will retry the webhook with exponential backoff up to 5 times.