Guides/Messages & templates
Customers pay by manual transfer, the amount never matches the unique code, proof photos are scattered across chats — finance cannot tell which invoice.
Payment Confirmation: a customer who writes "sudah bayar" gets a WhatsApp form (invoice, amount, date, bank, sender), then is asked for a proof photo. Answers and photo land in the inbox as a note labelled "pembayaran" and the team replies from there; your billing system gets a webhook and API.
4 min read
Manual transfers are still common, and the amount often does not match the unique code. Finance needs exactly two things: the proof of transfer and which invoice. This feature makes both arrive tidily through WhatsApp, with no back-and-forth from staff.
The customer's flow
- The customer writes anything containing a keyword such as sudah bayar, sudah transfer, bukti transfer — or picks "Payment confirmation" in the interactive menu. The AI Operator stays silent.
- A WhatsApp form opens: invoice number, amount transferred, transfer date, destination bank (dropdown, your accounts), account holder name.
- After submitting, WACO thanks them and asks for a photo of the transfer proof in the chat. The next photo from that number within 30 minutes is attached automatically. If a customer sends the photo first with a caption that mentions payment (e.g. "transfer proof") or has just typed a keyword, WACO keeps it and sends the form to complete the data. A photo without a caption is not treated as proof, so other screenshots (errors, tickets, products) never trigger the payment form.
- Your team replies from the conversation as usual. If your billing system decides through the API, the customer is told automatically: valid, rejected (with a reason), or more data needed.
The team's flow
- Everything happens in the conversation: when the form is sent, WACO leaves a
private note "🤖 WACO mengirim formulir konfirmasi pembayaran…", then the answers and proof photo
follow as private notes, and the conversation gets the
pembayaranlabel (created automatically). Filter the inbox by that label = the list of payments to match. There is no separate queue in the portal; the history can be downloaded as CSV from the settings page. - Customer did not use a keyword — wrote in English, say, so the bot did not catch it? Staff
simply type
/bayarin a private note on that conversation; WACO sends the confirmation form to that customer's number. Requires the Assistant to be installed in the inbox (the command rides the same bot path as/harga). - Website live chat is covered too: in the widget (Channels → Live chat) the same
keywords open a form inside the chat window — invoice, amount, date, destination bank, sender —
the proof is sent as an attachment, the notes and label land in that web conversation, and API
decisions are announced back in the same conversation. Requirement: the website inbox is ticked
under the Assistant's channels. The
/bayarprivate-note command works there as well. - For your billing system: the webhook
pembayaran.konfirmasifires when a confirmation arrives, when the photo arrives, and when the status changes — with all fields plus a proof download link. Or pull withGET /api/v1/pembayaranand decide withPOST /api/v1/pembayaran/{id}/status; WACO still notifies the customer. Details in the API documentation.
Setting it up
- Open Forms → Payment confirmation (built-in form).
- Review the bank list, trigger keywords, intro message, and the reply text for each decision.
Variables:
{nama},{invoice},{nominal},{catatan}. - Press Save & publish to Meta, then try it from the Send a test card.
- Print on your invoices: "Paid by transfer? Confirm on WhatsApp at …, type: sudah bayar."
- Optional: add a "Payment confirmation" option to the interactive menu with the action "Send the payment confirmation form".
Like every WhatsApp form, Meta only allows it for businesses whose business verification is complete. The settings page tells you if it is not.
Decision notices are sent as normal messages, so they are most reliable within 24 hours of the customer's chat. Beyond that the decision is still stored; notify via a template if needed.
← PreviousYou want to know conversations per day, the fastest agent, which answers get repeated, and how to route chats to teams automatically.
Next →People type the registration form however they like — the name line goes missing, dates come in odd formats. Is there a real form inside WhatsApp?
Still stuck after following this guide? Contact us from the
dashboard — attach a screenshot if you have one, it speeds everything up.