OXXO payment reminders on WhatsApp
Customers create their OXXO voucher and forget to pay. ChatSales reminds them on WhatsApp before it expires, and skips anyone Stripe already shows as paid.
Hi Ana, your order #1042 for MX$899.00 has a pending OXXO payment voucher.
Reference: 9300 0001 2345 6789 0123 4567 8901 2345
Deadline: October 10, 23:59
You can pay it at any OXXO store with this reference. If you already paid, please ignore this message.
Sample data. Shown in English: your customers receive it in Mexican Spanish.
How it works
- Your customer picks OXXO in your Stripe checkout and gets a voucher with a reference.
- ChatSales sees the voucher in your Stripe and schedules the reminder.
- Before it expires (24 hours before by default; you choose how many), it sends the WhatsApp from your number. Right before, it checks with Stripe that it's still unpaid.
- If Stripe already shows it paid, nothing is sent. Optional: send the reference as soon as the voucher is created.
Use cases
This is the message your customers get, in three kinds of business. Sample data; customers receive the Mexican-Spanish template.



Set up in 3 steps
- Connect your Stripe with a restricted key. The guide walks you through it click by click.
- Choose your WhatsApp number: ChatSales creates the reminder template and submits it to Meta for you.
- Turn on the reminder and choose how many hours before the voucher expires it goes out.
The message your customer gets
ChatSales creates this utility template in Mexican Spanish. For different wording, pick another message flow or create a new one; Meta must approve it too.
Hola {{nombre}}, tu pedido {{pedido}} por {{monto}} tiene una ficha de pago OXXO pendiente.
Referencia: {{referencia}}
Fecha límite: {{vence}}
Puedes pagarla en cualquier tienda OXXO con esta referencia. Si ya pagaste, ignora este mensaje.Your Stripe, with minimum permissions
- The restricted key needs 3 permissions: Payment Intents (read), Customers (read) and Webhook Endpoints (write). Recommended: Payment Methods (read), where Stripe often keeps the phone the customer types at checkout.
- ChatSales reads your OXXO vouchers and the customer's phone, and registers a webhook to hear when they're paid. It can't charge or move money.
- Keys are stored encrypted.
See what happened to every voucher
Recent vouchers shows each one with its status:
- Scheduled
- Reminded
- Paid
- Expired
- Not sent (with the reason)
What you need
- OXXO payments through your own Stripe account, for example the Stripe app on Shopify or your Stripe checkout. It doesn't work with Shopify Payments.
- A WhatsApp API number connected in ChatSales.
- Meta's approval of the template. While it's in review, no reminders go out.
Frequently asked questions
Does OXXO integrate with WhatsApp?
Yes. With ChatSales: Reminds customers on WhatsApp to pay their OXXO voucher before it expires. You turn it on from the ChatSales App Store in 3 steps, with your WhatsApp API number.
Does it work with Shopify?
Yes, if you take OXXO payments with the Stripe app on Shopify (your own Stripe account). Not with Shopify Payments.
What permissions does ChatSales get in Stripe?
Read access to Payment Intents and Customers, and write access to Webhook Endpoints; we also recommend read access to Payment Methods so it can find the customer's phone. It can't charge or move money.
What if the customer already paid?
Before sending, ChatSales checks with Stripe; if it's paid, nothing is sent. Because Stripe can take until the next business day to confirm an OXXO payment, the message says "if you already paid, ignore this message".
Can I change the message?
Yes: pick another message flow or create a new one. Meta must approve it too.
Do I need the WhatsApp API?
Yes, a WhatsApp API number connected in ChatSales.
Does it work with Conekta, Mercado Pago or Openpay?
This page covers OXXO taken with Stripe. Conekta and Mercado Pago have their own reminders on their integration pages. Openpay, not yet.
You might also like
Turn on your OXXO reminders
Create your free account and connect your first channel in minutes.