Skip to main content
Customer Operating Unit (COU) webhooks deliver real-time event notifications to your server when an asynchronous operation reaches a terminal state. Instead of continuously polling the response endpoints, Cashfree pushes updates to your registered endpoint as soon as a terminal state is reached.
Webhooks are delivered in addition to the polling APIs, not instead of them. Implement polling as a fallback to handle cases where webhook delivery is delayed or retried.

Signature verification

Every COU webhook request includes two headers for signature verification: Algorithm:
Note the dot (.) separator between the timestamp and the raw body. The signature is hex-encoded (lowercase), not Base64.
Always compute the signature from the raw request body string. Parsing and re-serialising JSON can change whitespace or field order, which causes verification to fail.
The following examples have not been tested in a production environment. Adapt them to your framework and language version before use.

Common fields

Every COU webhook payload includes the following top-level fields regardless of event type:

Event types

The following table lists the COU webhook events and what triggers each one:

BILL_FETCH_STATUS

Cashfree sends this event when a FETCH_AND_PAY flow bill fetch request completes.

Payload fields

A BILL_FETCH_STATUS payload contains the following fields:

Sample payloads


BILL_VALIDATION_STATUS

Cashfree sends this event when a VALIDATE_AND_PAY flow bill validation request completes.

Payload fields

A BILL_VALIDATION_STATUS payload contains the following fields:

Sample payloads


BILL_PAYMENT_STATUS

Cashfree sends this event when a bill payment transaction reaches a terminal state.

Payload fields

A BILL_PAYMENT_STATUS payload contains the following fields:

Sample payloads


BILLER_MDM_UPDATED

Cashfree sends this event when one or more biller MDM records are updated. Use this event to refresh your local biller cache rather than polling the Billers Info API.

Payload fields

A BILLER_MDM_UPDATED payload contains the following fields:

billers[] object

Each entry in billers represents one updated biller and contains the following fields:

Sample payload


Nested object schemas

bill_details object

Customer reference parameters echoed back from the bill fetch request.

biller_response object

Bill details returned by the biller. Present on successful FETCH_AND_PAY bill fetch and bill payment events. In the biller_response object, fields that the biller does not return are omitted.

Handling retries

Cashfree retries webhook delivery if your endpoint does not respond with HTTP 2xx within the timeout window. To handle retries safely:
  1. Respond immediately: Return HTTP 200 as soon as you receive the request, before performing any downstream processing.
  2. Deduplicate by webhook_id: Store processed webhook_id values and skip processing if you have already handled a given ID.
  3. Verify the signature: Reject any request where signature verification fails.