Flete dinámico

Importante:
Antes de comenzar el desarrollo, debes tener la aprobación de Mercado Libre.

Flete dinámico tiene el objetivo agilizar la selección de precios y plazos de flete para los vendedores con Mercado Envíos 1, y mejorar la experiencia del comprador brindándole información más precisa de los plazos del flete aplicados por cada vendedor. También, amplía el catálogo de los vendedores que cuentan con más de un centro de distribución generando un aumento en las ventas.

Contenidos

→Dinámica de integración
→Tiempo de respuesta
→Contingencia
→Contrato de la API
→Errores


Dinámica de integración

Para integrar esta funcionalidad debes disponibilizar un endpoint, en el cual Mercado Libre realizará una llamada para obtener la información del flete que se muestra en la plataforma al momento de la compra.


Tiempo de respuesta

El tiempo de respuesta del endpoint no puede superar los 400 ms. Antes de activar el endpoint, habrá varias validaciones, entre ellas, la validación de carga para evaluar el tiempo de respuesta y el resultado será compartido con el integrador. En caso de superar el tiempo límite, la integración no será aprobada y no podrá ser activada para los vendedores.

Nota:
La actual infraestructura de flete dinámico está ubicada en la región este de EE.UU. (Virginia).

Contingencia

En los casos de falla en la cotización y que el comprador no quede sin una respuesta, utilizamos como contingencia la calculadora MELI. En esta herramienta interna el vendedor carga sus tarifarios con el apoyo del asesor comercial.
La contingencia se activará en las siguientes situaciones:

  • Errores/falta de disponibilidad del integrador.
  • Tasa de timeouts muy alta (en caso de superar los 400 ms).
  • Cuando se devuelva -1 al error_code en la respuesta.

Contrato de la API

Para la creación del endpoint, deben seguirse las reglas del contrato, como se indica a continuación:

  • El nombre del endpoint estará a cargo del integrador, y solo bastará respetar el “contrato” estipulado para los request y responses.
  • En el request se encuentra apenas un ítem de un vendedor.

A continuación, se presenta la descripción de cada uno de los ítems admitidos en el payload:

destination (string)​: obligatorio. Es la información de la dirección donde el producto va ser entregado.

  • Para Brasil, Argentina y México será informado el código postal.
  • Para Chile, región/comuna, separado por "/".
  • Para Colombia, departamento/ciudad.
  • Para Uruguay, departamento/localidad.

buyer_id (string): opcional. Es el identificador del usuario que está comprando en Mercado Libre. Solo está disponible cuando el usuario que realiza la cotización está logueado en la plataforma Mercado Libre.
seller_id (string)​​: obligatorio. Es la identificación de la cuenta dentro de Mercado Libre.
item_id (string): obligatorio. Es la identificación del item registrado en Mercado Libre.
store_id (string)​​: opcional. Es la identificación de la tienda oficial dentro de Mercado Libre.
sku (string)​​: obligatorio. Es la identificación del producto al ser comprado.
quantity (int)​​: obligatorio. Es la cantidad que será comprada de un mismo item.
origin (string)​​: opcional. Es el Código Postal registrado por el vendedor.
price (float)​​: opcional. Es el precio unitario del producto multiplicado por la cantidad de ítems elegidos por el comprador, al momento de la cotización.
dimensions (object)​​: obligatorio. Es la lista de medidas de un producto.

  • length (float)​​: obligatorio. Es el largo del producto (en centímetros).
  • width (float)​​: obligatorio. Es el ancho del producto (en centímetros).
  • height (float)​​: obligatorio. Es el alto del producto (en centímetros).
  • weight (float)​​: obligatorio. Es el peso del producto (en kilogramos).
Importante:
Cuando la cantidad de ítems es mayor a 1, hay un algoritmo en el marketplace que consolida los volúmenes en la mejor combinación de dimensiones, para optimizar el espacio. En este caso, la integración debe considerar siempre los valores enviados en el POST e no hacer más ninguna multiplicación.

Ejemplo:

{  
   "destination":"13295000",
   "items":[  
      {  
         "seller_id":"89540000",
         "item_id":"MLB1246956299",
         "sku":"0001166000",
         "quantity":1,
         "origin":"02611-000",
         "price":316,
         "dimensions":{  
            "length":1,
            "height":1,
            "width":1,
            "weight":1
         }
      }
   ]
}

La respuesta debe tener la cotización correspondiente al ítem comprado.
Debe haber un máximo de 2 (dos) cotizaciones por paquete, con la leyenda Normal o Express.
Todos los valores de respuesta son obligatorios.
A continuación, se presenta la descripción de cada uno de los ítems admitidos en el payload:

packages (array)​​: Es la lista de paquetes creada por el vendedor.
items (array)​​: Es la lista de ítems dentro de un mismo paquete.

  • sku(string)​​: Es la identificación del item que será comprado.
  • seller_id(string)​​: Es la identificación de la cuenta que está vendiendo el producto. Generalmente, es una copia de la información ya dada en el request.
  • quantity (int)​​: Es la cantidad del producto que se enviará
  • stock(int)​​: Es la disponibilidad del producto en stock por CD. En el caso de que esa información no esté disponible, debe devolverse el valor -1.
  • store_id (string)​​: opcional. Es la identificación del negocio que está vendiendo el producto. Generalmente, es una copia de la información ya dada en el request.
  • error_code (int)​​: Es el código que identificará el tipo de error relacionado con el producto. La lista de los códigos admitidos será presentada en las siguientes secciones.

quotations (array)​​: Son las informaciones del flete para un ítem.

  • cost (float)​​: Es el costo real del flete. En el caso de no disponer de esa información, debe devolverse el mismo valor de price.
  • price (float)​​: Es el precio del flete que será presentado al comprador. Esta información difiere de cost, ya que existe la posibilidad de que el flete sea subvencionado parcial o totalmente (flete gratis).
  • handling_time (int)​​: Es el tiempo, en días hábiles, que se utilizará para separar y embalar el producto. Abarca todos los procesos previos al envío efectivo del paquete. En el caso de que esa información no esté disponible, debe devolverse el valor 0.
  • shipping_time (int)​​: Es el tiempo, en días hábiles, de tránsito del paquete (desde la entrada al camión hasta la entrega al comprador).
  • promise (int)​​: Es la suma de los valores de handling_time y shipping_time.
  • caption (string)​​: Es el nombre asignado a la cotización. La opción esperada es Normal.
  • service_id (int) : Es el código que identifica un servicio/carrier dentro del contexto del vendedor. Los valores válidos van de 0 a 99. Este código es único e de responsabilidad exclusivo del vendedor/integrador, siendo responsabilidad de Mercado Libre solo pasar este valor.
Importante:
En caso de ser enviado solo un dígito, será completado automáticamente con 0 a la izquierda. Y en el caso de ser enviado con más de 2 dígitos, la información no será integrada y devolverá 00 en el código del carrier.

Ejemplo:

{
    "packages": [
        {
            "items": [
                {
                    "sku": "00266983118",
                    "seller_id": "207740981",
                    "quantity": 1,
                    "stock": -1,
                    "error_code": 0,
                    "store_id": null
                }
            ],
            "quotations": [
                {
                    "cost": 66.6,
                    "price": 66.6,
                    "handling_time": 0,
                    "shipping_time": 39,
                    "promise": 39,
                    "caption": "Normal",
                    "service_id": 10
                }
            ]
        }
    ]
}


Errores

Importante:
A partir del 26 de abril, el error code 1 direccionará la cotización para contingencia.

Recuerda que los errores suceden por ítem y el objetivo no es invalidar la cotización o compra de los demás ítems cuando solo parte de ellos presentan algún tipo de problema. El porcentaje de conversión tiende a ser mayor del que invalidamos todos los ítems. Conoce los errores:

Parámetro Descripción
-1 Error interno en la aplicación del integrador y el comprador va a recibir la cotización de la calculadora MELI (contingencia).
0 Sin error.
2 CP de destino inválido.
3 Producto no disponible para el Código Postal de destino.
4 El producto escogido no existe.
o regístrate para recibir las últimas novedades sobre nuestra API