Razorpay Payments
Accept payments securely via WhatsApp using Razorpay integration. Generate payment links, manage subscriptions, and track payment lifecycle.
Overview
WACM integrates with Razorpay to enable seamless payment collection within WhatsApp conversations. Customers receive payment links, complete transactions, and get instant confirmation—all without leaving the chat.
Payment Links
Generate and send payment links via WhatsApp
Subscriptions
Manage recurring payments and billing
Flow Automation
30+ payment variables for AI Flow Builder
Setup Steps
Create Razorpay Account
Sign up at razorpay.com and complete KYC verification.
Get API Keys
Navigate to Settings → API Keys in Razorpay dashboard to generate your Key ID and Key Secret.
Configure in WACM
Enter your Razorpay credentials in WACM dashboard under Settings → Payments.
{
"razorpay_key_id": "rzp_live_xxxxxxxx",
"razorpay_key_secret": "your_secret_key"
}Configure Webhook
Set up Razorpay webhook to receive payment notifications:
https://api.wacm.in/api/wpbox/razorpay-webhookPayment Lifecycle
Flow Variables
Use these payment variables in your AI Flow Builder for advanced automation. Variables are available when using commerce_payment_received, commerce_payment_failed, and other commerce trigger nodes.
Payment Received Variables
Payment Received (commerce_payment_received)
| Parameter | Type | Required | Description |
|---|---|---|---|
| payment_id | string | Optional | Internal payment record ID |
| payment_provider | string | Optional | Payment provider (e.g., "razorpay", "stripe") |
| payment_provider_id | string | Optional | Provider-assigned payment ID |
| payment_order_id | string | Optional | Provider order reference ID |
| payment_amount | number | Optional | Amount in smallest currency unit (paise/cents) |
| payment_amount_formatted | string | Optional | Formatted amount (e.g., "500.00") |
| payment_currency | string | Optional | Currency code (e.g., "INR") |
| payment_currency_symbol | string | Optional | Currency symbol (e.g., "₹") |
| payment_status | string | Optional | Payment status (e.g., "captured") |
| payment_method | string | Optional | Payment method (upi, card, netbanking) |
| payment_captured | string | Optional | Whether captured ("Yes" / "No") |
| payment_customer_email | string | Optional | Customer email |
| payment_customer_phone | string | Optional | Customer phone |
| payment_fee | number | Optional | Processing fee (paise/cents) |
| payment_tax | number | Optional | Tax amount (paise/cents) |
| payment_amount_refunded | number | Optional | Amount refunded |
| payment_vpa | string | Optional | VPA (for UPI payments) |
| payment_bank | string | Optional | Bank name |
| payment_wallet | string | Optional | Wallet used |
| payment_rrn | string | Optional | Retrieval Reference Number |
| payment_date | string | Optional | Payment date (formatted) |
| payment_timestamp | string | Optional | Payment timestamp (unix epoch) |
| payment_description | string | Optional | Payment description |
| payment_international | string | Optional | Whether international ("Yes" / "No") |
Payment Failed Variables
Payment Failed (commerce_payment_failed)
| Parameter | Type | Required | Description |
|---|---|---|---|
| payment_id | string | Optional | Internal payment record ID |
| payment_provider | string | Optional | Payment provider |
| payment_amount | number | Optional | Amount in smallest currency unit |
| payment_amount_formatted | string | Optional | Formatted amount |
| payment_status | string | Optional | Payment status |
| payment_error_code | string | Optional | Error code from provider |
| payment_error_description | string | Optional | Error description |
| payment_error_reason | string | Optional | Error reason |
| payment_error_source | string | Optional | Error source |
| payment_error_step | string | Optional | Error step |
| payment_date | string | Optional | Payment date |
Subscription Variables
Subscription Events (activated/expired/renewed/cancelled)
| Parameter | Type | Required | Description |
|---|---|---|---|
| subscription_id | string | Optional | Internal subscription ID |
| subscription_provider | string | Optional | Provider name (e.g., "razorpay") |
| provider_subscription_id | string | Optional | Provider subscription ID |
| plan_id | string | Optional | Plan ID |
| provider_customer_id | string | Optional | Provider customer ID |
| status | string | Optional | Status (active/expired/cancelled) |
| quantity | number | Optional | Subscription quantity |
| total_count | number | Optional | Total billing cycles |
| paid_count | number | Optional | Paid billing cycles |
| customer_notify | string | Optional | Customer notify ("Yes"/"No") |
| charge_at | string | Optional | Next charge date |
| start_at | string | Optional | Start date |
| end_at | string | Optional | End date |
| expire_by | string | Optional | Expiry date |
Refund Variables
Refund Processed (commerce_refund_processed)
| Parameter | Type | Required | Description |
|---|---|---|---|
| refund_id | string | Optional | Internal refund ID |
| refund_provider | string | Optional | Provider name |
| provider_refund_id | string | Optional | Provider refund ID |
| provider_payment_id | string | Optional | Original payment ID |
| refund_amount | number | Optional | Refund amount (paise/cents) |
| refund_amount_formatted | string | Optional | Formatted refund amount |
| refund_currency | string | Optional | Currency code |
| refund_status | string | Optional | Refund status |
| speed_processed | string | Optional | Processing speed |
| speed_requested | string | Optional | Requested speed |
Payment Link Variables
Send Payment Link (commerce_send_payment_link)
| Parameter | Type | Required | Description |
|---|---|---|---|
| {{commerce_payment_url}} | string | Optional | Generated payment link URL |
| {{commerce_payment_id}} | string | Optional | Payment link ID |
| {{commerce_payment_provider}} | string | Optional | Gateway provider used |
Order Variables
Order Events (order_created / order_status_updated)
| Parameter | Type | Required | Description |
|---|---|---|---|
| order_order_id | string | Optional | Order ID |
| order_order_number | string | Optional | Order number |
| order_total_amount | number | Optional | Total amount |
| order_currency | string | Optional | Currency code |
| order_status | string | Optional | Order status |
| order_customer_name | string | Optional | Customer name |
| order_customer_phone | string | Optional | Customer phone |
| order_customer_email | string | Optional | Customer email |
| order_items_text | string | Optional | Items list (text) |
| order_payment_method | string | Optional | Payment method |
| order_payment_status | string | Optional | Payment status |
| order_tracking_number | string | Optional | Tracking number |
| order_tracking_url | string | Optional | Tracking URL |
| order_data | JSON | Optional | Full order data |
Subscription Management
WACM supports Razorpay subscriptions for recurring billing. Create subscription plans and manage the full subscription lifecycle through WhatsApp.
{
"plan_id": "plan_xxxxxxxx",
"customer_notify": 1,
"quantity": 1,
"total_count": 12,
"start_at": 1704067200,
"expire_by": 1735689600,
"notes": {
"customer_id": "123",
"wacm_company_id": "456"
}
}Subscription Events
Monitor subscription.created, subscription.charged, and subscription.cancelled events via webhooks for real-time updates.
Security
Webhook Signature Verification
All Razorpay webhooks are verified using the webhook secret to ensure authenticity.
PCI DSS Compliance
Razorpay is PCI DSS Level 1 certified. No sensitive payment data is stored on WACM servers.
Shop API Reference
Explore the full eCommerce and payment API documentation.