Skip to main content
By default, the Bill Fetch Request and Bill Payment Request APIs are asynchronous. They return HTTP 202 and you poll the corresponding response API for the final result. With synchronous responses enabled, these APIs attempt to return the final result within a 30-second window in the same call. If the result is not ready within that window, the API falls back to the standard async flow and returns HTTP 202.
Synchronous responses are an opt-in feature and are disabled by default. To enable them for your account, contact your Cashfree account manager. You do not need to change your request format.

Response status

The following table explains each response status and what to do: The data.result object has the same format as the data object that the corresponding response API returns, so you can reuse your existing response handling.
For LIST billers where the Bill Fetch Response was returned using x-api-version: 2026-01-01, data.result contains the biller_responses array format. For all other billers, it contains the standard biller_response object.

Examples

The following examples show Bill Payment Request responses for each outcome:

Handle synchronous responses

Even with synchronous responses enabled, some requests return HTTP 202, for example when the biller responds slowly. To handle both outcomes:
  1. Set your HTTP client timeout to at least 35 seconds for the Bill Fetch Request and Bill Payment Request APIs. This ensures your client does not time out before the 30-second sync window closes.
  2. Check the HTTP status code of the response.
  3. If the status code is 200, read the final status from data.status and the details from data.result.
  4. If the status code is 202, poll the corresponding response API using the polling strategy described on its page.
Do not resend a Bill Payment Request after a client timeout or an HTTP 202 response. Resending the request can create a duplicate payment. After an HTTP 202 response, poll the Bill Payment Response API for the final status.

Recovery after a client timeout

If your client times out before the response arrives, the payment may still be processing on the server. The Cashfree server keeps the connection open for up to 60 seconds. If the sync result is not ready within the 30-second window, the API immediately sends an async fallback response in the same call. This response contains transaction_ref_id. Use that transaction_ref_id to poll the Bill Payment Response API for the final status. Cashfree delivers webhook notifications for bill fetch and payment events regardless of whether the API returned HTTP 200 (synchronous result) or HTTP 202 (asynchronous). You receive webhooks in both cases, so your webhook handler does not need any changes when synchronous responses are enabled. For payload contracts and signature verification, see COU Webhooks.