A través de la preferencia, es posible crear un pago con un envío asociado. De esta manera, podrás ofrecer a los clientes entregas a domicilio de los productos adquiridos aprovechando la logística de Mercado Libre y sin esfuerzos extra de parte del negocio.
La creación de pagos con envíos solo está disponible para integradores que cuenten con autorización de Mercado Pago. Si no cuentas con esta funcionalidad, puedes solicitarla a tu Asesor Comercial.
Para crear un pago con un envío asociado, crea una preferencia enviando un POST al endpoint /checkout/preferences, incluyendo tu Access TokenClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Pruebas > Credenciales de prueba. y los nodos items y shipments como es indicado en la tabla a continuación.
Referencia que puedes sincronizar con tu sistema de pagos para identificar el envío. Este campo debe tener un máximo de 64 caracteres y solo debe contener números, letras, guiones (-) y guiones bajos (_). No se permiten caracteres especiales como ([ ], (), '', @).
String
Opcional
items
Información sobre los ítems vendidos a ser enviados.
Array
Requerido
items.title
Título del ítem que se mostrará durante el proceso de pago, en el checkout, actividades y correos electrónicos.
String
Requerido
items.description
Descripción del ítem.
String
Opcional
items.picture_url
URL de la imagen del ítem.
String
Opcional
items.quantity
Cantidad de ítems. Esta propiedad se utiliza para calcular el costo total de la compra.
Number
Requerido
items.currency_id
Identificador único de la moneda involucrada en la transacción. El único valor posible es pesos mexicanos (MXN).
String
Opcional
items.unit_price
Precio unitario del ítem. Esta propiedad se usa junto con propiedad quantity para determinar el costo de la compra.
Number
Requerido
items.fiscal_data
Objeto que contiene los datos fiscales del producto.
Object
Requerido para crear envíos. Si lo ingresas, debes incluir también el atributo shipments.
items.fiscal_data.sat
Categoría SAT del ítem. Consulta los valores posibles accediendo al siguiente enlace.
String
Requerido
items.fiscal_data.sat_measurement_id
Identificador único de la unidad de medida del producto.
String
Requerido
items.fiscal_data.measurement_unit
Unidad de medida del producto de acuerdo con las SAT Units.
String
Requerido
items.fiscal_data.package_id
Identificador del tipo de embalaje del producto.
String
Requerido
items.fiscal_data.dangerous_material_id
Identificador para productos peligrosos.
String
Opcional
items.dimensions
Objeto que contiene la información sobre el tamaño del ítem.
Object
Opcional
items.dimensions.unit
Unidad de medida para el ítem. Debe ser cm (centímetros).
String
Requerido
items.dimensions.height
Alto del ítem en centímetros.
Number
Requerido
items.dimensions.width
Ancho del ítem en centímetros.
Number
Requerido
items.dimensions.length
Largo del ítem en centímetros.
Number
Requerido
items.dimensions.weight
Peso del ítem en gramos.
Number
Requerido
shipments
Información del envío.
Object
Obligatorio
shipments.dimensions
Tamaño del paquete, que se utilizará para definir el costo del envío. El formato debe ser cm x cm x cm, g. Si contiene más de un ítem, su tamaño debe calcularse considerando la suma de las dimensiones de todos los artículos, asegurando siempre que no se superen las dimensiones máximas permitidas por paquete. Consulta las buenas prácticas para el dimensionamiento accediendo a la documentación.
String
Requerido
shipments.free_methods_type
Identificador de método de envío. Solo debe enviarse en caso de ofrecer envío gratuito, con el valor standard. Este envío gratuito solo es posible cuando el valor de la venta es mayor que el costo de envío. En caso de que el costo del envío esté a cargo del comprador, el campo no debe enviarse.
String
Opcional
shipments.local_pickup
Indica si se quiere ofrecer recolección de paquetes en sucursal. Para esta solución, ingresa false.
Boolean
Requerido
shipments.mode
Modo de envío. Para esta solución, ingresa me2.
String
Requerido
shipments.stock_origin_id
Identificador de la dirección de origen del paquete, que debe ser solicitado al equipo de Mercado Pago. En caso de haber más de una dirección de recolección, deberá ser informado el stock_origin_id de la dirección de origen.
String
Opcional
shipments.receiver_address
Detalles de la dirección de destino. Su envío es recomendado para ofrecer la mejor experiencia de compra y, de ser necesario, los datos pueden ser reutilizados.
Object
Opcional
shipments.receiver_address.zip_code
Código postal de la dirección de destino.
String
Opcional
shipments.receiver_address.street_name
Nombre de la calle de destino.
String
Opcional
shipments.receiver_address.street_number
Número de la dirección de destino.
String
Opcional
shipments.receiver_address.floor
Piso del apartamento de destino.
String
Opcional
shipments.receiver_address.apartment
Número del apartamento de destino.
String
Opcional
shipments.receiver_address.neighborhood
Barrio de la dirección de destino.
String
Opcional
shipments.receiver_address.city_name
Ciudad de la dirección de destino.
String
Opcional
shipments.receiver_address.state_name
Estado de la dirección de destino.
String
Opcional
shipments.receiver_address.country_name
País de la dirección de destino.
String
Opcional
Si la solicitud se envió correctamente, el pago con envío habrá sido creado y la respuesta se verá como en el ejemplo a continuación.
En caso de ser necesario, puedes cancelar el envío creado. Para eso, deberás cancelar el pago al que está asociado en su totalidad.
Gestionar envíos
Si eliges crear pagos con envíos, puedes utilizar nuestras APIs de gestión de envíos, que te permitirán optimizar tu experiencia pre y posventa.
Para cotizar un envío, envía un POST al endpoint /shipping/v1/shipments-rates incluyendo tu Access TokenClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Pruebas > Credenciales de prueba. y los parámetros descritos en la tabla a continuación. Ten en cuenta que solo es posible cotizar el envío de un paquete por vez.
Contiene la información del paquete para la cotización.
Array
Requerido
packages.declared_value
Valor del paquete a ser enviado. No incluye el costo estimado de envío.
Number
Requerido
packages.quantity
Cantidad de paquetes. El único valor permitido es 1.
Number
Requerido
packages.dimensions
Objeto que contiene las dimensiones del paquete. Los máximos permitidos son: - Cada lado debe tener un máximo de 150 cm. - El límite de dimensiones totales no debe superar los 330 cm. - El peso máximo es de 30 kg (real o volumétrico).
Object
Requerido
packages.dimensions.height
Alto del paquete en centímetros.
Number
Requerido
packages.dimensions.width
Ancho del paquete en centímetros.
Number
Requerido
packages.dimensions.length
Largo del paquete en centímetros.
Number
Requerido
packages.dimensions.weight
Peso del paquete en gramos.
Number
Requerido
shipping_from.zip_code
Código postal de la dirección de origen. Si se informa este valor, se usará para calcular la oferta. De lo contrario, se aplicará el dato de Envíos configurado en Mercado Pago.
String
Opcional
shipping_to.zip_code
Código postal de la dirección de destino.
String
Requerido
Si la solicitud es correcta, la respuesta devolverá la cotización del envío, que puede contener más de una opción variables en precio y/o plazo.
Identificador de la cotización. Usa este valor como shipment_rate_id al crear el envío.
String
rates
Lista de cotizaciones para el paquete en función de la dirección informada.
Array
options
Lista de las opciones de cotizaciones disponibles.
Array
id
Identificador de la opción de envío. Usa este valor como option_id al crear el envío a partir de la cotización.
String
base_price
Valor bruto del envío.
Number
price
Valor neto del envío.
Number
method
Método de entrega. La única respuesta posible a este campo es standard, para envíos gratuitos.
String
pay_before
Expectativa de fecha del pago para asegurar la promesa de envío generada.
Date
delivery_promise.shipping_from
Fecha inicial de la promesa de entrega.
String
delivery_promise.shipping_to
Fecha final de la promesa de entrega.
String
delivery_days.from
Mínimo de días hábiles para la promesa de entrega.
Integer
delivery_days.to
Máximo de días hábiles para la promesa de entrega.
Integer
packages.quantity
Cantidad de paquetes cotizados.
Number
packages.dimensions
Dimensiones del paquete cotizado.
Object
packages.dimensions.height
Alto del paquete.
Number
packages.dimensions.width
Ancho del paquete.
Number
packages.dimensions.length
Largo del paquete.
Number
packages.dimensions.weight
Peso del paquete.
Number
shipping_to.zip_code
Código postal del domicilio de destino.
String
shipping_to.city_id
Identificador de la ciudad de la dirección de destino.
String
shipping_to.state_id
Sigla del estado de la dirección de destino.
String
shipping_to.country_id
Sigla del país de la dirección de destino.
String
Para conocer los errores que puede devolver esta solicitud, dirígete a nuestra Referencia de API.
Es posible consultar un envío y obtener sus datos completos una vez creado. Esta consulta te permitirá acceder al identificador del paquete (packages.id) y el número de tracking (tracking_number), entre otros datos.
Para realizarla, envía un GET con tu Access TokenClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Pruebas > Credenciales de prueba. al endpoint /shipping/v1/shipments/{shipment_id} incluyendo el identificador del envío (shipment_id) en el path de la solicitud.
Fase activa del envío: forward (envío al cliente) o reverse (devolución).
String
created_at
Fecha y hora de creación del envío.
Date
shipping_to
Información de la dirección de destino con detalles completos del destinatario.
Object
shipping_from
Información de la dirección de origen con detalles del remitente.
Object
packages
Paquetes incluidos en el envío.
Array
packages.id
Identificador del paquete. Usa este valor para generar etiquetas.
String
packages.dimensions
Dimensiones del paquete (alto, largo, ancho, peso y volumen).
Object
packages.items
Artículos incluidos en el paquete.
Array
packages.price
Información de precio del paquete.
Object
packages.tracking_info
Información de seguimiento del paquete.
Object
packages.tracking_info.tracking_number
Número de seguimiento del paquete. Usa este valor para rastrear el envío.
String
packages.tracking_info.last_status
Último estado registrado del paquete.
String
origin
Información de la dirección de origen.
Object
dispatch_date
Fecha estimada de despacho del envío.
Object
Con la API de etiquetas, podrás generar las etiquetas que contienen toda la información necesaria para despachar los paquetes de tus productos vendidos. Podrás elegir si deseas que esta etiqueta sea generada en PDF, ZIP o ZPL, para su descarga, o en formato JSON.
Si al consultar por un envío, el parámetro dispatch-date está presente, las etiquetas solo podrán ser generadas 24 horas antes de la fecha y hora definidas en ese campo. Accede a Consulta de envíos para más información.
Para generar la etiqueta, envía un GET con tu Access TokenClave privada de la aplicación creada en Mercado Pago, que es utilizada en el backend. Puedes acceder a ella a través de Tus integraciones > Detalles de aplicación > Pruebas > Credenciales de prueba. y los parámetros indicados en la tabla a continuación al endpoint /shipping/v1/shipments/{id}/packages/{package_id}/label.
Path. Identificador del envío, que puede ser obtenido al consultar la información del envío o mediante la notificación Webhook.
String
Requerido
package_id
Path. Identificador del paquete, que puede ser obtenido al consultar la información del envío o mediante la notificación Webhook.
String
Requerido
X-Content-Type
Header. Formato de salida deseado para la etiqueta. Los formatos posibles son: pdf, zpl, zip, json.
String
Requerido
La respuesta puede variar dependiendo del formato de salida especificado en la solicitud, pero siempre contendrá un identificador de la etiqueta (id) y el contenido de la misma (label). En caso de haber solicitado que sea generada en un archivo PDF, ZIP o ZPL, contendrá el descargable.
json
[
{
"id": 43539204818,
"label": "String"
}
]
Para conocer los errores que puede devolver esta solicitud, dirígete a nuestra Referencia de API.
Con la API de envíos puedes realizar el seguimiento de los paquetes despachados a partir de su número de seguimiento. Para hacerlo, envía un GET al endpoint /shipping/v1/shipments-tracking/{tracking_number}, incluyendo exclusivamente el número de seguimiento (tracking_number) del paquete en el path de la solicitud.
Si el dato enviado es correcto, la respuesta contendrá la información del paquete junto con los eventos del envío, como se muestra en la respuesta a continuación.
Dimensiones del paquete (alto, largo, ancho, peso y volumen).
Object
package.dimensions.height
Alto del paquete.
Number
package.dimensions.width
Ancho del paquete.
Number
package.dimensions.length
Largo del paquete.
Number
package.dimensions.weight
Peso del paquete.
Number
package.items
Información de los ítems incluidos en el paquete.
Array
package.items.title
Título del ítem enviado en el paquete.
String
package.items.description
Descripción del ítem enviado en el paquete.
String
package.items.unit_price
Valor del ítem enviado en el paquete.
Number
package.price
Datos del precio de envío del paquete.
Object
package.price.amount
Valor del envío.
Number
package.price.currency
Moneda utilizada.
String
tracking
Detalles del histórico del envío.
Array
tracking.type
En qué dirección se mueve el envío: forward cuando el paquete está en camino hacia el cliente; reverse cuando el paquete se dirige de vuelta a la dirección de origen.
String
tracking.events
Lista de eventos del envío.
Array
tracking.events.status
Estado del evento de envío. Consulta los estados posibles en la sección a continuación.
String
tracking.events.date
Fecha de actualización del estado del evento.
String
tracking.events.event_name
Nombre del evento (cuando esté disponible).
String
tracking.events.event_date
Fecha del evento (cuando esté disponible).
String
Para conocer los errores que puede devolver esta solicitud, dirígete a nuestra Referencia de API.
Posibles estados de un envío
A continuación, puedes consultar los posibles estados de un envío junto con su descripción y asociación a la dirección en la que este envío se mueve.
Estado
Descripción
Fase
created
El envío fue creado (una vez realizado el pago).
Forward / Reverse
ready
Ya puede generarse la etiqueta del envío. Cuando dispatch-date esté presente, solo podrás generar la etiqueta 24 horas antes de esta fecha y horario.
Forward
label_printed
La etiqueta fue generada.
Forward / Reverse
shipped
El paquete fue recolectado y está en camino a su destino.
Forward / Reverse
out_for_delivery
El paquete salió del lugar de origen a la dirección de destino.
Forward
soon_deliver
El paquete está cerca de su destino.
Forward
delivered
El paquete fue entregado.
Forward
not_delivered
El paquete no fue entregado.
Forward / Reverse
canceled
El envío fue cancelado.
Forward
in_hub
El paquete se encuentra en un depósito.
Forward
rejected_in_hub
El paquete fue rechazado en el depósito.
Forward
discarded
El paquete fue descartado y no retornará al remitente.
Reverse
outbounded
El paquete salió del depósito.
Forward
impassable_area
La ruta del envío tiene una zona intransitable.
Forward
receiver_absent
El destinatario del paquete se encuentra ausente.
Forward
refused_delivery
La entrega del paquete fue rechazada.
Forward
bad_address
El transportista no pudo encontrar la dirección de destino o no era válida.
Forward / Reverse
damaged
El paquete fue dañado.
Forward / Reverse
lost
El paquete fue perdido.
Forward / Reverse
stolen
El paquete fue robado.
Forward / Reverse
delayed
El paquete está demorado.
Forward
estimated_delivery_updated
Fecha de entrega estimada actualizada.
Forward
returned
El paquete fue devuelto al remitente.
Reverse
on_route
El paquete está en camino.
Forward
failed
Falló la inicialización del envío.
-
redirected
Se redirigió el envío (cambió de fase).
Reverse
stuck
El envío está impedido (falló el cambio de fase).
Forward / Reverse
picked_up
Paquete recogido.
Reverse
carrier_logistic_center_inbound
El paquete entró en un depósito.
Forward / Reverse
carrier_logistic_center_outbound
El paquete salió de un depósito.
Forward / Reverse
sender_absent
Vendedor ausente para la recolección.
Reverse
refused_pickup
Se rechazó la recolección del paquete.
Forward
sender_not_visited
No se pudo realizar la recolección del paquete.
Forward
Configurar notificaciones de envíos
Configura notificaciones Webhooks para recibir alertas sobre envíos y sus cambios de estado.
Para hacerlo, es necesario indicar las URLs a las que las mismas serán enviadas siguiendo el paso a paso a continuación:
Ingresa a Tus integraciones y selecciona la aplicación integrada con Checkout Pro para la que deseas activar las notificaciones.
En el menú de la izquierda, selecciona Webhooks > Configurar notificaciones.
Selecciona la pestaña Modo productivo y proporciona una URL HTTPS para recibir notificaciones con tu integración productiva.
Selecciona el evento Envíos (Mercado Pago) para recibir notificaciones, que serán enviadas en formato JSON a través de un HTTPS POST a la URL especificada anteriormente.
Por último, haz clic en Guardar configuración. Esto generará una clave secreta exclusiva para la aplicación, que permitirá validar la autenticidad de las notificaciones recibidas, garantizando que hayan sido enviadas por Mercado Pago. Ten en cuenta que esta clave generada no tiene plazo de caducidad y su renovación periódica no es obligatoria, aunque sí recomendada. Para hacerlo, basta con cliquear en el botón Restablecer.
Si deseas obtener más información sobre cómo simular el envío de una notificación, validar su origen, o cuáles son las acciones necesarias luego de recibirlas, dirígete a Configurar notificaciones.