Skip to content

Payment Node: Collect a Payment Inside a Flow

Updated

The Payment node — Collect payment on the canvas — takes money inside the conversation, so a flow can go from interest to paid without sending the contact off to a checkout page you built somewhere else.

Add the node → connect a payment gateway → set the amount and what it’s for → send the link → wire up the success and failure paths.

The panel is a short wizard. The first time, it’s four steps — you’re connecting a gateway before you can charge anything. Once an account is connected it drops to two, because the connect steps are behind you.

A new node shows Connect payment gateway instead of an amount. Click it and pick your provider:

Provider Takes Notes
Stripe Cards, wallets · 135+ currencies Best for international customers
Razorpay UPI, cards, netbanking Best for customers paying in India
Step 1: pick the provider. Nothing is charged until a customer completes a payment.

Whichever provider you picked, LinktoDM needs keys from that account to create links on your behalf.

Stripe — from your Stripe dashboard, under Developers → API keys. One field: the secret key.

Stripe wants a Standard secret key — one that starts with sk_

Razorpay — from your Razorpay dashboard, under Settings → API keys. Two fields: Key ID and Key secret.

Razorpay needs both halves: the Key ID and its secret

Click Connect and the account is saved to your workspace. Every later Payment node picks it from a list instead of asking for keys again.

Connected accounts, with the account ID under each name — a Test badge means test keys

A Test badge on a row means that account is on test keys. Real cards won’t be charged, which is what you want while you’re building the flow — and what you must remember to swap before publishing it.

Payment details: what to charge, what it's for, and which field holds the link
Field What it does
Amount The charge, plus the currency it’s in. The panel reads back the currency and its decimal places — Indian Rupee · 2 decimal places
What they’re paying for The line item the customer sees at checkout, and the label on the node afterwards
Description Optional detail under it
Save payment link The user field the generated link is written to. + Create new field makes one without leaving the panel

The panel tells you the variable it just created: later nodes can send the link as {{user.payment_link}}.

Save, and the node on the canvas shows the charge it will create — Razorpay · ₹10.00 · webservices — so you can read a flow’s pricing without opening it.

The node now has three handles down its right edge:

Handle Fires when
Then The link has been created — immediately, before anyone pays
Payment successful The customer completes the payment
Payment failed The payment doesn’t go through

Then is the one that matters here. Wire it to a Send message node, and in the message body type {{ — the user field picker opens with the payment fields in it.

Typing {{ in a message offers the fields the Payment node fills in

Pick Payment link and it drops in as a chip. That message is what the contact actually receives — the tappable link that opens checkout.

The finished shape: link on Then, confirmation on Payment successful, recovery on Payment failed

Three fields come out of the node, all available the same way:

  • payment_link — the checkout link
  • date_of_payment — the date it was paid
  • date_time_of_payment — the date and time
Trigger: message contains "pay"
Send message: "Here's the link 👇"
Collect payment: ₹10.00 · webservices
├── Then → Send message: {{payment_link}}
├── Payment successful → Send message: "Payment received — here's your access"
└── Payment failed → Send message: "That didn't go through. Try again?"

Leave Payment successful or Payment failed unwired and the flow just stops for whoever lands there — a paying customer hearing nothing back is the worst version of a dead end.