The merchant will receive the Webhook signature in the Webhook Header part. Below is a sample header that merchants can expect in the Webhook request.
Version (2025-01-01)
Version (2023-08-01)
Header Name
Header Value
content-length
1099
x-webhook-attempt
1
content-type
application/json
x-webhook-signature
07r5C3VMwsGYeldGOCYxe5zoHhIN1zLfa8O0U/yngHI=
x-idempotency-key
n9rn7079wqXcse3GEDEXCYle9ajXmU0SUQY8zrUNAlc=
x-webhook-timestamp
1746427759733
x-webhook-version
2025-01-01
Header Name
Header Value
content-length
1002
x-webhook-attempt
1
content-type
application/json
x-webhook-signature
0s9zgYXyUYrQaadF5oTYzpxzHmPBMmGDSjbAKZTleL4=
x-webhook-timestamp
1746426425612
x-webhook-version
2023-08-01
Ensure that the webhook payload is received in raw text format. Converting the webhook into a JSON object can lead to automatic transformation of decimal valuesāsuch as the payment_amountāinto integers. This alteration (e.g., payment_amount: 170 instead of payment_amount: 170.00) can cause a webhook signature mismatch.
A payment success webhook is triggered when a payment is successfully completed. You can use this for: Updating order status, triggering fulfilment, and sending confirmation to the customer.
The payment failed webhook notifies you when a payment attempt fails, and we receive a failed response from the bank. Use case: Update order status, notify customer, initiate retry flow
Version 2025-01-01
Version 2023-08-01
Version 2025-01-01
Copy
Ask AI
{ "data": { "order": { "order_id": "CFPay_g47u3888d0k0_tblfm766qc", "order_amount": 1.8, "order_currency": "INR", "order_tags": { "cf_link_id": "13746255" } }, "payment": { "cf_payment_id": "1504280029", "payment_status": "FAILED", "payment_amount": 1.8, "payment_currency": "INR", "payment_message": "AMOUNT SHOULD BE WITHIN RANGE BETWEEN 20.00 TO 500000.00.", "payment_time": "2023-01-06T20:00:11+05:30", "bank_reference": "NA", "auth_id": "null", "payment_method": { "netbanking": { "channel": null, "netbanking_bank_code": "3054", "netbanking_bank_name": "UCO Bank" } }, "payment_group": "net_banking", "international_payment":{ "international":false }, "payment_surcharge":null }, "customer_details": { "customer_name": null, "customer_id": null, "customer_email": "[email protected]", "customer_phone": "9611199227" }, "error_details": { "error_code": "GATEWAY_ERROR", "error_description": "AMOUNT SHOULD BE WITHIN RANGE BETWEEN 20.00 TO 500000.00. for this bank", "error_reason": "invalid_amount", "error_source": "cashfree", "error_subcode_raw": "U09" }, "payment_gateway_details": { "gateway_name": "CASHFREE", "gateway_order_id": "1634766330", "gateway_payment_id": "1504280029", "gateway_settlement": "CASHFREE", "gateway_status_code": null }, "payment_offers": null, "terminal_details":{ "cf_terminal_id":17269, "terminal_phone":"8971520311" }}, "event_time": "2023-08-01T20:00:12+05:30", "type": "PAYMENT_FAILED_WEBHOOK"}
Version 2023-08-01
Copy
Ask AI
{"data": { "order": { "order_id": "CFPay_g47u3888d0k0_tblfm766qc", "order_amount": 1.8, "order_currency": "INR", "order_tags": { "cf_link_id": "13746255" } }, "payment": { "cf_payment_id": "1504280029", "payment_status": "FAILED", "payment_amount": 1.8, "payment_currency": "INR", "payment_message": "AMOUNT SHOULD BE WITHIN RANGE BETWEEN 20.00 TO 500000.00.", "payment_time": "2023-01-06T20:00:11+05:30", "bank_reference": "NA", "auth_id": "null", "payment_method": { "netbanking": { "channel": null, "netbanking_bank_code": "3054", "netbanking_bank_name": "UCO Bank" } }, "payment_group": "net_banking" }, "customer_details": { "customer_name": null, "customer_id": null, "customer_email": "[email protected]", "customer_phone": "9611199227" }, "error_details": { "error_code": "GATEWAY_ERROR", "error_description": "AMOUNT SHOULD BE WITHIN RANGE BETWEEN 20.00 TO 500000.00. for this bank", "error_reason": "invalid_amount", "error_source": "cashfree", "error_subcode_raw": "U09" }, "payment_gateway_details": { "gateway_name": "CASHFREE", "gateway_order_id": "1634766330", "gateway_payment_id": "1504280029", "gateway_settlement": "CASHFREE", "gateway_status_code": null }, "payment_offers": null},"event_time": "2023-08-01T20:00:12+05:30","type": "PAYMENT_FAILED_WEBHOOK"}
The User Dropped Webhook notifies you when your customer abandons the payment flow. It will help you understand if customers attempted to pay or not. Some common scenarios where the transaction will be marked as USER_DROPPED are:
User was redirected to the bankās OTP page, but never entered the OTP.
User was redirected to open the UPI app, but never entered the UPI PIN.
User was shown the 3ds OTP modal, but did not enter the OTP.
Version 2025-01-01
Version 2023-08-01
Version 2025-01-01
Copy
Ask AI
{"data": {"order": { "order_id": "order_02", "order_amount": 2, "order_currency": "INR", "order_tags": null},"payment": { "cf_payment_id": "975672265", "payment_status": "USER_DROPPED", "payment_amount": 2, "payment_currency": "INR", "payment_message": "User dropped and did not complete the two factor authentication", "payment_time": "2022-05-25T14:25:34+05:30", "bank_reference": "1803592531", "auth_id": "2980", "payment_method": { "netbanking": { "channel": null, "netbanking_bank_code": "3044", "netbanking_bank_name": "State Bank Of India" } }, "payment_group": "net_banking", "international_payment":{ "international":false }, "payment_surcharge":null},"customer_details": { "customer_name": null, "customer_id": "7112AAA812234", "customer_email": "[email protected]", "customer_phone": "9611199227"},"terminal_details":{ "cf_terminal_id":17269, "terminal_phone":"8971520311"}},"event_time": "2022-05-25T14:35:38+05:30","type": "PAYMENT_USER_DROPPED_WEBHOOK"}
Version 2023-08-01
Copy
Ask AI
{"data": {"order": { "order_id": "order_02", "order_amount": 2, "order_currency": "INR", "order_tags": null},"payment": { "cf_payment_id": "975672265", "payment_status": "USER_DROPPED", "payment_amount": 2, "payment_currency": "INR", "payment_message": "User dropped and did not complete the two factor authentication", "payment_time": "2022-05-25T14:25:34+05:30", "bank_reference": "1803592531", "auth_id": "2980", "payment_method": { "netbanking": { "channel": null, "netbanking_bank_code": "3044", "netbanking_bank_name": "State Bank Of India" } }, "payment_group": "net_banking"},"customer_details": { "customer_name": null, "customer_id": "7112AAA812234", "customer_email": "[email protected]", "customer_phone": "9611199227"}},"event_time": "2022-05-25T14:35:38+05:30","type": "PAYMENT_USER_DROPPED_WEBHOOK"}
The instrument used for making a payment will vary by the payment methods used by the customer. Details of the payload by payment method are documented for reference.
How do I add or configure webhook URLs for different event types (e.g., success, failed)?
You can configure webhook URLs for each notification type in your merchant dashboard. To receive notifications, subscribe to specific events, such as PAYMENT_SUCCESS or PAYMENT_FAILED. For step-by-step instructions, go through the official documentation.
Why am I not receiving failed webhooks?
This may occur if the PAYMENT_FAILED webhook event is not subscribed. To resolve this, open your dashboard, navigate to the webhook configuration, and ensure that the PAYMENT_FAILED event is selected.
This applies to all webhook events. Make sure relevant events are enabled as needed.
Iām getting an error while adding the webhook endpoint. What could be wrong?
Ensure that your endpoint is reachable and returns a 2xx status code. Also, verify that it is properly configured to accept webhook requests.
Why is my webhook not received?
There could be multiple reasons:
The webhook URL was not included in the notify_url parameter during order creation.
Make sure you have done the webhook configuration for the notification type as needed.
The endpoint URL is returning a 4xx or 5xx error.
Actions to take:
Verify that your webhook is correctly configured. Log in to the Merchant Dashboard and go to Payment Gateway > Developers > Webhook Configuration.
Ensure that the endpoint is accessible and able to accept requests from Cashfree.
How do I enable or disable specific webhook types?
You can enable or disable specific webhook types directly from the Merchant Dashboard. For detailed instructions, refer to the
Payment Gateway > Developers > Webhook Configuration section.
How to enable the latest webhook version (e.g., 2025-01-01)?
Once the feature is rolled out in Production, the new version will appear in the version drop-down under Webhook Configuration.
If you do not see the new version, the rollout may still be in progress. Please check back later or contact support for assistance.
Webhook is configured, but no real-time data is received. Why?
This may happen if the webhook URL is configured, but no events are selected. Ensure:
Webhook types are enabled.
Your endpoint is healthy and accessible to accept the requests from Cashfree.
Why did the webhook trigger multiple times?
Duplicate webhook triggers may occur due to misconfiguration or retry logic. This can happen if multiple webhook versions are configured using the same or different endpoint URLs.ā Actions to take:
The Merchant can revisit and delete the duplicate configured endpoint URL. Log in to the Merchant Dashboard and go to Payment Gateway > Developers > Webhook Configuration.
What if I don't pass a notify_url and only use return URLs?
Notify URLs are necessary for webhook delivery. Return URLs only redirect the user after the transaction. Ensure you pass both as different URLs, especially if you need server-side notifications.
How can I improve webhook issue handling and reduce to raise of support tickets?
Always subscribe to the necessary webhook event types (SUCCESS, FAILED, USER_DROPPED).
Test your webhook integration in Sandbox before going live.
Use publicly accessible HTTPS URLs that return 200 OK responses.
Regularly review and update webhook configurations in the merchant dashboard to avoid outdated or incorrect entries.