POST callbacks that deliver notification messages for events.
ClickPesa uses webhooks to inform your systems when transactional events occur. This way, your servers are always up to date with transaction information.
Webhook events are published from actions in any of the ClickPesa products, including the ClickPesa Dashboard, Hosted Integrations, Embedded Solutions and APIs.
Webhook Levels
ClickPesa supports webhooks at two levels:| Level | Scope | When Used |
|---|---|---|
| Merchant webhooks | All transactions for the merchant | Dashboard, Hosted, Embedded, and API transactions that have no application context |
| Application webhooks | API-initiated transactions only | Payments and payouts created via API |
For API-initiated payments and payouts, if the application has a webhook URL configured for the event, the callback is sent to the application webhook only — the merchant webhook is not used. If the application has no webhook for the event, the merchant webhook is used instead.
Webhook Events
PAYMENT RECEIVED
When a payment is received successfully, this event is triggered. This event provides you with key information about the payment, including identifiers, amounts, and customer details.
- Description - This event is triggered whenever a customer makes a successful payment. The webhook will send details of the transaction, including the amount, payer information, and transaction status.
- Sample Payload Data
PAYMENT FAILED
- Description - This event is triggered when a payment attempt fails. The webhook will include information about the failure reason, the attempted transaction, and any relevant error codes.
- Sample Payload Data
PAYOUT INITIATED
- Description - This event is triggered when a payout process is initiated. The webhook will provide details such as the payout amount, recipient information, and the initial status of the payout.
- Sample Payload Data
PAYOUT REFUNDED
- Description - This event occurs when a payout is refunded, due to an issue with the payout process. The webhook will include the refund details and the original payout information.
- Sample Payload Data
PAYOUT REVERSED
- Description: This event is triggered when a payout is reversed, typically due to an error or a dispute. The webhook will contain details about the reversal, the original payout, and any related information.
- Sample Payload Data
DEPOSIT RECEIVED
- Description: This event is triggered when a deposit is received. The webhook will contain details about the deposit and any related information.
- Sample Payload Data
Setting Up Webhooks
Merchant-Level Webhooks
Merchant webhooks apply to all transactions unless an application webhook is used (see below).-
Access webhook settings
- Log in to your ClickPesa Dashboard
- Navigate to Settings → Developers
- Locate the Webhooks section
-
Add webhook URLs
- Select event types:
PAYOUT INITIATED,PAYOUT REVERSED,PAYOUT REFUNDED,PAYMENT RECEIVED,PAYMENT FAILED, orDEPOSIT RECEIVED - Set the webhook URL for each event
- Select event types:
Application-Level Webhooks
Application webhooks let you receive events per application for API-initiated transactions. Use them when you have multiple applications (e.g. different apps or environments) and want separate webhook endpoints. Supported events:PAYMENT RECEIVED, PAYMENT FAILED, PAYOUT INITIATED, PAYOUT REFUNDED, PAYOUT REVERSED
DEPOSIT RECEIVED is only available at the merchant level.-
Access application settings
- Log in to your ClickPesa Dashboard
- Navigate to Settings → Developers
- Click on an application to open its details
-
Configure application webhooks
- In the Application Webhooks section, add webhook URLs for the events you need
- Each application can have its own URLs per event
Receiving Webhook Calls
- The gateway sends HTTP POST requests to the provided URL upon an event
- Your system should respond with a 2xx HTTP status code to acknowledge receipt
- Payloads can include a
checksumandchecksumMethodfor verification (see Checksum documentation)
This status code only indicates receipt, not successful processing.
Extra data in the response is ignored.
Extra data in the response is ignored.

