> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kler.africa/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks (Inbound)

> Receiveing transaction data from Providus Bank.

This endpoint is called by Providus Bank when a payment lands on a Kler collection account. You do not need to call this endpoint yourself — it is for Providus integration only.

## Providus webhook

**POST** `/v1/webhooks/providus`

Kler verifies the request using HMAC-SHA512 signature before processing.

### Signature verification

Providus sends an `x-auth-signature` header. Kler validates it against `PROVIDUS_WEBHOOK_SECRET`. Requests with invalid signatures are rejected with `401`.

### What Kler does on receipt

1. Looks up the collection account by `accountNumber`
2. Checks for duplicate via `transactionReference` (idempotent)
3. Records the transaction
4. Fires the event to your platform's `webhook_url`

### Outbound event to your platform

Once a transaction is recorded, Kler immediately forwards it to the `webhook_url` set on the session:

```json theme={null}
{
  "event": "transaction.received",
  "session_id": "3f1e2d...",
  "data": {
    "id": "txn_...",
    "amount": "5000.00",
    "currency": "NGN",
    "channel": "bank_transfer",
    "status": "successful",
    "sender_name": "John Doe",
    "sender_account": "0123456789",
    "sender_bank": "058",
    "narration": "Ticket payment",
    "providus_ref": "PVS20250801XXXXXXX",
    "paid_at": "2025-08-01T18:32:00.000Z"
  }
}
```

See [Webhooks concept guide](/concepts/webhooks) for how to handle this on your end.
