OXXO and cash vouchers in Mexico: how they work at checkout

An OXXO voucher turns an online order into a reference the shopper pays in cash at an OXXO store before it expires. The provider confirms payment asynchronously, often by the next business day, so the order stays pending until a webhook says it is paid. Amounts are capped per voucher, there are no chargebacks, and refunds need a separate bank transfer, usually SPEI. Offer it to shoppers who prefer cash, and offer SPEI to those who can pay from a bank app.

Topic
Local methods
Published
Reading time
7 min

In 30 seconds

  • An OXXO payment is a promise until the webhook says paid: reserve stock with an expiry, and fulfil only on confirmation.
  • There are no chargebacks, but there is no refund through OXXO either, so collect a CLABE and refund by SPEI.
  • Offer OXXO for shoppers who want cash, and put SPEI first for those with a bank app: it confirms in seconds.
  • 7 sources cited
Talk to us
On this page9 sections

A shopper in Monterrey fills a basket, reaches the checkout and chooses to pay at OXXO. Nothing has been paid yet. The merchant has a reference number, a pending order and a few days of uncertainty, and the shopper has a barcode and a trip to make. Whether that order becomes revenue depends less on the payment method than on how the merchant handles the days in between.

This article explains why cash vouchers still matter in Mexico, how an OXXO payment moves from reference to confirmation, the limits and expiry windows providers set, how to handle the asynchronous status, how refunds work without chargebacks, and when to steer shoppers to SPEI instead. For the method summary, see our OXXO Pay page; for the market, our Mexico guide.

Why do Mexican shoppers still pay with cash?

Because most of them still do, for most purchases. In the national financial inclusion survey for 2024 (ENIF), published by the banking regulator CNBV and the statistics office INEGI, 85% of adults said cash was the method they used most often for purchases of 500 pesos or less. For purchases above 500 pesos the share was 73%, with physical cards at 19% and transfers or mobile apps at 8%. The same report found that a third of people with a debit card did not use it to pay, and 63% of them said they preferred cash.

This is not the same as being unbanked. The joint CNBV and INEGI release says 8 in 10 adults had a savings account, credit, insurance or a retirement account in 2024. Many shoppers have a card or a bank app and still prefer cash. Among debit card holders who prefer cash, the ENIF report found habit was the main reason (46%), ahead of places that only accept cash (15%) and distrust of cards (13%). A cash voucher reaches both groups: those who cannot pay digitally and those who would rather not.

How does an OXXO voucher payment work?

The flow, as Stripe’s documentation describes it:

  1. Checkout. The shopper chooses OXXO and gives a name and email. The provider creates a voucher with a reference number (32 digits at Stripe) and a barcode, shown on a hosted page and usually emailed too.
  2. Pending. The order is created but not paid. The provider reports that the voucher exists, and the merchant waits.
  3. Store payment. The shopper shows the voucher, printed or on a phone, at any OXXO till and pays the exact amount in cash. The cashier scans the barcode and hands over a receipt.
  4. Confirmation. The provider learns of the payment from the store network and notifies the merchant. Stripe sends its paid event on the next business day.
  5. Expiry. If the shopper never pays, the voucher expires and the merchant is notified that payment failed.

Stripe’s guide asks merchants to generate the barcode in the Code 128 format at about 7.5 cm wide when printed, and to make it zoomable on mobile so the cashier can scan it. A barcode that will not scan at the till is a lost payment that looks, in your data, like a shopper who changed their mind.

What limits and expiry windows apply?

Each provider sets its own, and the differences are large enough to matter when you choose one. The table compares two providers’ published values.

TopicStripedLocal
Amount per voucher10 to 10,000 MXNFrom 1 MXN; no maximum stated
Expiry1 to 7 calendar days, ending 23:59 Mexico City time10 or 12 days, depending on the provider
Confirmation after store paymentNext business dayImmediate or 24 hours, depending on the solution
RefundsNot supported through OXXOOffline refunds through payout links
ChargebacksNoneNone stated

Two points follow. First, a 10,000 MXN cap at one provider means larger baskets need another method, so the checkout should hide OXXO above the cap rather than fail after the shopper picks it. Second, the expiry is a stock decision as much as a payment one. A long window gives the shopper time to reach a store but locks inventory for longer; a short one frees stock but loses shoppers who pay on payday.

Providers also restrict merchant categories. Stripe’s documentation prohibits OXXO for categories including telecommunications, direct marketing subscriptions, pharmacies, crypto exchanges and financial services, and OXXO does not support recurring payments there. Check the list before you plan a launch around it.

How should you handle the asynchronous status?

Treat the webhook as the only source of truth, and design the order around four states. Stripe’s events map to them cleanly:

EventMeaningWhat the merchant does
Voucher createdReference issuedReserve stock, send the voucher by email, start reminders
ProcessingVoucher can no longer be paidWait; do not cancel yet
SucceededShopper paid before expiryFulfil the order
Payment failedVoucher expired unpaidRelease stock, offer another method

The failure signal is slow. Stripe’s guide says that if a voucher is not paid by 23:59 Mexico City time on its expiry date, the failed event arrives within 10 calendar days, in most cases within 7. Do not wait for it to release stock: release on your own expiry timer, and let a late “succeeded” event, if one ever arrives, trigger a manual review rather than an automatic shipment of stock that has been resold.

Reminders help. A voucher email at creation, a reminder the day before expiry and a clear “pay before” time in local time on the voucher itself all reduce the share of vouchers that die unpaid.

How do refunds and disputes work without chargebacks?

There is no chargeback. Stripe’s documentation says customers cannot file one and funds are never withdrawn from the merchant’s balance because of a dispute. A shopper with a problem contacts the merchant.

There is also no refund through OXXO. Cash paid at a store cannot be pushed back through the till, so the refund is a separate payout. The usual route is a SPEI transfer to the shopper’s bank account, identified by its CLABE account number. That means:

  • Collecting bank details at the moment of the refund request, and checking that the account holder’s name matches the customer.
  • Tracking the payout’s own status, because a wrong CLABE causes a return that has to be resent.
  • A plan for shoppers with no bank account, such as store credit, since the reason they paid cash may be that they have none.

dLocal’s documentation offers offline refunds through payout links, where the shopper enters their own details. Our article on why payouts are harder than payments covers the failure modes.

Worked example: what does a voucher really convert?

Example figures, for illustration only.

An online electronics accessories store in Mexico generates 4,000 OXXO vouchers a month with an average order of 650 MXN. Of those, 2,400 are paid before expiry: 60%.

ChangePaid vouchersRevenue
Starting point, 3-day expiry, no reminders2,4001,560,000 MXN
Reminder email 24 hours before expiry2,6001,690,000 MXN
Reminders, plus SPEI shown above OXXO at checkout2,340 OXXO plus 300 SPEI1,716,000 MXN

In the third row, 400 shoppers who would have chosen OXXO pay by SPEI instead and 300 of them complete at once, while the remaining 3,600 vouchers convert at 65%, as in the second row. The point is not the specific numbers; it is that the voucher is a funnel step with its own drop-off, and the fixes are reminders, expiry tuning and offering an instant alternative to shoppers who can use it. Measure the paid rate per voucher, not per order.

When should you offer SPEI instead?

When the shopper can pay from a bank app. SPEI, Banco de México’s real-time transfer system, operates 24/7 and settles transfers immediately, and the recipient can download an electronic proof of payment (CEP). Expansión reports that SPEI processed more than 7.3 billion transfers in 2025 and that Banxico expects SPEI operations to exceed card payments by the end of 2026. dLocal lists SPEI confirmation as immediate; an OXXO confirmation, immediate or within 24 hours, only starts once the shopper has visited a store.

A practical order for a Mexican checkout:

  • Cards first for shoppers who expect them, with meses sin intereses where your provider supports it.
  • SPEI next, because it confirms in seconds and the same rail carries refunds.
  • OXXO as the cash option, shown only for amounts within the provider’s cap, with the expiry and store instructions clear before the shopper commits.

SPEI is not a full replacement. It needs a bank account and a banking app, and the ENIF figures show how many shoppers still pick cash. Our article on how many PSPs you need per market works through how this mix shapes the provider list in Mexico.

What are the common mistakes?

  • Fulfilling on voucher creation. A created voucher is not a payment. Ship on the paid webhook.
  • Waiting for the failure event to release stock. It can arrive days after expiry. Run your own timer.
  • Showing OXXO above the cap. The shopper picks it, the provider rejects it, and the order is lost.
  • No refund path. Promising refunds without a way to collect a CLABE and send SPEI produces complaints, not refunds.
  • Counting orders, not vouchers. A low paid rate looks like weak demand when it is a reminder or expiry problem.

How does Omno handle cash vouchers?

Omno treats OXXO as an asynchronous pay-in. The hosted checkout can show the voucher, eligibility rules can show OXXO only to the customer groups and amounts the provider accepts, and the paid or expired status reaches the merchant by webhook. The routing-decision log records which provider handled each payment. The hosted checkout page describes the flow.

Key facts

  • 85% of adults in Mexico most often pay cash for purchases of 500 pesos or less, and 73% for purchases above 500 pesos (CNBV, ENIF 2024).
  • OXXO vouchers at Stripe expire after 1 to 7 days, at 23:59 Mexico City time, and payment is confirmed by the next business day (Stripe docs, 2026).
  • Stripe accepts OXXO payments from 10 to 10,000 MXN; OXXO payments cannot be refunded and customers cannot file a chargeback (Stripe docs, 2026).
  • dLocal lists OXXO voucher expiry of 10 or 12 days and confirmation that is immediate or within 24 hours, depending on the provider (dLocal docs, 2026).
  • SPEI processed more than 7.3 billion transfers in 2025, and Banxico expects SPEI operations to exceed card payments by the end of 2026 (Expansión, 2026).

Changelog

  • First published.

Frequently asked questions

How long does an OXXO payment take to confirm?

It depends on the provider. Stripe sends the paid event on the next business day after the shopper pays at the store, Monday to Friday excluding Mexican holidays. dLocal lists confirmation as immediate or within 24 hours depending on the agreed solution. Either way, the shopper may take days to visit a store, so the order can sit pending for most of the voucher's life.

Can a shopper dispute an OXXO payment?

Not through a chargeback. The shopper pays cash and receives a store receipt, and Stripe's documentation says funds are never withdrawn from the merchant's balance because of a dispute. A shopper with a complaint contacts the merchant directly, so your refund policy and support team are the dispute process.

How do you refund an OXXO payment?

Outside OXXO. Cash paid at the store cannot be reversed through the method, so the merchant collects the shopper's bank details, usually a CLABE account number, and sends a SPEI transfer. Some providers offer payout links that let the shopper enter their own details. Either way, the refund is a payout and needs its own status tracking.

Should OXXO be the default payment method in Mexico?

Usually not. It reaches shoppers who want to pay cash, which in Mexico is many people for small purchases, but it confirms slowly and some vouchers are never paid. Show it alongside cards and SPEI, and let your own conversion and payment data decide the order.

esc
↑↓ to move ↵ to open All results