Skip to main content

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.

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.

How it works

Customer reaches payment node

StoreTalk creates a Razorpay payment link

Customer receives a WhatsApp message with a Pay button

Customer taps the button → pays on Razorpay

Razorpay notifies StoreTalk via webhook

Flow resumes → success or failure path

Setting up Razorpay

Before you can use payment nodes in your flows, connect your Razorpay account.
1

Go to Settings → Payments

Open Settings in the left sidebar, then click the Payments tab.
2

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
3

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.paid
  • payment_link.expired
4

Test the connection

Click Test Connection to verify your credentials are valid. A green checkmark means you are ready to go.
5

Enable payments

Toggle Enable payment collection on and click Save.
If your Key ID starts with rzp_test_, you are in Razorpay test mode. Test payments will work for testing your flow, but real customers cannot pay. Switch to live keys before going live.

Adding a payment node to a flow

1

Open the Flow Builder

Go to Flows in the sidebar and open the flow you want to edit.
2

Add a Payment Link node

Drag a Payment Link node onto the canvas from the node palette.
3

Configure the node

Fill in the required fields:
FieldRequiredDescription
AmountYesPayment amount in rupees. Supports placeholders.
DescriptionYesShown on the Razorpay checkout page. Supports placeholders. Max 255 characters.
Button labelNoText on the WhatsApp button. Default: “Pay now”. Max 20 characters.
Expiry (minutes)NoHow long the link stays active. Default: 30 minutes.
Success messageNoText sent to the customer after a successful payment.
Failure messageNoText sent to the customer if the link expires without payment.
4

Connect the success and failure paths

The payment node has two output handles:
  • Success — flow continues here after the customer pays
  • Failure — flow continues here if the payment link expires
Connect each handle to the next node in your flow.

Available placeholders

Use placeholders in any flow node to insert dynamic values. Wrap them in double curly braces.

Customer and store info

PlaceholderValue
{{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.
PlaceholderValueExample
{{payment.amount}}Amount paid in rupees499.00
{{payment.payment_id}}Razorpay payment IDpay_Q1a2b3c4d5
{{payment.date}}Payment date (IST)3 Apr 2026
{{payment.status}}Payment outcomepaid or expired
{{payment.link_id}}Razorpay payment link IDplink_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 called form.total, set the amount to:
{{form.total}}
And the description to:
Payment for order from {{tenant.name}}

Example flow

Here is a simple order-and-pay flow:
Ask Question: "What would you like to order?"

Send Message: "Great! Your total is ₹{{form.total}}"

Payment Link:
  Amount = {{form.total}}
  Description = "Order payment — {{tenant.name}}"
        ↓ success                    ↓ failure
Send Message:                   Send Message:
"Thank you, {{customer.name}}!  "Your payment link expired.
 Payment of ₹{{payment.amount}} Type 'pay' to try again."
 received ({{payment.payment_id}})"

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)
If a customer pays after the flow session has already ended (e.g. they came back later), StoreTalk still sends them the success message so they know their payment went through.

Troubleshooting

ProblemSolution
Payment node says “payments not enabled”Go to Settings → Payments and toggle payments on
Customer never receives the Pay buttonCheck that your Razorpay credentials are correct — use Test Connection
Payment succeeds but flow does not continueVerify 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 logRe-copy the Webhook Secret from Razorpay and update it in StoreTalk settings
Amount shows as 0 or errorsMake 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.