Razorpay Trigger Node
Start a workflow automatically when a Razorpay event fires — payments captured, orders paid, refunds created, subscriptions activated, and 25+ more events. The single most important trigger for Indian D2C stores.
Prerequisites
- A Razorpay account (live or test)
- Access to Razorpay Dashboard → Settings → Webhooks
- A Nodebase workflow with a Razorpay Trigger node added
- (Optional) A webhook secret — required if you enable signature verification
Setup
- Add a Razorpay Trigger node to your workflow canvas
- Select the events you want to listen to (e.g.
payment.captured) - Click Save — Nodebase generates a unique webhook URL
- Copy the webhook URL from the node panel
- Go to dashboard.razorpay.com → Settings → Webhooks → Add New Webhook
- Paste the URL into the Webhook URL field
- (Recommended) Set a Secret and paste it into the node's Webhook Secret field — Nodebase will verify every incoming request using HMAC-SHA256
- Check the events you want Razorpay to send
- Click Save
Signature Verification: Always set a webhook secret in production. Without it, anyone who knows your webhook URL can send fake events to your workflow.
Supported Events
| Category | Events |
|---|---|
| Payment | payment.captured · payment.failed · payment.authorized |
| Order | order.paid |
| Refund | refund.created · refund.processed · refund.failed |
| Subscription | subscription.activated · subscription.charged · subscription.completed · subscription.cancelled · subscription.halted · subscription.paused · subscription.resumed |
| Invoice | invoice.paid · invoice.partially_paid · invoice.expired |
| Dispute | dispute.created · dispute.won · dispute.lost · dispute.closed |
| Virtual Account | virtual_account.credited |
| Settlement | settlement.processed |
| Payout | payout.processed |
| Transfer | transfer.processed |
| QR Code | qr_code.credited |
Output Variables
After the trigger fires, the following variables are available to all downstream nodes:
| Variable | Type | Description | Example |
|---|---|---|---|
{{razorpayTrigger.event}} | string | Event type | "payment.captured" |
{{razorpayTrigger.payload}} | object | Full event payload from Razorpay | { payment: { entity: {...} } } |
{{razorpayTrigger.payload.payment.entity.id}} | string | Payment ID | "pay_OFj67X3s9kH5rA" |
{{razorpayTrigger.payload.payment.entity.amount}} | number | Amount in paise | 50000 |
{{razorpayTrigger.payload.payment.entity.currency}} | string | Currency code | "INR" |
{{razorpayTrigger.payload.payment.entity.status}} | string | Payment status | "captured" |
{{razorpayTrigger.payload.payment.entity.email}} | string | Customer email | "rahul@example.com" |
{{razorpayTrigger.payload.payment.entity.contact}} | string | Customer phone (with country code) | "919876543210" |
{{razorpayTrigger.payload.payment.entity.notes}} | object | Custom notes attached to payment | { orderId: "SHP-001" } |
{{razorpayTrigger.accountId}} | string | Your Razorpay account ID | "acc_OFj67X3s9kH5rA" |
{{razorpayTrigger.receivedAt}} | string | ISO timestamp when webhook was received | "2026-04-01T10:30:00.000Z" |
Amount is in paise. Razorpay sends all amounts in the smallest currency unit. ₹500 = 50,000 paise. Use
$.number.paiseToRupees({{razorpayTrigger.payload.payment.entity.amount}}) in a Code node to convert.Complete Workflow Examples
Post-Payment Order Fulfilment
Use case: When a customer pays on your Shopify store, automatically create a Shiprocket order and send a WhatsApp confirmation.
textWorkflow
Razorpay Trigger (event: payment.captured)
→ Shiprocket — Create Order
orderId: {{razorpayTrigger.payload.payment.entity.id}}
billingName: {{razorpayTrigger.payload.payment.entity.notes.customerName}}
billingPhone: {{razorpayTrigger.payload.payment.entity.contact}}
billingEmail: {{razorpayTrigger.payload.payment.entity.email}}
billingPincode: {{razorpayTrigger.payload.payment.entity.notes.pincode}}
paymentMethod: prepaid
subTotal: {{razorpayTrigger.payload.payment.entity.amount}}
→ WhatsApp — Send Message
to: {{razorpayTrigger.payload.payment.entity.contact}}
message: "Hi {{razorpayTrigger.payload.payment.entity.notes.customerName}},
your order is confirmed! 🎉
Tracking: {{shiprocket.awb_code}}"Refund Notification
Use case: Notify the customer and your team on Slack when a refund is processed.
textWorkflow
Razorpay Trigger (event: refund.processed)
→ Gmail — Send Email
to: {{razorpayTrigger.payload.payment.entity.email}}
subject: "Your refund of ₹{{razorpayTrigger.payload.payment.entity.amount}} is processed"
body: "Hi, your refund has been initiated and will reflect in 5-7 business days."
→ Slack — Send Message
channel: #refunds
text: "Refund processed for {{razorpayTrigger.payload.payment.entity.email}}
— ₹{{razorpayTrigger.payload.payment.entity.amount}} paise"Payment Failed Recovery
Use case: Send a payment recovery link when a payment fails so the customer can retry.
textWorkflow
Razorpay Trigger (event: payment.failed)
→ Razorpay — Create Payment Link
amount: {{razorpayTrigger.payload.payment.entity.amount}}
currency: INR
description: "Retry your payment"
→ WhatsApp — Send Message
to: {{razorpayTrigger.payload.payment.entity.contact}}
message: "Hi, your payment of ₹{{razorpayTrigger.payload.payment.entity.amount}} failed.
Retry here: {{razorpay.short_url}}"Common Issues & Solutions
| Issue | Cause | Solution |
|---|---|---|
| Webhook not firing | Events not checked in Razorpay Dashboard | Go to Razorpay → Settings → Webhooks and ensure the correct events are ticked |
| Signature verification failed | Webhook secret mismatch | Make sure the secret in Razorpay Dashboard exactly matches the one in Nodebase |
| Amount looks wrong (50000 instead of 500) | Amounts are in paise | Divide by 100 or use $.number.paiseToRupees() in a Code node |
| Trigger fires but workflow errors | Null reference on notes fields | Check that payment.entity.notes contains expected keys before using them |