Transferencias SPEI
Con Checkout API de Mercado Pago, también es posible ofrecer pagos mediante Transferencias SPEI, servicio que permite realizar pagos desde cualquier banco o institución financiera utilizando la CLABE (Clave Bancaria Estandarizada).
Si ya configuraste tu ambiente, y quieres ofrecer pagos mediante Transferencia SPEI, sigue los pasos a continuación.
processing_mode
. Para más información, accede a la sección Modelo de integración.Para poder recibir pagos, es necesario que añadas en el frontend un formulario que permita capturar los datos del pagador de manera segura.
Si ya cuentas con un desarrollo que contempla un formulario de pago propio, asegúrate de incluir Transferencias SPEI entre las opciones de pago que deseas ofrecer, como es indicado a continuación, y avanza a la etapa de Enviar pago.
Si no cuentas con un formulario de pago, añade el siguiente a tu proyecto, incluyendo el identificador de Pix como medio de pago a ofrecer.
Medio de pago | payment_method_id |
Transferencia SPEI | clabe |
html
<form id="form-checkout" action="/process_payment" method="post"> <div> <div> <label for="payerFirstName">Nombre</label> <input id="form-checkout__payerFirstName" name="payerFirstName" type="text"> </div> <div> <label for="payerLastName">Appelido</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">Tipo de documento</label> <select id="form-checkout__identificationType" name="identificationType" type="text"></select> </div> <div> <label for="identificationNumber">Número del documento</label> <input id="form-checkout__identificationNumber" name="identificationNumber" type="text"> </div> </div> <div> <div> <input type="hidden" name="transactionAmount" id="transactionAmount" value="100"> <input type="hidden" name="description" id="description" value="Nome do Produto"> <br> <button type="submit">Pagar</button> </div> </div> </form>
El envío del pago debe ser realizado mediante la creación de una order que contenga transacciones de pago asociadas.
Para eso, envía un POST con tu Access Token productivoClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend en ambientes de desarrollo y al momento de recibir pagos reales. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Producción > Credenciales de producción. y los parámetros requeridos enumerados a continuación al endpoint /v1/ordersAPI y ejecutes la requisición.
curl
curl --location 'https://api.mercadopago.com/v1/orders' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ENV_ACCESS_TOKEN' \ --header 'X-Idempotency-Key: <SOME_UNIQUE_VALUE>' \ { "type": "online", "external_reference": "ext_ref_1234", "processing_mode": "automatic", "total_amount": "200.00", "payment_expiration_time": "P3D", "payer": { "email": "test@testuser.com", }, "transactions": { "payments": [ { "amount": "200.00", "payment_method": { "id": "clabe", "type": "bank_transfer" } } ] } }
Consulte en la tabla a continuación las descripciones de los parámetros que son obligatorios en la solicitud y aquellos que, aunque son opcionales, tienen alguna particularidad importante que debe destacarse.
Atributo | Tipo | Descripción | Requerido/Opcional |
Authorization | Header | Hace referencia a tu clave privada, el Access TokenClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend en ambientes de desarrollo y al momento de recibir pagos reales. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Producción > Credenciales de producción.. | Requerido |
X-Idempotency-Key | Header | Llave de idempotencia. Esta llave garantiza que cada solicitud sea procesada una única vez, evitando duplicidades. Utiliza un valor exclusivo en el encabezado de tu solicitud, como un UUID V4 o strings aleatorias. | Requerido |
processing_mode | Body. String | Modo de procesamiento de la order. Los valores posibles son: - automatic : para crear y procesar la order en modo automático. - manual : para crear la order y procesarla con posterioridad. Para más información, acceda a la sección Modelo de integración. | Requerido |
total_amount | Body. String | Monto total de la transacción. | Requerido |
payment_expiration_time | Body. String | Permite definir la fecha de vencimiento utilizando el formato de duración ISO 8601. Si bien puedes configurarla para que sea entre 1 y 30 días luego de la emisión del pago, recomendamos establecer una duración de 3 días (“P3D” en el ejemplo) para que no haya conflicto entre el vencimiento y la acreditación del pago, que puede demorar hasta 2 horas hábiles desde su realización. En caso de que el pago se efectúe luego de la fecha de vencimiento establecida, el valor será devuelto a la cuenta de Mercado Pago del pagador. | Opcional |
payer.email | Body. String | E-mail del comprador. | Requerido |
transaction.payments.payment_method.id | Body. String | Identificador del medio de pago. En este caso, el valor deberá ser clabe . | Requerido |
transaction.payments.payment_method.type | Body. String | Tipo del medio de pago. En el caso de pagos con boleto, el valor deberá ser bank_transfer . | Requerido |
ticket_url
, que contiene la URL con las instrucciones para que el comprador efectúe el pago. Deberás redirigirlo siguiendo las indicaciones de la etapa Disponibilizar pago. Además, mostrará el status action_required hasta que el pago sea realizado.json
{ "id": "ORD01J6TC8BYRR0T4ZKY0QR39WGYE", "type": "online", "processing_mode": "automatic", "external_reference": "ext_ref_1234", "marketplace": "NONE", "total_amount": "200.00", "country_code": "MEX", "user_id": "1245621468", "status": "action_required", "status_detail": "waiting_payment", "capture_mode": "automatic", "created_date": "2024-09-02T22:04:01.880469Z", "last_updated_date": "2024-09-02T22:04:04.429289Z", "integration_data": { "application_id": "4599991948843755" }, "transactions": { "payments": [ { "id": "PAY01J6TC8BYRR0T4ZKY0QRTZ0E24", "amount": "200.00", "reference_id": "22dvqmsbq8c", "status": "action_required", "status_detail": "waiting_payment", "payment_method": { "id": "clabe", "type": "bank_transfer", "ticket_url": "https://www.mercadopago.com.mx/sandbox/payments/00000000000/ticket?caller_id=77777777777&hash=34cb0d7c-81d9-478c-92a5-767d0kakjja", "reference": "1234567890" } } ] } }
Luego de la creación del pago, y para que el cliente pueda realizar la transferencia, es necesario redireccionarlo a la URL devuelta en la respuesta a la creación de la order bajo el parámetro ticket_url
.
json
{ [...] "transactions": { "payments": [ { [...] "payment_method": { "id": "clabe", "type": "bank_transfer", "ticket_url": "https://www.mercadopago.com.mx/payments/113775986440/ticket?caller_id=1872745950&hash=9545e05b-a530-4c82-9441-a666d0c73f70", "reference": "646010349353743569" } } ] } }
Para ello, tienes dos opciones:
- Puedes hacer esa redirección automáticamente.
- Puedes disponibilizar esa URL al usuario por medio de un botón cliqueable, siguiendo el ejemplo a continuación.
html
<a href="https://www.mercadopago.com.mx/payments/51096146182/ticket?caller_id=34728475&hash=f3a8630a-f06a-48e4-b2a6-f95750af7346" target="_blank">Pagar com Transferências SPEI</a>
Si lo deseas, puedes cancelar un pago creado para boleto bancário, siempre y cuando se encuentre pendiente o en proceso; es decir, con status=action_required
.
Adicionalmente, recomendamos cancelar los pagos que no fueron realizados dentro de la fecha de vencimiento establecida, para evitar problemas de facturación y conciliación.
Para obtener más información, consulta la sección Reembolsos y cancelaciones.