How to Set Up Razorpay Webhook Notifications with Webhookify

Razorpay is India's leading payment gateway platform, enabling businesses to accept, process, and disburse payments through a comprehensive suite of products including payment links, subscriptions, invoices, and smart collect. Used by millions of businesses across India and internationally, Razorpay processes payments via UPI, credit/debit cards, net banking, wallets, and more. Razorpay's webhook system sends real-time HTTP notifications when payment events occur in your account -- successful payments, failed transactions, subscription renewals, refunds, and disputes. With Webhookify, you can capture every Razorpay event and receive instant, AI-powered notifications on Telegram, Discord, Slack, Email, or mobile push with a cash register sound for every successful payment. Whether you run an e-commerce store, a SaaS product, or a marketplace, real-time payment visibility is essential.
This guide shows you how to connect Razorpay webhooks to Webhookify so you never miss a payment, refund, or subscription event again.
Why Monitor Razorpay Webhooks with Webhookify?
-
Instant Payment Alerts with Cash Sound: Hear a cash register sound on your phone every time a payment is captured through Razorpay. Whether it is a UPI payment, card transaction, or net banking transfer, Webhookify notifies you the instant funds are collected.
-
Failed Payment Detection: Payment failures can result in lost revenue and poor customer experience. Webhookify sends you an immediate alert when a payment fails, including the failure reason, so you can follow up with the customer or investigate technical issues.
-
Subscription Lifecycle Monitoring: Track the complete subscription lifecycle from activation to cancellation. Get Slack or Discord alerts for subscription renewals, failed charges, and cancellations, enabling your team to manage churn proactively.
-
AI-Powered INR Summaries: Razorpay payloads contain amounts in paisa (smallest currency unit), entity IDs, method details, and bank references. Webhookify's AI converts these into human-readable summaries like "Payment of Rs. 2,499 captured via UPI (john@okaxis) for Order #12345."
-
Dispute and Refund Awareness: Get notified immediately when a customer raises a dispute (chargeback) or when a refund is processed. Timely awareness of disputes gives you a better chance of resolving them within the response window.
Prerequisites
- A Razorpay account (Test or Live mode). Sign up at razorpay.com if you do not have one.
- Razorpay API keys generated for your account.
- A Webhookify account. Sign up for free at webhookify.app.
- A notification channel configured in Webhookify (Telegram bot, Discord webhook, Slack workspace, or Email address).
- Access to the Razorpay Dashboard with permissions to manage webhook settings.
Step-by-Step Setup Guide
Create a Webhookify Endpoint
Log in to your Webhookify dashboard at webhookify.app and click "Create Endpoint." Give it a name like "Razorpay Payments" or "Razorpay Subscriptions."
Webhookify generates a unique HTTPS URL:
https://hook.webhookify.app/w/your-unique-endpoint-id
Copy this URL. The endpoint is active immediately and ready to receive Razorpay webhook events. All incoming payloads are logged and visible in your Webhookify dashboard in real time.
Configure Your Notification Channel
Set up your notification channels in Webhookify under Settings before connecting Razorpay:
- Telegram: Connect the Webhookify bot for personal payment alerts. Popular among Indian founders and small business owners who want instant visibility into every transaction.
- Discord: Add a Discord webhook URL for team channels. Route payment notifications to a dedicated sales or revenue channel.
- Slack: Connect your Slack workspace for professional operations. Ideal for fintech teams that need payment event visibility in their existing workflows.
- Email: Enter your email for transaction records and accounting. Useful for sharing payment activity with your CA or bookkeeper.
- Mobile Push: Install the Webhookify app on iOS or Android. Enable the cash sound notification -- every
payment.capturedevent plays a satisfying cash register sound, turning your phone into a real-time sales tracker.
For many Indian startups and D2C brands, Telegram with mobile push is the preferred combination. It provides personal, instant awareness of every sale.
Set Up Webhooks in Razorpay
Configure Razorpay to send webhook events to your Webhookify endpoint:
- Log in to the Razorpay Dashboard.
- Navigate to Account & Settings in the left sidebar.
- Click on Webhooks.
- Click "Add New Webhook".
- In the Webhook URL field, paste your Webhookify endpoint URL.
- Enter a Secret -- this is used by Razorpay to sign webhook payloads. You can enter any secure string. The signature is sent in the
X-Razorpay-Signatureheader and can be used for verification. - Under Alert Email, optionally enter an email to receive alerts if the webhook fails.
- Under Events, check the boxes for the events you want to subscribe to.
- Click Create Webhook.
Make sure you are in the correct mode (Test or Live) when creating the webhook. Test mode webhooks only fire for test transactions, and Live mode webhooks only fire for real payments.
Select Events to Monitor
Razorpay provides an extensive set of webhook events. Here are the most important ones organized by category:
Payment Events:
payment.authorized-- A payment has been authorized but not yet captured. The amount is held on the customer's payment method.payment.captured-- A payment has been captured. The funds have been collected.payment.failed-- A payment attempt failed. The payload includes the failure reason.payment.dispute.created-- A dispute (chargeback) has been raised by the customer.payment.dispute.won-- A dispute has been resolved in your favor.payment.dispute.lost-- A dispute has been resolved in the customer's favor.payment.downtime.started-- A payment method is experiencing downtime.payment.downtime.resolved-- Payment method downtime has been resolved.
Subscription Events:
subscription.activated-- A new subscription has been activated.subscription.charged-- A subscription renewal payment has been charged.subscription.completed-- A subscription has completed all its billing cycles.subscription.updated-- A subscription has been modified.subscription.pending-- A subscription charge is pending.subscription.halted-- A subscription has been halted due to payment failures.subscription.cancelled-- A subscription has been cancelled.subscription.paused-- A subscription has been paused.subscription.resumed-- A subscription has been resumed.
Refund Events:
refund.created-- A refund has been initiated.refund.processed-- A refund has been successfully processed.refund.failed-- A refund attempt failed.
Order Events:
order.paid-- An order has been fully paid.
Invoice Events:
invoice.paid-- An invoice has been paid.invoice.partially_paid-- An invoice has been partially paid.invoice.expired-- An invoice has expired without payment.
For most businesses, subscribing to payment.authorized, payment.captured, payment.failed, refund.created, and subscription.activated provides comprehensive payment monitoring.
Test Your Configuration
Test your webhook setup using Razorpay's test mode:
- Make sure you are in Test Mode in the Razorpay Dashboard (toggle at the top of the page).
- Create the webhook in Test Mode with your Webhookify URL.
- Use the Razorpay Test Dashboard to create a test payment:
- Go to Payments > Payment Links and create a test payment link.
- Complete the test payment using Razorpay's test card numbers (e.g., 4111 1111 1111 1111).
- After the test payment, check your Webhookify dashboard for the incoming
payment.authorizedandpayment.capturedevents. - Verify that your notification channel received the alerts.
- If you enabled the cash sound on mobile, you should hear it for the
payment.capturedevent.
Once testing is complete, create the webhook again in Live Mode with the same Webhookify URL to start receiving real payment notifications.
Razorpay Webhook Events You Can Monitor
Complete reference of Razorpay webhook events that Webhookify captures:
Payments:
payment.authorized-- Payment authorized, funds heldpayment.captured-- Payment captured, funds collectedpayment.failed-- Payment attempt failedpayment.dispute.created-- Chargeback/dispute raisedpayment.dispute.won-- Dispute resolved in merchant's favorpayment.dispute.lost-- Dispute resolved in customer's favorpayment.downtime.started-- Payment method experiencing issuespayment.downtime.resolved-- Payment method restored
Subscriptions:
subscription.activated-- New subscription activatedsubscription.charged-- Subscription renewal chargedsubscription.completed-- All billing cycles completedsubscription.updated-- Subscription modifiedsubscription.pending-- Charge pendingsubscription.halted-- Subscription halted (payment failures)subscription.cancelled-- Subscription cancelledsubscription.paused-- Subscription pausedsubscription.resumed-- Subscription resumed
Refunds:
refund.created-- Refund initiatedrefund.processed-- Refund completedrefund.failed-- Refund failedrefund.speed_changed-- Refund speed changed
Orders:
order.paid-- Order fully paid
Invoices:
invoice.paid-- Invoice paid in fullinvoice.partially_paid-- Invoice partially paidinvoice.expired-- Invoice expired
Settlements:
settlement.processed-- Settlement processed to bank account
Virtual Accounts:
virtual_account.credited-- Virtual account received fundsvirtual_account.closed-- Virtual account closed
Each payload includes the entity ID, amount (in paisa), currency, method (UPI, card, netbanking, wallet), customer details, and timestamps.
Real-World Use Cases
-
D2C Brand Sales Tracking: Set up mobile push notifications with cash sound for every
payment.capturedevent. Whether customers pay via UPI, credit card, or COD prepayment, you will hear the sale the instant it happens. Many Indian D2C founders keep a daily tally just by counting notification sounds. -
SaaS Subscription Management: Route
subscription.activated,subscription.halted, andsubscription.cancelledevents to a Slack channel. Your customer success team can see when new users subscribe, when payments fail (halted), and when customers cancel, enabling timely intervention. -
Refund and Dispute Monitoring: Forward
refund.createdandpayment.dispute.createdevents to your operations team via Discord or email. Disputes have a limited response window in India, so instant awareness is critical for protecting your revenue. -
Payment Downtime Awareness: Monitor
payment.downtime.startedandpayment.downtime.resolvedevents to know when specific payment methods (UPI, net banking, specific banks) are experiencing issues. This helps you proactively communicate with customers and reduce failed transaction frustration.
Example Notification
When a payment is captured in Razorpay, Webhookify delivers a notification like this:
{
"entity": "event",
"account_id": "acc_BFQ7uQEaa7j2P5",
"event": "payment.captured",
"contains": ["payment"],
"payload": {
"payment": {
"entity": {
"id": "pay_FgR7UNaVoM3qEP",
"entity": "payment",
"amount": 249900,
"currency": "INR",
"status": "captured",
"order_id": "order_FgR7MNOP8a2b3c",
"method": "upi",
"vpa": "john@okaxis",
"description": "Pro Plan - Annual Subscription",
"email": "john@example.com",
"contact": "+919876543210",
"created_at": 1740148320
}
}
},
"created_at": 1740148325
}
Webhookify's AI summary would display:
Razorpay Payment Captured: Rs. 2,499.00 INR via UPI (john@okaxis). Description: "Pro Plan - Annual Subscription." Customer: john@example.com (+919876543210). Order: order_FgR7MNOP8a2b3c.
If you have the cash sound enabled, you will hear a "cha-ching" along with this notification.
Troubleshooting
-
No webhook events received after creating the webhook: Verify you are in the correct mode (Test vs. Live) in the Razorpay Dashboard. Webhooks created in Test Mode only fire for test transactions, and vice versa. Also confirm you selected at least one event type.
-
"payment.authorized" event received but not "payment.captured": If you have auto-capture disabled in your Razorpay settings, payments are authorized but not automatically captured. You need to manually capture the payment (or configure auto-capture) for the
payment.capturedevent to fire. -
Webhook shows "Failed" status in Razorpay Dashboard: Check the webhook URL for typos or extra characters. Razorpay requires HTTPS endpoints (which Webhookify provides). If the URL is correct, try deleting and re-creating the webhook.
-
Amounts appear in paisa instead of rupees: Razorpay sends all amounts in the smallest currency unit (paisa for INR, cents for USD). An amount of 249900 means Rs. 2,499.00. Webhookify's AI automatically converts these to human-readable amounts in the notification summary.
-
Duplicate webhook events: Razorpay retries webhook delivery up to 24 times if it does not receive a successful response. Webhookify responds instantly, but network issues could occasionally cause retries. Each event has a unique
eventID andpayload.payment.entity.idthat you can use to identify duplicates.
Razorpay supports webhook secrets for signature verification. When you create a webhook in the Razorpay Dashboard, set a strong secret. Razorpay will include an X-Razorpay-Signature header with each webhook payload, which is an HMAC SHA256 hash of the request body using your secret. Webhookify logs this header automatically, giving you full verification capability if needed.
Track Every Razorpay Payment in Real Time
Create a free Webhookify endpoint and get instant Razorpay payment notifications with a cash sound on your phone, plus alerts on Telegram, Discord, and Slack.
Get Started FreeRelated Articles
- Webhook Security Best Practices
- How to Receive Webhook Notifications on Telegram
- Real-Time Payment Failure Alerts with Webhooks
- Revenue Monitoring for Indie Hackers & Solo Founders
- How to Set Up Stripe Webhook Notifications
- How to Set Up Square Webhook Notifications