Abitab and Redpagos
With Mercado Pago's Checkout API, you can also offer payments with Abitab and Redpagos for buyers in Uruguay. With these payment methods, the buyer makes a deferred cash payment at any Abitab or Redpagos location, within the expiration period defined by the integrator. The purchase is considered complete only after the payment is confirmed.
If you already have the development environment set up and want to offer Abitab and Redpagos as payment methods, follow the steps below.
processing_mode parameter. For more information, visit the section Integration Model.To receive payments with Abitab or Redpagos, add a form to the frontend that securely captures the payer's data.
If you already have a payment form, make sure to include the desired payment methods among the available options as shown below and continue to the Submit payment step.
| Payment method | payment_method_id |
| Abitab | abitab |
| Redpagos | redpagos |
html<form id="form-checkout" action="/process_payment" method="post"> <div> <label for="payerFirstName">First name</label> <input id="form-checkout__payerFirstName" name="payerFirstName" type="text"> </div> <div> <label for="payerLastName">Last name</label> <input id="form-checkout__payerLastName" name="payerLastName" type="text"> </div> <div> <label for="email">E-mail</label> <input id="form-checkout__email" name="email" type="text"> </div> <div> <label for="identificationType">Document type</label> <select id="form-checkout__identificationType" name="identificationType"> <option value="CI">CI</option> </select> </div> <div> <label for="identificationNumber">Document number</label> <input id="form-checkout__identificationNumber" name="identificationNumber" type="text"> </div> <div> <input type="hidden" name="transactionAmount" id="transactionAmount" value="1000"> <button type="submit">Pay</button> </div> </form>
Submit the payment by creating an order that contains the associated payment transaction.
To do this, send a request with your test Access TokenPrivate key for the application created in Mercado Pago, used in the backend. Access it at Your integrations > Integration data > Tests > Test credentials. The test Access Token starts with the `APP_USR` prefix. and the parameters listed below to the /v1/ordersPOST endpoint and run the request.
The example below shows order creation with Abitab. For Redpagos, use the same request structure replacing payment_method.id with redpagos.
curlcurl --location --request POST 'https://api.mercadopago.com/v1/orders' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {{YOUR_ACCESS_TOKEN}}' \ --header 'X-Idempotency-Key: {{SOME_UNIQUE_VALUE}}' \ --data-raw '{ "type": "online", "external_reference": "ext_ref_1234", "processing_mode": "automatic", "total_amount": "1000.00", "payer": { "email": "test_user_uy@testuser.com", "entity_type": "individual", "first_name": "John", "last_name": "Doe", "identification": { "type": "CI", "number": "12345678" }, "phone": { "area_code": "598", "number": "3001234567" }, "address": { "street_name": "18 de Julio", "street_number": "100", "zip_code": "11100", "neighborhood": "Centro", "city": "Montevideo" } }, "transactions": { "payments": [ { "amount": "1000.00", "expiration_time": "P3D", "payment_method": { "id": "abitab", "type": "ticket" } } ] } }'
429 Too Many Requests error, wait the time indicated in the Retry-After response header before retrying. See Possible errors for more details.| Parameter | Type | Description | Required |
Authorization | Header | Refers to your private key, the test Access TokenPrivate key for the application created in Mercado Pago, used in the backend. Access it at Your integrations > Integration data > Tests > Test credentials. The test Access Token starts with the `APP_USR` prefix.. | Required |
X-Idempotency-Key | Header | Idempotency key. Ensures each request is processed only once. Use a unique value in the request header, such as a UUID V4 or a random string. | Required |
processing_mode | Body. String | Order processing mode: automatic to create and process automatically, or manual to process in a separate step. For more information, see Integration model. | Required |
total_amount | Body. String | Total transaction amount. | Required |
payer.email | Body. String | Buyer's email address. | Required |
payer.entity_type | Body. String | Buyer's entity type. In the example, the value is individual. | Optional |
payer.first_name | Body. String | Buyer's first name. | Optional |
payer.last_name | Body. String | Buyer's last name. | Optional |
payer.identification.type | Body. String | Buyer's document type. For Uruguay: CI (Cédula de Identidad). | Required |
payer.identification.number | Body. String | Buyer's document number. | Required |
payer.phone.area_code | Body. String | Buyer's phone area code. | Optional |
payer.phone.number | Body. String | Buyer's phone number. | Optional |
payer.address.street_name | Body. String | Street name in the buyer's address. | Optional |
payer.address.street_number | Body. String | Street number in the buyer's address. | Optional |
payer.address.zip_code | Body. String | Postal code in the buyer's address. | Optional |
payer.address.neighborhood | Body. String | Neighborhood in the buyer's address. | Optional |
payer.address.city | Body. String | City in the buyer's address. | Optional |
transactions.payments.payment_method.id | Body. String | Payment method identifier. For these methods, the value must be abitab or redpagos. | Required |
transactions.payments.payment_method.type | Body. String | Payment method type. For these methods, the value must be ticket. | Required |
transactions.payments.expiration_time | Body. String | Voucher expiration period in ISO 8601 duration format. Although you can set it between 1 and 30 days after the payment is created (P1D to P30D), we recommend setting a period that gives the buyer between 3 and 5 business days to pay. Since expiration_time uses a duration in days (PnD), account for weekends and holidays when defining the value. Payment crediting can take up to 2 business hours after completion. If the payment is made after the established expiration date, the amount will be refunded to the payer's Mercado Pago account. | Optional |
The creation of the payment occurs asynchronously in the order. While it is being processed, the order is returned with a processing status and without information.
Once processing is complete, and since this is an offline payment method, the order transitions to action_required with the detail waiting_payment, indicating that the buyer still needs to complete the payment, as shown in the following response example. We recommend setting up Order topic notifications to receive updates on the status change, including the updated order data. Alternatively, you can choose to send a request to the /v1/orders/{id}GET endpoint to retrieve the updated status.
json{ "id": "ORDBTA01M0TKHHARTFR1ZWDCJ1CNEPKC", "type": "online", "processing_mode": "automatic", "external_reference": "ext_ref_1234", "total_amount": "1000.00", "total_paid_amount": "0.00", "country_code": "URY", "user_id": "1234567890", "status": "action_required", "status_detail": "waiting_payment", "capture_mode": "automatic_async", "currency": "UYU", "created_date": "2026-08-25T16:10:27.396Z", "last_updated_date": "2026-08-25T16:10:28.407Z", "transactions": { "payments": [ { "id": "PAY01M0TKHHBD6V3MDQX3JQ4J6AXR", "amount": "1000.00", "expiration_time": "P3D", "date_of_expiration": "2026-08-28T16:10:27.396+00:00", "reference_id": "123456789012", "status": "action_required", "status_detail": "waiting_payment", "payment_method": { "id": "abitab", "type": "ticket", "ticket_url": "https://www.mercadopago.com.uy/payments/123456789012/ticket?caller_id=1234567890&payment_method_id=abitab&payment_id=123456789012&payment_method_reference_id=1234567890&hash=00000000-0000-0000-0000-000000000000", "reference": "1234567890", "verification_code": "1234567890" } } ] } }
After creating the order, display to the buyer the information needed to complete the payment at an Abitab or Redpagos location. This data is available in the payment_method fields of the response.
| Field | Description |
ticket_url | URL with full payment instructions. Redirect or display this link to the buyer. |
reference | Payment reference code. |
verification_code | Payment verification code. |
The buyer must use the ticket_url, or the reference and verification_code, at an Abitab or Redpagos location to complete the payment before the date_of_expiration deadline.
Once the buyer completes the payment, the order transitions to status: processed. If you have set up your notifications, you will be notified of this via webhook.
If you wish, you can cancel a payment created, as long as it is pending or in process; that is, with status=action_required.
Additionally, we recommend canceling payments that were not made by the established due date to avoid billing and reconciliation issues.
For more information, please consult the Refunds and cancellations section.