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

  1. Add a Razorpay Trigger node to your workflow canvas
  2. Select the events you want to listen to (e.g. payment.captured)
  3. Click Save — Nodebase generates a unique webhook URL
  4. Copy the webhook URL from the node panel
  5. Go to dashboard.razorpay.com → Settings → Webhooks → Add New Webhook
  6. Paste the URL into the Webhook URL field
  7. (Recommended) Set a Secret and paste it into the node's Webhook Secret field — Nodebase will verify every incoming request using HMAC-SHA256
  8. Check the events you want Razorpay to send
  9. 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

CategoryEvents
Paymentpayment.captured · payment.failed · payment.authorized
Orderorder.paid
Refundrefund.created · refund.processed · refund.failed
Subscriptionsubscription.activated · subscription.charged · subscription.completed · subscription.cancelled · subscription.halted · subscription.paused · subscription.resumed
Invoiceinvoice.paid · invoice.partially_paid · invoice.expired
Disputedispute.created · dispute.won · dispute.lost · dispute.closed
Virtual Accountvirtual_account.credited
Settlementsettlement.processed
Payoutpayout.processed
Transfertransfer.processed
QR Codeqr_code.credited

Output Variables

After the trigger fires, the following variables are available to all downstream nodes:

VariableTypeDescriptionExample
{{razorpayTrigger.event}}stringEvent type"payment.captured"
{{razorpayTrigger.payload}}objectFull event payload from Razorpay{ payment: { entity: {...} } }
{{razorpayTrigger.payload.payment.entity.id}}stringPayment ID"pay_OFj67X3s9kH5rA"
{{razorpayTrigger.payload.payment.entity.amount}}numberAmount in paise50000
{{razorpayTrigger.payload.payment.entity.currency}}stringCurrency code"INR"
{{razorpayTrigger.payload.payment.entity.status}}stringPayment status"captured"
{{razorpayTrigger.payload.payment.entity.email}}stringCustomer email"rahul@example.com"
{{razorpayTrigger.payload.payment.entity.contact}}stringCustomer phone (with country code)"919876543210"
{{razorpayTrigger.payload.payment.entity.notes}}objectCustom notes attached to payment{ orderId: "SHP-001" }
{{razorpayTrigger.accountId}}stringYour Razorpay account ID"acc_OFj67X3s9kH5rA"
{{razorpayTrigger.receivedAt}}stringISO 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

IssueCauseSolution
Webhook not firingEvents not checked in Razorpay DashboardGo to Razorpay → Settings → Webhooks and ensure the correct events are ticked
Signature verification failedWebhook secret mismatchMake sure the secret in Razorpay Dashboard exactly matches the one in Nodebase
Amount looks wrong (50000 instead of 500)Amounts are in paiseDivide by 100 or use $.number.paiseToRupees() in a Code node
Trigger fires but workflow errorsNull reference on notes fieldsCheck that payment.entity.notes contains expected keys before using them
  • Razorpay — create payment links, fetch orders, initiate refunds
  • Shiprocket — create shipment immediately after payment
  • WhatsApp — send order confirmation to customer
  • MSG91 — send SMS confirmation
  • Slack — alert your team on new payments
  • If / Else — branch on payment status or amount threshold