StoreTalk lets you collect payments inside any chatbot flow. When a customer reaches a payment step, they receive a Pay now button that opens a secure Razorpay checkout. Once they pay, the flow continues automatically.Documentation Index
Fetch the complete documentation index at: https://help.storetalk.app/llms.txt
Use this file to discover all available pages before exploring further.
How it works
Setting up Razorpay
Before you can use payment nodes in your flows, connect your Razorpay account.Enter your Razorpay credentials
You need three values from your Razorpay Dashboard:
- Key ID — starts with
rzp_live_... - Key Secret — shown once when you generate a new key pair
- Webhook Secret — created when you set up the webhook endpoint
Set up the webhook in Razorpay
Copy the Webhook URL shown on the settings page and add it in your Razorpay Dashboard under Settings → Webhooks → Add New Webhook.Enable these two events:
payment_link.paidpayment_link.expired
Test the connection
Click Test Connection to verify your credentials are valid. A green checkmark means you are ready to go.
Adding a payment node to a flow
Configure the node
Fill in the required fields:
| Field | Required | Description |
|---|---|---|
| Amount | Yes | Payment amount in rupees. Supports placeholders. |
| Description | Yes | Shown on the Razorpay checkout page. Supports placeholders. Max 255 characters. |
| Button label | No | Text on the WhatsApp button. Default: “Pay now”. Max 20 characters. |
| Expiry (minutes) | No | How long the link stays active. Default: 30 minutes. |
| Success message | No | Text sent to the customer after a successful payment. |
| Failure message | No | Text sent to the customer if the link expires without payment. |
Available placeholders
Use placeholders in any flow node to insert dynamic values. Wrap them in double curly braces.Customer and store info
| Placeholder | Value |
|---|---|
{{customer.name}} | Customer’s WhatsApp profile name |
{{tenant.name}} | Your store / business name |
Payment info (available after payment)
These are automatically filled after the customer completes (or fails) a payment. Use them in nodes that come after the payment node.| Placeholder | Value | Example |
|---|---|---|
{{payment.amount}} | Amount paid in rupees | 499.00 |
{{payment.payment_id}} | Razorpay payment ID | pay_Q1a2b3c4d5 |
{{payment.date}} | Payment date (IST) | 3 Apr 2026 |
{{payment.status}} | Payment outcome | paid or expired |
{{payment.link_id}} | Razorpay payment link ID | plink_X9y8z7 |
Using placeholders in the payment node
The Amount and Description fields support placeholders too. This is useful when the payment amount comes from an earlier step in the flow. Example: If a previous form node captures the order total in a variable calledform.total, set the amount to:
Example flow
Here is a simple order-and-pay flow:Payment activity log
Track every payment event in Settings → Payments → Activity. The activity log shows:- When a payment webhook was received
- Whether it matched an active flow session
- The amount, payment link ID, and outcome
- Any errors (e.g. signature verification failures)
Troubleshooting
| Problem | Solution |
|---|---|
| Payment node says “payments not enabled” | Go to Settings → Payments and toggle payments on |
| Customer never receives the Pay button | Check that your Razorpay credentials are correct — use Test Connection |
| Payment succeeds but flow does not continue | Verify the webhook URL is correctly set in your Razorpay Dashboard and both events (payment_link.paid, payment_link.expired) are enabled |
| Signature verification failed in activity log | Re-copy the Webhook Secret from Razorpay and update it in StoreTalk settings |
| Amount shows as 0 or errors | Make sure the Amount field resolves to a positive number — check your placeholder variable is set in a previous node |
Plans and usage limits
See what’s included in each StoreTalk plan.
Build a chatbot flow
Learn how to create your first WhatsApp chatbot flow.