See
.Listed below are the various webhooks events available in RazorpayX. The payload remains the same irrespective of the fund_account_type
, that is, a bank account, VPA or card, to which the payout is made.
The table below lists the webhook events available for RazorpayX Payouts. You can enable webhooks for payout statuses listed in
.Webhook Event | Applicable For | Description |
---|---|---|
payout.pending | all payouts | Triggered whenever a payout moves to the pending state. The payout remains in this state till you approve or reject it. |
payout.rejected | all payouts | Triggered whenever a payout moves to the rejected state. The payout was rejected by someone from your team. |
payout.queued | all payouts |
|
payout.initiated | all payouts | Triggered when the payout moves to the processing state when the payout is created or from the queued state when sufficient funds are available to process the payout. |
payout.processed | all payouts | Triggered when a payout moves to the processed state. This happens when the payout is processed by the contact's bank. |
payout.updated | all payouts | Triggered whenever there is a change in the payout entity. For example, when we receive the UTR for the payout from the bank.
|
payout.reversed | all payouts | Triggered whenever a payout fails and the amount is returned to your business account. |
payout.failed | all payouts | Triggered when a payout is failed because the beneficiary bank OR NPCI OR processing partner bank is down. If the beneficiary bank/partner banks/NPCI does not recover within the stipulated SLA, a FAILED event will be sent with the respective reason. Handy Tips It is mandatory to subscribe to the payout.failed event if you are using RazorpayX APIs. |
payout.downtime.started | all payouts | Triggered when a payout downtime starts. Do not initiate a payout if this is triggered since the beneficiary bank is down and the payout will fail. |
payout.downtime.resolved | all payouts | Triggered when a payout downtime is resolved. Make payouts once this webhook is triggered as it indicates that the beneficiary bank downtime is resolved. |
The table below lists the webhook events available for
.Webhook Events | Description |
---|---|
transaction.created | Triggered whenever you:
|
When your webhook secret
is set, Razorpay uses it to create a hash signature with each payload. This hash signature is passed with each request under the X-Razorpay-Signature
header that you need to validate at your end. Support for validating the signature is provided in all our
Do Not Parse or Cast the Webhook Request Body
While generating the signature at your end, ensure that the webhook body passed as an argument is the raw webhook request body. Do not parse or cast the webhook request body.
X-Razorpay-Signature
The hash signature is calculated using HMAC with SHA256 algorithm, your webhook secret set as the key and the webhook request body as the message.
You can also validate the webhook signature yourself using an
as shown below:key = webhook_secretmessage = webhook_body // raw webhook request bodyreceived_signature = webhook_signatureexpected_signature = hmac('sha256', message, key)if expected_signature != received_signaturethrow SecurityErrorend
Take payouts in RazorpayX as an example. For payouts, you should receive webhooks in the following order:
payout.pending
(if you have enabled on your account)payout.queued
(in case your )payout.initiated
payout.processed
orpayout.reversed
The above order may not be followed at all times. Please keep this in mind and configure your webhook URL to handle such scenarios.
The processed
and reversed
states are the last states for a payout. Their corresponding webhooks payout.processed
or payout.reversed
indicate this state change. Any webhook received after these should be ignored.