Features Add-ons Pricing Cost calculator Use cases Compare Blog

Ask for the money where the conversation is

Taking Payment Inside a WhatsApp Chat With Razorpay

Last checked · 4 min read

The short answer

You create a Razorpay payment link for one customer, WabaCRM sends it as an ordinary message into the thread they are already in, and the link is marked paid only when Razorpay's signed webhook says the money cleared. The keys are your own workspace's, so the money settles into your Razorpay account and never passes through WabaCRM. Nothing a browser reaches can mark a link paid — not the agent's screen, and not the customer returning from Razorpay's page. Checked 25 October 2026.

A demo workspace's WhatsApp inbox with a customer thread about stock and delivery open, the twenty-four-hour reply window counting down above the composer, and Send beside the message box.

Asking a customer for money usually means leaving the conversation. You copy an amount into a payment page, send a link from somewhere else, and then watch two systems that do not know about each other — the thread where the customer is talking to you, and the dashboard where the money either arrives or does not.

The payment-links add-on closes that gap for Razorpay. You raise a link for one customer from inside their chat, it goes into the thread as an ordinary message, and the link is marked paid when Razorpay says the money cleared.

The money is yours, and so are the keys

The add-on reads Razorpay credentials saved against your workspace, not the ones WabaCRM uses to bill you for WabaCRM. That separation is the whole design: a platform key used here would collect your customer's payment into the platform's account.

So the sequence is ordinary and the money never changes hands twice:

  • You save your Razorpay key id, key secret and webhook secret in the add-on's settings. The secret is stored encrypted and is never read back into the form, so somebody with access to the screen cannot lift it.
  • A link you create is created against your Razorpay account.
  • The customer pays Razorpay.
  • Razorpay settles to your bank on your own Razorpay schedule.

WabaCRM holds no money at any point and takes nothing from the payment.

Only a signed webhook marks a link paid

A customer who completes a payment is sent back to a page. That return proves only that a browser was redirected, and anybody can make a browser request a URL — so it is not evidence, and nothing in this add-on treats it as evidence.

Payment links are settled by one path and no other: a webhook from Razorpay whose signature verifies against your workspace's own webhook secret.

Three things about that endpoint are worth knowing, because each is a decision rather than an accident:

  • The workspace is named in the URL, never in the body. Each workspace registers its own endpoint in its own Razorpay dashboard, and the signature is checked with that workspace's secret. Reading the workspace out of the body instead would let anyone who can post JSON choose whose links to settle, before any secret was involved.
  • The link is looked up inside that workspace only. A Razorpay link id is unique within one Razorpay account, not across all of them, so an unscoped lookup would be a cross-account write waiting for a collision.
  • The amount and the currency must agree with the link. A body that verifies but reports a different amount is not that link's payment. It is logged and refused rather than recorded, because telling a business that a customer paid ₹5,000 when they paid ₹50 is worse than telling them nothing.

A duplicate delivery changes nothing. Razorpay retries anything it did not get a success for, and settlement is a single conditional write, so the second arrival finds the work already done rather than re-stamping the time or overwriting the payment id that actually cleared.

Meta's window still applies

This add-on does not change what WhatsApp lets you send. Outside the 24-hour customer service window you may send only an approved template, and a payment link pasted as plain text will be refused by Meta like any other free-form message.

In practice that means asking for payment while the conversation is live. If the window has closed, re-open it with an approved template and send the link once the customer has replied.

What it will not do

Being straightforward about the edges is cheaper than a support ticket:

  • It raises links in INR. Multi-currency collection is not built.
  • It is one customer at a time. This is a link for a conversation, not a bulk invoicing run.
  • It does not reconcile your Razorpay account. It records the payments for the links it created; everything else in your Razorpay dashboard is yours to reconcile as before.
  • It is not WabaCRM's own billing. Your subscription to WabaCRM is separate and is unaffected by any of this.

Frequently asked

Does the money go to WabaCRM first?

No. The Razorpay keys the add-on uses are your own workspace's, saved in its settings, and the link is created directly against your Razorpay account. The payment settles into your account on Razorpay's own schedule, exactly as any other Razorpay payment link you create does. WabaCRM holds no money at any point and takes no cut of it. This is deliberately a different set of keys from the ones the platform uses to bill you for WabaCRM itself: using those here would collect your customer's payment into the wrong account.

What actually marks a link paid?

One thing: a webhook from Razorpay carrying a valid signature for your workspace's own webhook secret. The agent's screen cannot set it, and neither can the customer arriving back from Razorpay's hosted page — a return redirect proves only that a browser was sent somewhere, which anybody can reproduce. The webhook also has to agree with the link about the amount and the currency before anything is recorded; a settlement that disagrees is logged rather than written, because a false record of money is worse than no record.

Can I send a payment link to someone who has not messaged me in 24 hours?

Not as an ordinary message. Meta's rule is unchanged by this add-on: outside the 24-hour customer service window you may only send an approved template, and a payment link sent as plain text will be refused. Ask for payment while the conversation is live, or re-open it with an approved template first and send the link once the customer replies.

Which currencies and amounts does it accept?

Links are raised in INR. The amount must be at least ₹1, which is Razorpay's own floor for INR, and is capped well below Razorpay's ceiling as a guard against a typed extra zero rather than as a platform limit. A link stays payable for seven days and is then closed; Razorpay would otherwise keep an unexpired link live for six months, which is far longer than a conversation.

What happens if Razorpay refuses to create the link?

Nothing is recorded and nothing is sent. The row is written only after Razorpay has answered with both a link id and a URL, because a row with no URL is a promise that cannot be kept and the webhook would have nothing to match against later. The refusal Razorpay gives is shown to the agent so they can act on it, and the keys are never written to the log.

Related guides

Take payment in the chat

Free for your first 1,000 contacts, with no time limit and no card. Setting up the workspace takes minutes; connecting a number takes as long as Meta's own review of it.

Sign up with your company email address. No sales call, no onboarding fee, nothing to schedule.

Why this is safe to point your customer list at

Payments are processed by Razorpay on their own checkout — your card details are never entered on, or stored by, WabaCRM. Every inbound WhatsApp webhook is checked against its signature before it is trusted.

Tech Provider is a Meta platform access tier — not a partnership, a reseller agreement or an endorsement.