OXXO

Integrate OXXO and allow merchants to generate payslips that consumers in Mexico can use to pay in cash at their selected payment location.

Payment Method Properties

Available country codesMX
Processing (Presentation) currenciesMXN
Settlement currenciesMXN
Consumer currenciesMXN
Channel member tagoxxomx
Scheme name in the settlement fileOxxo Direct
Minimum transaction amountNone
Maximum transaction amountEUR 10,000/transaction
Session timeout5 days.

It can be set in the payment request.
RefundFull, partial and multiple partial refunds are all available.
Refund ValidityT + 365 days
ChargebackNo
Integration TypeAsynchronous
SandboxScheme-hosted

Transaction Flow

  1. On the merchant's checkout page, the consumer selects OXXO as their preferred payment method.
  2. The consumer is presented with a slip containing the amount, payment identifier and information about the payment.
  3. The consumer prints the payslip or writes down the reference number.
  4. The consumer is redirected back to the merchant.
  5. At one of the supported locations, the consumer presents the payslip/reference number and pays the order amount.
  6. PPRO receives a payment confirmation and notifies the partner/merchant about the payment status.
  7. The merchant is notified of the payment status and can ship the goods.

OXXO Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeDescription
specin.duedateOasciiDue date in format YYYY-MM-DD. Defaults to NOW + 3 days
specin.emailMutf-8RFC compliant email address of the account holder
transientin.merchantlogourlOasciiThe URL of the logo to be displayed on the payment page. If not set, it defaults to the PPRO logo. Max logo size: W=1200, H=627. Max URL characters is 255

For standard input parameters, see Input parameters for the TRANSACTION call.

This payment method supports the dynamic descriptor field (see The dynamic descriptor).

🚧

Important

This payment method requires the real account holder value for the accountholdername parameter.

Specific output parameters for the TRANSACTION call

Field NameTypeDescription
SPECOUT.STOREIDasciiThe ID of the OXXO store
SPECOUT.STORELOCATIONasciiThe location of the OXXO store
SPECOUT.STORECITYasciiThe city where the OXXO store is located
SPECOUT.STORESTREETasciiThe street where the OXXO store is located
SPECOUT.STORESTREETNOasciiThe street number of the OXXO store
SPECOUT.STORESUBURBasciiThe suburb/colonia where the OXXO store is located
SPECOUT.STOREZIPasciiThe zip code of the OXXO store
SPECOUT.DOCUMENTCODEasciiThe numeric code of the OXXO document. If you want to create a custom OXXO checkout flow, make sure this code is displayed as a Code128-type barcode.
SPECOUT.DOCUMENTIMAGEasciiA ready-to-use image that does not need to be formatted in the appropriate barcode format. This enables you to make your own checkout flow or send the barcode via another medium, such as email
TRANSIENTOUT.DOCUMENTasciiThe URL of the OXXO document. Only for successful requests.

For standard output parameters, see Output parameters for the TRANSACTION call.

Specific input parameters for the REFUND call

Refunds are performed by a bank transfer to the target account. For Anti Money Laundering reasons PPRO needs to verify the name of the account holder which will receive the refund, this is normally done by validating a bank statement supplied by the receiver. This should be sent to [email protected] when the refund is requested.

Field NameM/OTypeDescription
specin.accountnumberMnumericConsumer’s bank account number
specin.bankagencyMnumericConsumer’s bank agency number
specin.banknameMutf-8Consumer’s bank name (minimum length of two characters)

TRANSACTION call input

tag=oxxomx
&txtype=TRANSACTION
&countrycode=MX
&currency=MXN
&amount=10000
&merchanttxid=CkNWCBH4Wx4s
&login=johndoe
&password=wXBrpVporFVjGO4R
&contractid=JOHNDOECONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
&notificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&specin.dynamicdescriptor=DynDescriptor
&accountholdername=John%20Doe
&specin.duedate=
&specin.email=test%40gmx.de
&returnmode=urlencodeext

TRANSACTION call output

REQUESTSTATUS=SUCCEEDED
&STATUS=SUCCEEDED
&TXID=785318724
&ERRMSG=
&CHANNEL=testchannel
&TAG=oxxomx
&PAYMENTGUARANTEE=NONE
&REDIRECTSECRET=66OxsYvb9P9R6SvHWCjf3Di1OFhXSgkH
&SPECOUT_DOCUMENTCODE=46000773972377120200928000010092
&SPECOUT_DOCUMENTIMAGE=https://staging-oxxo-batch.allpago.com/rest/acon2/v1/barcode/image/30O3BG3
&SPECOUT_REDIRECTOPTIONAL=1
&SPECOUT_STOREID=Anapra CJS
&SPECOUT_STORELOCATION=Ciudad Juarez
&SPECOUT_STORECITY=CIUDAD JUAREZ
&SPECOUT.STORESTREET=AV RANCHO ANAPRA
&SPECOUT.STORESTREETNO=SN
&SPECOUT.STORESUBURB=PUERTO DE ANAPRA
&SPECOUT.STOREZIP=32107

Branding guidelines

Click here to download logos and other useful branding information.

Additional information

  • OXXO Domestic Processing (Mexico) supports 60 characters of text for the payment description passed in SPECIN.DYNAMICDESCRIPTOR.
  • If you want to create a self-hosted OXXO barcode presentation page, add the following text to help guide the consumer when paying the OXXO slip:
  • NOTA: Este código de pago es único y sólo es válido para esta compra, si necesitas hacer más compras/pagos debes comunícate con "Merchant Name" para generar otro código.
  • Replace "Merchant Name" with the name of the merchant presenting the slip (if this is technically possible).

🚧

Important

The account holder's name passed in the request has to be in the format , with a minimum length of two characters per name. Multiple first names are ok. Valid examples are “John Dorian”, “William Charles Dickinson” (where “William Charles” will be the first name, and “Dickinson” the last). If these conditions are not met, the system will not accept the request.

Scenarios for using the specin.duedate parameter

Setting a value for specin.duedate does not affect the default timeout of 3 days for the payment. The following use cases apply:

specin.duedate value is lower than the timeout value
In this use case, you define a more aggressive due date. If the value of specin.duedate is lower than the timeout value, a consumer not paying by the due date will not affect when PPRO sends a timeout. PPRO still sends the timeout at 3 days, as defined above.

We recommend you track the due date expiring based on the local timezone on the desired day at 23:59:59. Ignore the PPRO timeout.

specin.duedate value is greater than the timeout value
In this use case, you define a less aggressive due date. If the value of specin.duedate is greater than the timeout value, PPRO will still send the timeout message at 3 days, as defined above. This means that a consumer may successfully pay after the PPRO timeout is sent. This causes a scenario where PPRO sends a second notification to the notification URL indicating a payment's success. This is the "succeeded after failed" scenario.

We recommend you track the due date expiring based on the local timezone on the desired day at 23:59:59. Ignore the PPRO timeout.