> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Replay Webhook Events

> Replay missed or unacknowledged webhook events from the Razorpay Dashboard.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
</div>

If you have subscribed to webhook events and your server was unavailable or returned a non-2xx response, Razorpay retries the trigger for 24 hours before disabling the endpoint. Any events that were not acknowledged in that window are not delivered again automatically. Know more about [delivery attempts and retries](/docs/webhooks/best-practices#delivery-attempts-and-retries).

You can replay these missed events yourself from the Razorpay Dashboard, without raising a support ticket. There are two ways to do this:

* [Replay all events for a time window](#replay-all-events-for-a-time-window) - use this when you know roughly when your endpoint was down but not which events you missed.
* [Replay specific events](#replay-specific-events) - use this when you already know the entity IDs, such as payment or order IDs, for which you need the events again.

## Before You Begin

* You can only replay events that are up to **7 days old**. To replay events older than 7 days, contact [Support](https://razorpay.com/support/).
* Only **unacknowledged** events are replayed. Events your server already acknowledged with a 2xx response are not sent again, in either flow.
* The **Replay events** option is on the **Developers** → **Webhooks** page. You set up and edit webhook URLs from **Account & Settings** → **Webhooks**, as described in [Set Up and Edit Payments Webhooks](/docs/webhooks/setup-edit-payments).
* You can trigger a maximum of **5 replays in a 24-hour window**. Beyond this, the Dashboard shows a **Limit Exhausted. Try again after 24 hours** message.
* If any of the webhook URLs you select is disabled, it is **enabled automatically** when you replay the events.
* Replayed events are sent to your endpoint exactly as they were originally generated and are signed with your current webhook secret. Replay does not create new payments, orders or any other records.
* Replay is an at-least-once delivery. Your endpoint may receive an event it has already processed, so make sure it is [idempotent](#handle-duplicate-events).

## Replay All Events for a Time Window

Use this flow to replay every unacknowledged event in a given period, for example, after a server outage.

1. Log in to the [Razorpay Dashboard](https://dashboard.razorpay.com/) and navigate to **Developers** → **Webhooks**.
2. Click **Replay events**.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-events-button.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=265e9fd2a45660b587c3fb083bd9f807" alt="Replay events button on the Webhooks page of the Razorpay Dashboard" width="800" data-path="static/docs-home/assets/webhooks-replay-events-button.png" />
3. On the **Replay type** step, select the **Date range** and choose **Unacknowledged events**. Click **Next**.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-type-unacknowledged.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=a2430886d99a73ed8199deb2936c77e3" alt="Replay type step with Unacknowledged events selected" width="800" data-path="static/docs-home/assets/webhooks-replay-type-unacknowledged.png" />
4. On the **Select URLs** step, select the webhook URLs that should receive the replayed events. These are the URLs you have already [set up on the Dashboard](/docs/webhooks/setup-edit-payments). Click **Next**.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-select-urls.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=8c3b8e9fb30fd7f1905093163de9568e" alt="Select URLs step listing the configured webhook URLs" width="800" data-path="static/docs-home/assets/webhooks-replay-select-urls.png" />
5. On the **Select events** step, all events configured for the selected URLs are selected by default. Clear the ones you do not want to trigger, or use **Clear all** to start from an empty selection.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-select-events.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=91e7e6f3c43c949f84571821f3f49d98" alt="Select events step with the configured webhook events listed" width="800" data-path="static/docs-home/assets/webhooks-replay-select-events.png" />
6. Click **Replay events**.

## Replay Specific Events

Use this flow when you know exactly which entities you need events for, for example, a list of payment IDs your system never marked as paid. Only unacknowledged events matching the IDs you enter are replayed.

1. Log in to the [Razorpay Dashboard](https://dashboard.razorpay.com/) and navigate to **Developers** → **Webhooks**.
2. Click **Replay events**.
3. On the **Replay type** step, select the **Date range** and choose **Specific events**.
4. Under **Entity for which you want to replay the events**, select the entity: **Payment**, **Order**, **Invoice**, **Subscription**, **Refund** or **QR Code**.
5. Enter the entity IDs, up to **500** per request. Upload a CSV file, or click **Enter manually** to type the IDs directly. Click **Download Template** to get a CSV in the expected format. Click **Next**.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-type-specific-events.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=4e99709eb98df829270ade8b1a28718f" alt="Replay type step with Specific events selected and a CSV of payment IDs uploaded" width="800" data-path="static/docs-home/assets/webhooks-replay-type-specific-events.png" />
6. On the **Select URLs** step, select the webhook URLs that should receive the replayed events. These are the URLs you have already [set up on the Dashboard](/docs/webhooks/setup-edit-payments). Click **Next**.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-select-urls.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=8c3b8e9fb30fd7f1905093163de9568e" alt="Select URLs step listing the configured webhook URLs" width="800" data-path="static/docs-home/assets/webhooks-replay-select-urls.png" />
7. On the **Select events** step, clear any events you do not want to trigger.

   <img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-select-events-specific.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=8f51d11ee6a89aefe995a9b1260dc885" alt="Select events step with a subset of payment events selected" width="800" data-path="static/docs-home/assets/webhooks-replay-select-events-specific.png" />
8. Click **Replay events** to start.

## After You Replay

After you click **Replay events**, the Dashboard confirms that the webhook events are being replayed. Depending on the volume, this can take some time. Click **Close** to return to the **Webhooks** page, where you can track the replayed events under the respective webhook URLs.

<img class="click-zoom" src="https://mintcdn.com/razorpay-881012b3/b-tfpq_2_jq8m6La/static/docs-home/assets/webhooks-replay-confirmation.png?fit=max&auto=format&n=b-tfpq_2_jq8m6La&q=85&s=9b0dd841bd57345e6d339e01596cc039" alt="Confirmation that webhook events are being replayed" width="500" data-path="static/docs-home/assets/webhooks-replay-confirmation.png" />

Replayed events are queued separately from live webhook traffic, so a replay does not delay or block the events your integration is receiving in real time.

## Handle Duplicate Events

A replayed event is a re-delivery of the original event, not a new one. If your endpoint did receive and process the original event, a replay results in a duplicate.

Use the `x-razorpay-event-id` header to identify duplicates. The value of this header is unique per event and stays the same across the original delivery and every replay of it. Store the header values you have already processed and skip an event if you see the same value again. Know more about [handling duplicate events](/docs/webhooks/best-practices#event-handling).

### Related Information

<ul>
  <li><a href="/docs/webhooks" target="_blank">About Webhooks</a></li>
  <li><a href="/docs/webhooks/setup-edit-payments" target="_blank">Set Up and Edit Payments Webhooks</a></li>
  <li><a href="/docs/webhooks/best-practices" target="_blank">Webhook Best Practices</a></li>
  <li><a href="/docs/webhooks/faqs" target="_blank">Webhook FAQs</a></li>
</ul>
