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 codes | MX |
Processing (Presentation) currencies | MXN |
Settlement currencies | MXN |
Consumer currencies | MXN |
Channel member tag | oxxomx |
Scheme name in the settlement file | Oxxo Direct |
Minimum transaction amount | None |
Maximum transaction amount | EUR 10,000/transaction |
Session timeout | 5 days. It can be set in the payment request. |
Refund | Full, partial and multiple partial refunds are all available. |
Refund Validity | T + 365 days |
Chargeback | No |
Integration Type | Asynchronous |
Sandbox | Scheme-hosted |
Transaction Flow
- On the merchant's checkout page, the consumer selects OXXO as their preferred payment method.
- The consumer is presented with a slip containing the amount, payment identifier and information about the payment.
- The consumer prints the payslip or writes down the reference number.
- The consumer is redirected back to the merchant.
- At one of the supported locations, the consumer presents the payslip/reference number and pays the order amount.
- PPRO receives a payment confirmation and notifies the partner/merchant about the payment status.
- The merchant is notified of the payment status and can ship the goods.
OXXO Integration
Specific input parameters for the TRANSACTION call
Field Name | M/O/C | Type | Description |
---|---|---|---|
specin.duedate | O | ascii | Due date in format YYYY-MM-DD. Defaults to NOW + 3 days |
specin.email | M | utf-8 | RFC compliant email address of the account holder |
transientin.merchantlogourl | O | ascii | The 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 Name | Type | Description |
---|---|---|
SPECOUT.STOREID | ascii | The ID of the OXXO store |
SPECOUT.STORELOCATION | ascii | The location of the OXXO store |
SPECOUT.STORECITY | ascii | The city where the OXXO store is located |
SPECOUT.STORESTREET | ascii | The street where the OXXO store is located |
SPECOUT.STORESTREETNO | ascii | The street number of the OXXO store |
SPECOUT.STORESUBURB | ascii | The suburb/colonia where the OXXO store is located |
SPECOUT.STOREZIP | ascii | The zip code of the OXXO store |
SPECOUT.DOCUMENTCODE | ascii | The 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.DOCUMENTIMAGE | ascii | A 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.DOCUMENT | ascii | The 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 Name | M/O | Type | Description |
---|---|---|---|
specin.accountnumber | M | numeric | Consumer’s bank account number |
specin.bankagency | M | numeric | Consumer’s bank agency number |
specin.bankname | M | utf-8 | Consumer’s bank name (minimum length of two characters) |
TRANSACTION call input
tag=oxxomx
&txtype=TRANSACTION
&countrycode=MX
¤cy=MXN
&amount=10000
&merchanttxid=CkNWCBH4Wx4s
&login=johndoe
&password=wXBrpVporFVjGO4R
&contractid=JOHNDOECONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
¬ificationurl=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.
Updated about 1 year ago