Why does conversational checkout fail for most Indian SMBs?
Everyone believes selling on WhatsApp requires an army of support reps. Here’s why that’s wrong. Adding more humans to handle chats actually breaks your checkout funnel.
Indian SMBs process a huge share of orders through WhatsApp chats. The standard workflow relies on manual busywork. An agent calculates order amounts, manually creates a payment link in a dashboard, pastes it into chat, and refreshes banking screens to verify settlement.
This manual loop kills conversion rates. It causes billing errors, and it frustrates customers who wait around for receipts. If you built custom automation using our guide on WhatsApp Business Cloud API Setup for Indian SMBs: The 2026 Production Blueprint, manual link generation ruins your conversational flow.
Connecting chat flows directly to the gateway fixes this. When you orchestrate Razorpay and webhooks inside n8n, you generate dynamic UPI links instantly. You monitor live transaction events, and you update your backend without human bottlenecks.
Is this starting to feel like a lot?
Let us handle the busy work. LoomVector builds and ships this exact kind of system for Indian SMBs, end to end.
Step-by-Step Implementation
Step 1: Ingest the WhatsApp Order Payload in n8n
- Add a
Webhooknode inn8nto catch inbound messages from the WhatsApp Cloud API. - Configure the webhook to parse the buyer’s phone number (
from), requested SKU, and quantity. - Use a
Setnode or database lookup node to pull pricing and calculate the total. Multiply the final balance by 100 to convert the price into paise.
Step 2: Generate the Razorpay UPI Payment Link
Generate dynamic links that launch UPI apps directly on mobile devices:
- Add an
HTTP Requestnode using your Razorpay Key ID and Key Secret via Basic Auth. - Set the method to
POSTtargetinghttps://api.razorpay.com/v1/payment_links. - In the JSON body, pass:
amount: Total price in paise (Rs 499 becomes49900).currency:"INR".accept_partial:false.reference_id: Your unique internal order identifier.description: Order payment details.customer: Object containingname,contact, andemail.upi_link:trueto enable deep-linking into UPI apps.
- Extract the
short_urlfrom the Razorpay response object.
According to Create a UPI Payment Link – Razorpay, the Payment Links API accepts amount, currency, reference_id, customer contact details, and upi_link: true together to generate a UPI-specific deep link exactly like the one this step builds.
Step 3: Dispatch the Payment Link via WhatsApp
- Add an
HTTP Requestnode targeting the WhatsApp Cloud API messages endpoint. - If the user messaged within 24 hours, send a session message with an interactive CTA button or text link pointing to
short_url. - For interactive buttons, set the button type to
urlwith the target set to your payment link. - Update your database or order sheet to mark the status as
payment_pending.
According to Service messages | Meta for Developers – Facebook, the WhatsApp Cloud API allows free-form session messages during this 24-hour customer service window without needing a pre-approved template.
Step 4: Configure the Razorpay Reconciliation Webhook
- Create a second workflow in
n8nwith a dedicatedWebhooknode. Set the method toPOSTand enable Raw Body. - Copy the production webhook URL from
n8n. Paste it into your Razorpay Dashboard under Settings > Webhooks. - Select the
payment.capturedevent and save a strong Webhook Secret.
According to Receive WhatsApp Payments via Payment Links | Client Documentation – 360Dialog Docs, reliable WhatsApp payment link checkouts depend on passing the same reference ID through the chat flow, the payment gateway link, and the settlement reconciliation step, exactly the pattern Steps 4 and 5 implement here.
Step 5: Verify Webhook Signatures and Handle Reconciliation
- Verify transaction security inside
n8nusing the raw payload and your secret:- Compute the HMAC SHA-256 hash of the raw body using your Razorpay Webhook Secret.
- Add an
Ifnode to compare this hash with the incomingx-razorpay-signatureheader. If they don’t match, halt execution with an HTTP 400 response.
- Check your database using
reference_idor payment ID. Confirm it isn’t already completed so you avoid duplicate actions when Razorpay retries webhooks. - Update the order status to
paidand save the payment ID. - Send an order confirmation template or session message back to the customer on WhatsApp with receipt details.
- Return an immediate HTTP 200 response to Razorpay to confirm receipt.
Need assistance setting up reliable conversational commerce workflows, secure webhooks, and backend accounting integrations for your business? LoomVector helps teams design, deploy, and maintain custom n8n and API orchestration systems tailored to Indian business operations.