How to Send WhatsApp Receipts After Every Stripe Payment
Every Stripe payment fires a webhook. Most businesses let that moment pass with nothing but an automated email that lands in a promotions tab and gets ignored. WhatsApp receipts are read within minute
Every Stripe payment fires a webhook. Most businesses let that moment pass with nothing but an automated email that lands in a promotions tab and gets ignored. WhatsApp receipts are read within minutes — and they cost almost nothing to implement if you already have n8n running.
This guide walks through the exact flow to send a WhatsApp message to your customer the moment Stripe confirms a payment, using n8n to connect the two systems without writing a backend service from scratch.
What You Need Before You Start
This automation requires three things to be in place:
- A Stripe account with webhook events enabled. You need access to the Developers panel to configure endpoints.
- A WhatsApp Business API provider. Twilio, Z-API, and 360dialog all work. You need an approved sender number and an API key.
- n8n running — either self-hosted on a VPS or via n8n Cloud. The workflow will live here and handle all the logic between Stripe and WhatsApp.
If you have those three, the actual build takes under 30 minutes.
How the Workflow Is Structured
The flow is linear and has no branching complexity for the base case:
- Webhook node — receives the
payment_intent.succeededevent from Stripe. This is your trigger. Stripe sends a POST request with the full payment object every time a charge succeeds. - Set node — extracts the fields you actually need: customer name, amount paid, currency, last four digits of the card, and the customer's phone number from the metadata or a connected customer object.
- HTTP Request node — calls your WhatsApp API with the formatted message. The body includes the recipient's phone number and the message text built from the extracted fields.
- Error handling branch — optional but recommended. If the HTTP request fails (invalid number, API rate limit), log the failure and trigger a fallback email instead of silently dropping the receipt.
The critical detail is phone number sourcing. Stripe does not store phone numbers by default. You need to either collect the number during checkout using a custom field, store it in Stripe customer metadata when the customer is created, or look it up from your own database using the customer ID from the Stripe event. Decide this before you build — it determines whether you need an additional Stripe API call inside the workflow or not.
Building the Stripe Webhook Trigger
In n8n, add a Webhook node and set the method to POST. Copy the generated URL. In your Stripe dashboard, go to Developers → Webhooks → Add endpoint, paste the URL, and select payment_intent.succeeded as the event to listen for.
Test it by triggering a test payment in Stripe. The webhook node in n8n will receive the payload and you can inspect the exact structure — the amount is in cents, the currency is lowercase, and the customer object is nested under data.object.customer.
One thing to get right: validate the Stripe signature. Stripe sends a Stripe-Signature header with every webhook request. Use the webhook secret from your Stripe dashboard to verify it before processing. This prevents malicious actors from sending fake payment confirmations to your endpoint. In n8n, you can do this in a Function node before any processing happens.
Formatting the Receipt Message
WhatsApp messages have a 4096 character limit and support basic formatting with asterisks for bold. Keep receipts short and scannable. A good receipt includes:
- A clear subject line in the first sentence — "Your payment was confirmed"
- The amount and currency in human-readable format (convert cents to dollars/euros in the Function node)
- An order or payment reference ID so customers can quote it in support requests
- The last four digits of the card used, which builds trust and helps customers reconcile their statements
- A single support contact or link — no upsells in a receipt
Avoid templates that look like spam. A message that reads "Hi Maria, your $49.00 payment for Order #PI-8821 was confirmed. Card ending in 4242. Questions? Reply here." outperforms any marketing-flavored receipt in both open engagement and support deflection.
Deploying and Monitoring
Once the workflow is active, test it end-to-end with a real Stripe test mode payment and a real phone number. Confirm the message arrives, check the formatting on both Android and iOS, and verify the timestamp on the WhatsApp side matches the Stripe event time.
Set up n8n execution logging so you can see every run, its status, and the data that passed through. If you're processing volume above a few hundred payments per day, check your WhatsApp API provider's rate limits and add a queue or throttle mechanism in n8n if needed.
For teams who want to skip the build entirely, ready-made n8n templates for Stripe-to-WhatsApp flows are available with the nodes pre-configured, the signature validation already in place, and the message formatting set up for immediate deployment.
The core pattern — webhook triggers a message — is simple enough to build once and maintain indefinitely. Once it's running, every payment your business processes gets an instant receipt that customers actually see.

Ja construimos isso pra voce
Nao comece do zero. O WhatsApp AI Chatbot + RAG e um workflow n8n pronto para instalar que faz exatamente isso — em minutos, nao horas.
Instalar por $59 →