A flow can ask for money and wait for it to arrive. One step does it — Collect payment — and the conversation holds until the payment settles, expires or is cancelled. This guide explains what the customer sees, where the money lands, and what to draw so that nothing is promised before it is paid.
Message flows run on WhatsApp in this release, and payments inside them use the mobile-money and card gateway the platform is connected to.
The one step for money: Collect payment
Set the amount in whole money — 12500, or {{vars.oda.total}} from an order — and the method:
| Method | The customer gets |
|---|---|
ussd_push |
a payment prompt on their phone (M-Pesa, Tigo Pesa, Airtel Money, HaloPesa) |
link |
a checkout page to open |
lipa |
a lipa number to pay from any app |
ask |
three buttons — they pick, and the flow charges the way they chose |
The step talks three times on its own: before the gateway is called ("Naandaa ombi la malipo… subiri kidogo" — it promises nothing, because there is no prompt yet), once the ask is out (where the prompt went, the lipa number, or the link), and if the ask could not be started (nothing was charged). Each line can be your own wording; set notify off only if the steps that follow say it themselves. A customer who types ghairi or cancel while the prompt is open cancels it.
The step leaves by paid, failed, expired (after expires_in_minutes, default three hours) or cancelled. Draw all four. A payment step that leads nowhere on failed is a customer left with a checkout open and nobody saying anything.
{{vars.payment}} holds payment_id, reference, state, amount, currency, and the checkout_url or payment_token when there is one. Use the reference in your confirmation message.
Pay before you confirm
When the payment is for a record — a booking, a seat, an order row in your Data tables — set hold_table_id and hold_record_id (usually {{vars.booking.$id}}). The record is held while the payment is open, and a booking whose payment never settled can be swept later instead of sitting confirmed and unpaid. See Organize business records with Data tables for the tables side.
Orders first, then payment
Create order turns what the conversation gathered into a real order. Lines that come from a variable (items_from) are priced from the catalogue — a line the catalogue does not know is dropped and named in {{vars.__order_error}}, and the price the customer typed is never charged. Lines you type on the step yourself are charged as written. Then Collect payment charges {{vars.order.total}}. The catalogue guide covers the products.
Refunds
Refund payment gives back some or all of a payment collected earlier. Every refund goes to a person for approval — the flow is software, and money leaving is a decision — and the conversation waits for the answer unless you draw pending_approval. The approver sees it in Approvals.
Where the money lands
Payments are collected by the gateway the platform is configured with, into the settlement account attached to your workspace; they appear in Payments with the flow, conversation and step that raised them, and the customer's wallet history shows the same reference. A workspace with its own approved gateway can be switched to collect directly — ask us. The reconciliation guide, Reconcile pending mobile-money payments, is what to read when a payment shows pending for longer than the prompt lived.
The older Take payment step (payment_request) is retired: flows that still carry it keep running, but the palette no longer offers it and publish warns. Move to Collect payment when you next edit.
What it costs, and what stops it
Flow messages are charged like any other WhatsApp message from your wallet. A flow cannot send when the wallet is empty — the conversation ends and the owners are told — so keep the balance in view in Billing. Payments in flows are not on every plan.
Try it safely
In the Studio a payment step always answers paid and marks the variable simulated; to test the failed and expired branches, use Make a step answer… and pick the exit. Nothing is charged in a simulation. Then run one real payment from a phone you control before you publish widely.
Where next
- Message flows — open your flow and check the four exits of every payment step.
- The reference for the money steps: Do.
- Collect and track customer payments for the Payments page itself.