Payment Node: Collect a Payment Inside a Flow
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.
Step 1 — Connect a payment gateway
Section titled “Step 1 — Connect a payment gateway”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 2 — Enter your API keys
Section titled “Step 2 — Enter your API keys”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.
Razorpay — from your Razorpay dashboard, under Settings → API keys. Two fields: Key ID and Key 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.
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.
Step 3 — Set the amount
Section titled “Step 3 — Set the amount”| 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.
Step 4 — Send the link
Section titled “Step 4 — Send the link”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.
Pick Payment link and it drops in as a chip. That message is what the contact actually receives — the tappable link that opens checkout.
Three fields come out of the node, all available the same way:
payment_link— the checkout linkdate_of_payment— the date it was paiddate_time_of_payment— the date and time
Example flow
Section titled “Example flow”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.