Saltar al contenido principal

Integraciones API

Encuentra la información necesaria de las integraciones vía API con Multivende.

Búsqueda

Primeros Pasos

Ver los artículos
Todo lo que debes saber sobre Integraciones API

Conéctate vía API a una o más cuentas de Merchant y automatiza operaciones con nuestra API Rest.

 

Flujo global de integraciones

Multivende actúa como el centro de gestión para el catálogo de productos de un usuario, como observamos en el diagrama más abajo. (Diagrama flujo global de integraciones)

Dentro de Multivende, los usuarios pueden realizar todas las configuraciones necesarias, como la carga de productos, gestión de stock, administración de bodegas y establecimiento de listas de precios. Con esta información, Multivende publica los productos o SKUs en los diversos marketplaces y tiendas online con los que está integrado de manera nativa.

Todo el proceso entre Multivende, los marketplaces y las tiendas online está gestionado por nuestro equipo de desarrollo. Nosotros enviamos información relevante como stock, precios, productos, estado de órdenes y documentos a los marketplaces y tiendas online.

A su vez, recibimos en Multivende los datos de ventas y los cambios de estado, como actualizaciones de órdenes y detalles sobre despachos o retiros en tienda.

Además, ofrecemos la opción de descargar etiquetas de despacho y estamos integrados de manera nativa con operadores logísticos como Chilexpress, Envíame, entre otros.

Multivende sigue un enfoque API First, lo que significa que nuestra API está disponible para que los integradores conecten sus sistemas externos. Durante el proceso de implementación, gestionamos todas las interacciones entre Multivende y la integración. (Diagrama flujo global de integraciones -  Aplicaciones)

La API permite actualizar stock, precios y productos, y también acceder a esta información desde Multivende. Asimismo, disponemos de Webhooks para proporcionar actualizaciones en tiempo real sobre cualquier cambio en los recursos habilitados en la aplicación.

Flujo_API.webp

Diagrama flujo global de integraciones 

Funcionalidades para automatizar

Toda integración de un sistema con Multivende se debe realizar con el método de autenticación Oauth2. Puedes automatizar diferentes funcionalidades con esta integración las cuales son:

  • Ordenes
    Multivende te permite administrar dentro de una misma cuenta de Merchant diferentes conexiones a un mismo canal, podrás realizar: 
    • Leer órdenes por polling: Consultar las ventas nuevas/actualizadas en un rango de fechas de forma periódica para todas tus conexiones o por conexión .
    • Actualizar estados de las órdenes de despacho: Enviar a Multivende los cambios de estados que ocurren fuera del canal de venta, actualizaciones que a su vez, Multivende enviará al canal. Por ejemplo cambios de status del pedidos, como "El pedido ha sido enviado".
    • Actualizar estados de los retiros en tienda: Enviar a Multivende los cambios de estados que ocurren fuera del canal de venta, actualizaciones que a su vez, Multivende enviará al canal. Por ejemplo cambios de status del pedidos, como "El pedido está listo para ser retirado".
  • Etiquetas
  • Documentos tributarios:
    • Leer documentos tributarios de las órdenes: Obtener los DTE (documentos tributarios electrónicos, también denominados boletas o facturas) que cargan en Multivende otras integraciones en las órdenes.
    • Cargar documentos tributarios a las órdenes: Enviar a Multivende los DTE (documentos tributarios electrónicos, también denominados boletas o facturas) para almacenarlas como un repositorio centralizado de información de la orden. A su vez, Multivende envía a los canales que tienen habilitada la carga de DTE.
  • Productos:
  • Stock:
    • Leer stock: Obtener el stock disponible de los productos según la bodega.
    • Cargar stockEnviar el stock disponible de los productos según la bodega.
  • Precios: 

 

Conexión de nuevos canales

Aplica para conectar marketplace o e-commerce que no están actualmente dentro de los canales con los que ya contamos con la integración, permitimos la conexión de nuevos canales de ventas a través de nuestra central de aplicaciones los cuales podrán realizar adicional a las funcionalidades anteriores:

  • Crear órdenes: Enviar a Multivende nuevas órdenes de compra con el detalle de precio, productos, cliente, modalidad de entrega y pagos. Las cuales al ser registradas, Multivende realiza el descuento del stock.
  • Administrar product links: Obtener desde Multivende los productos que serán publicados en el canal.
  • Cargar etiquetas de envío: Enviar a Multivende las etiquetas de envío para los paquetes de las órdenes que son despachadas por el seller en coordinación con un courier del canal.

Para conocer qué funcionalidades debes realizar en tu integración te invitamos a validar según tu tipo de sistemas las dimensiones a cubrir Dimensiones de integración.

 

Permisos

El Merchant podrá seleccionar el nivel de permisos que se le asignará a cada aplicación por medio de los scopes definidos.

Por Ejemplo: Asignar a un canal de venta el acceso a una lista de precios específica.

Manejamos múltiples bodegas y listas de precios las cuales pueden mapear según los permisos otorgados a la aplicación para la sincronización del stock y precios.

Notificaciones

Disponemos de Webhooks encargados de enviar notificaciones a la aplicación para que pueda consultar las actualizaciones de los recursos, por lo que necesitarás un desarrollo que esté escuchando nuestras notificaciones.

 

ℹ️ Información: Las integraciones hacia Multivende como son desarrolladas por parte de ustedes, deben estar soportadas con mantenimiento dado que los Canales de Venta y Multivende agregan o modifican los recursos para mejorar u optimizar dicha integración.
 

El siguiente paso que debes realizar es integrar una aplicación. Para saber cómo hacerlo, consulta el siguiente artículo.

Equipo Integraciones API Multivende

 
Más información
Pasos esenciales para Integrar tu Aplicación

En este artículo te presentamos los pasos que debes seguir para integrar una aplicación.

 

Para poder integrar una aplicación deberás:

  1. Crear tu cuenta de desarrollador, si no cuentas con una debe ser creada con un correo que no esté registrado en Multivende.
  2. Crear tu aplicación en nuestra plataforma.
     
    Vídeo del proceso
     
  3. Desarrollar la conexión entre Multivende y la aplicación y la interfaz por la cual el Merchant realizará la configuración de la comunicación, esta comunicación se realizará por medio de Oauth2.
  4. Si la aplicación es un Marketplace, lee las siguientes consideraciones.
  5. Obtener detalles de la conexión entre tu APP y la cuenta del Merchant Get app information.
  6. ¡Listo! Puedes empezar a consultar nuestra API y realizar la integración con Multivende.

Consideraciones Generales:

  1. La aplicación debe cumplir con los estándares de seguridad definidos en el siguiente artículo.

  2. Nuestras fechas están en formato UTC, se debe realizar la conversión según la zona horaria.
  3. Los datos enviados a la aplicación deben ser almacenados en su base de datos y por medio de los webhooks se notificarán los cambios para que puedan ser actualizados, por lo que no se debe realizar consultas constantes para obtener la información de algún recurso.
  4. El desarrollo debe considerar reintentos en caso de error.
  5. Una aplicación se puede relacionar a más de un Merchant.
  6. Un Merchant puede tener múltiples conexiones a la misma aplicación.
  7. No puedes tener la sesión de la cuenta desarrollador y merchant en el mismo navegador.

Consideraciones Partners:

  1. La integración debe ser estándar para que los Merchant puedan configurar rápidamente la relación entre los sistemas.
  2. Se debe generar un manual de integración que será publicado en nuestro Help Center. El cual debe contener:
    1. ¿Cómo contactarse con el área comercial para contratar el servicio?.
    2. ¿Cómo contactarse con soporte en caso de tener algún inconveniente?.
    3. Condiciones del servicio.
    4. Funcionalidades que realiza la integración.
    5. Flujo que debe realizar para habilitar la integración, con capturas de pantalla que respalden la acción indicada.
  3. Más información en el siguiente artículo recomendaciones para partners.

 

Equipo Integraciones API Multivende

 
Más información
Empezando con tu cuenta de Desarrollador: Guía Rápida

Para usar la API de Multivende, gestiona tus aplicaciones desde la cuenta de desarrollador.

 

Para crear tu cuenta de desarrollador, debes seguir los siguientes pasos:

1. Tienes que crear una cuenta a través de https://app.multivende.com/developers/signup , donde deberás ingresar los datos solicitados en el formulario:

    • Nombre de usuario.
    • Correo electrónico: Email destinado al administrador de la cuenta (se recomienda que sea el correo del equipo de TI y es posible usar un correo previamente registrado como en la cuenta de un merchant).
    • Contraseña la cual cumpla con los estándares definidos:
      • Mínimo 12 caracteres.
      • Mínimo 1 letra mayúscula y 1 letra minúscula.
      • Mínimo 1 número.
      • Mínimo 1 símbolo.

Dale click a "Continuar" y listo! Tu cuenta ha sido creada con éxito.

 

2.Si ya posees cuenta como desarrollador creada deben realizar login a través de:

https://app.multivende.com/developers/login 

 

ℹ️ Información:
Recuerda siempre validar la URL a la cual estás apuntando para acceder correctamente al ambiente de Desarrollo.

 

Equipo Integraciones API Multivende

 
Más información
Instrucciones para crear y configurar tu Aplicación

Debes registrar la app en tu cuenta de desarrollador para integrarla vía API con otro sistema.

 

A continuación, te mostramos los pasos para crear la aplicación en Multivende:

1. Ingresa al menú de aplicaciones, donde se mostrarán todas tus aplicaciones creadas en Multivende y presiona el botón Crear.

Crear_aplicacio_n_-_2.png

2. Ingresa los datos de tu aplicación.

  • Nombre: Nombre de tu aplicación para reconocerla en tu listado de aplicaciones.
  • Código: Código para asociar la aplicación. Debe ser único en todo el sistema, por lo que debes seguir la nomenclatura “empresa_nombredelsistema_pais_version”.
  • Nombre público: Nombre que se muestra a los merchants en su listado de aplicaciones. Debe ser único en todo el sistema, por lo que debes seguir la nomenclatura “Empresa + nombre del sistema + país + versión”.
  • Visibilidad: 
    • Público: Se listará tu aplicación para que los merchants puedan seleccionar tu app y asociarla a su cuenta.
    • Privado: No se listará en el pull de aplicaciones disponibles para integrar.
  • URL de destino: Página a la que enviaremos a los merchant para que se realicen el OAuth2.
  • URL de marketing: Página donde se mostrará tu publicidad.
  • Descripción.
  • Descripción pública: Debes detallar las funcionalidades que tiene tu integración, quedará disponible para que el merchant pueda visualizarla.
  • Scopes: Permisos que debe otorgar el merchant para que la aplicación funcione correctamente. Puedes encontrar más detalles en el artículo dedicado a los scopes.
  • Redirect URL: URL a la que redireccionaremos luego de que el merchant otorgue los permisos necesarios.
  • Webhooks: Notificaciones a las que debe estar suscrita la aplicación para que funcione correctamente. Puedes encontrar más detalles en el artículo de webhooks.
  • Callback URL: URL a la que enviaremos el POST de la notificación.

3. Carga el logo de tu aplicación. Recuerda que esta debe cumplir con el formato de 45x45 px.

4. ¡Listo! Tu aplicación se ha creado con éxito.

ℹ️ Información:
Para solicitar la aprobación, debes levantar un ticket al equipo de API solicitando la autorización de esta misma, envíanos el "ClientId" (en formato texto) que puedes encontrar en el listado de aplicaciones.
Tu solicitud pasará por un proceso de validación. Te informaremos por el ticket
cuando la aprobación sea confirmada y tu aplicación esté lista para usar los
servicios.

 

Crear aplicación - 1

 

 

Equipo Integraciones API Multivende

Más información
API Mutivende (Postman)

Conoce más sobre nuestra API y accede a su documentación disponible en Postman en este artículo.

 

Multivende Integration Services (MIS) permite a los clientes o aplicaciones de terceros interactuar con la información del usuario de forma estándar, así como diferentes aspectos de la cuenta de los usuarios.

Puedes comenzar a probar la integración usando una cuenta con {{base_url}} que apunte a la siguiente URL.

https://app.multivende.com

Recuerda que nuestra comunicación utiliza HTTPS solo con TLS>= 1.2

 

En el siguiente enlace, podrás consultar el detalle de nuestra API, la cual se encuentra documentada en Postman para que puedas descargar la colección y realizar pruebas a través de la herramienta..

 

Equipo Integraciones API Multivende

Más información
Cómo crear una cuenta de pruebas en Multivende

Prueba Multivende creando una cuenta gratuita y conoce sus funciones antes de usarla en tu negocio.

 

Paso 1: Accede al Sitio Web de Multivende

  1. Visita el sitio web oficial de Multivende: www.multivende.com.
  2. En la página principal, busca la opción que dice "Crear Cuenta". Podrás encontrar esta opción en la parte inferior de la página.

Paso 2: Completa el Formulario de Registro

  1. Rellena tus datos personales: Para crear una cuenta de prueba, deberás proporcionar algunos datos básicos, tales como:

    • Nombre de usuario: (Utilizar la siguiente nomenclatura "nombreEmpresa_test")
    • Dirección de correo electrónico (asegúrate de usar una válida)
    • Contraseña segura.
      • Requisitos para la contraseña:
        • Mínimo 12 caracteres.
        • Mínimo 1 letra mayúscula y 1 letra minúscula.
        • Mínimo 1 número.
        • Mínimo 1 símbolo.
        • No puede contener el nombre de usuario.
    • Nombre de la empresa.
    • Selecciona tu actividad principal. (Retail, venta mayorista, etc...)
    • Selecciona tu país.
    • Número de telefono. (No olvides incluir el código de area)
  2. Completa el reCAPTCHA.

  3. Enviar el formulario: Haz clic en el botón "Crear Cuenta".

Paso 3: Inicia Sesión en tu Cuenta

  1. Una vez verificada tu cuenta, regresa al sitio de Multivende.
  2. En la parte superior derecha, haz clic en "Acceder".
  3. Ingresa tu correo electrónico y la contraseña que usaste durante el registro.

Paso 4: Explora las Funcionalidades

Con tu cuenta de prueba ya activa, podrás explorar todas las características que Multivende ofrece, como:

  • Crear productos.
  • Crear bodegas.
  • Cargar stock.
  • Cargar precios.
  • Crear ventas.
  • Administrar inventarios.
  • Probar opciones de pago y envío.
  • Entre otras...

 

¿Te gustaría aprender más sobre cómo sacar el máximo provecho a tu cuenta de prueba?
Te invitamos a visualizar nuestro Workshop del Funcionamiento de la plataforma, donde te explicaremos detalladamente cómo utilizar cada funcionalidad y resolveremos todas tus dudas.

 

Paso 5: Contacta Soporte si tienes preguntas

Si tienes algún problema durante el registro o necesitas asistencia adicional, puedes contactar con el equipo de soporte de Multivende a través de las opciones de ayuda en línea o contacto que se encuentran en el sitio.

Si necesitas más detalles de como contactar al equipo de Integraciones API, puedes ver más detalles en el siguiente artículo:

 

Equipo Integraciones API Multivende

 

 

Más información

Proceso de autorización

Ver los artículos
Configuración de Autenticación OAuth2: Todo lo que necesitas saber

Configura OAuth2 fácilmente y asegura tus datos, mejorando la protección y la experiencia del usuario.

El método de autenticación utilizado para las integraciones es OAuth2, ya que ofrece una serie de beneficios clave, por ejemplo:

  • Esta optimizado para aplicaciones del lado del servidor.
  • El código fuente no se expone públicamente.
  • Mantiene la confidencialidad del Client Secret.

¿Qué es OAuth2?

Es un marco de autorización que permite a las aplicaciones obtener acceso limitado a cuentas de usuario en un servicio HTTP como Google, Facebook, GitHub, entre otros. 

¿Cómo funciona?

Funciona delegando  la  autenticación  del usuario (Merchant) al servicio que aloja la cuenta (Multivende) y autorizando a las aplicaciones de terceros a  acceder  a  los  datos  de  la  cuenta  del Merchant seleccionando los permisos que desea otorgar.

Roles

  • Propietario del recurso - Merchant
  • Cliente - Aplicación
  • Servidor de recursos - Multivende 
  • Servidor de autorización - Multivende

 

  • Proceso de Autorización

1. El Merchant ingresa al sitio web de la aplicación y genera la solicitud de autorización a Multivende.

2. Aplicación redirecciona al Merchant a Multivende enviando por parámetro en la URL:

  • "response_type" = code.
  • "client_id" = Client ID.
  • "redirect_uri" = redirect_uri (Ingresada previamente al crear la aplicación en Multivende).
  • "scope"= scopes (Ingresado(s) previamente al crear la aplicación en Multivende).

Ejemplo:

https://app.multivende.com/apps/authorize?response_type=code&client_id=00000000000&redirect_uri=asd&scope=read:checkouts

 

3. El Merchant selecciona los permisos (scopes) a autorizar para la aplicación. Mas detalles en el artículo Scopes.

4. Multivende genera el código de autorización y redirige al redirect_uri. Enviando:

  • code(Código de autorización)

5. Aplicación solicita el access token a Multivende por el endpoint Authenticate OAuth2 Enviando: 

    • client_id.
    • client_secret.
    • grant_type: 'authorization_code'.
    • code.

6. Multivende valida que el authorization code entregado no haya expirado y retornar el access token. La aplicación recibe:

    • token
    • expiresAt
    • refreshToken
    • refreshTokenExpiresAt
    • scopes
    • MerchantId
    • OauthClientId
    • Response:
{
  "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "status": "created",
  "OauthClientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "CreatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "UpdatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "OwnerId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "scopes": {
    "read:products": true,
    "write:products": true,
    "read:stocks": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:stocks": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "read:prices": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:prices": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "read:checkouts": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:checkouts": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "read:product_links": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:product_links": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "manage:checkouts": true,
    "manage:product_links": true
  },
  "expiresAt": "2021-03-03T01:45:34.958Z",
  "refreshToken": "rt-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "refreshTokenExpiresAt": "2021-03-04T19:45:34.958Z",
  "updatedAt": "2021-03-02T19:45:34.000Z",
  "createdAt": "2021-03-02T19:45:34.000Z",
  "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
" }

Se ilustra a continuación en el diagrama del proceso de autorización:


image (6)-1

Diagrama del proceso de autorización

 

  • Proceso para actualizar el token

 Para generar un nuevo token se debe solicitar el endpoint Refresh token OAuth2 enviando:

  • refresh_token: Generado en el paso anterior. (Proceso de Autorización)
  • client_id.
  • client_secret.
  • grant_type: 'refresh_token'.

Retorna dentro del response:

  • token.
  • expiresAt.
  • refreshToken.
  • refreshTokenExpiresAt.
  • scopes.
  • MerchantId.
  • OauthClientId.

  • Response:
{
  "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "status": "created",
  "OauthClientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "CreatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "UpdatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "OwnerId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "scopes": {
    "read:products": true,
    "write:products": true,
    "read:stocks": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:stocks": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "read:prices": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:prices": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "read:checkouts": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:checkouts": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "read:product_links": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "write:product_links": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": true
    },
    "manage:checkouts": true,
    "manage:product_links": true
  },
  "expiresAt": "2021-03-03T01:45:34.958Z",
  "refreshToken": "rt-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "refreshTokenExpiresAt": "2021-03-04T19:45:34.958Z",
  "updatedAt": "2021-03-02T19:45:34.000Z",
  "createdAt": "2021-03-02T19:45:34.000Z",
  "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
" }

 

Diagrama proceso de refrescado del token:

Diagrama proceso de refrescado

Importante

  • Cada vez que el Merchant otorgue permisos a la aplicación se genera una nueva conexión entre la aplicación y la cuenta del Merchant la cual no sustituye las conexiones anteriores. Por lo que si tu aplicación solo permite una conexión, el Merchant deberá eliminar las conexiones que no de desean usar.
  • Se debe encriptar con un algoritmo de clave simétrica el token y refresh token antes de almacenarlo en la base de datos.
    • Y se debe seguir los protocoles establecidos en nuestra sección de Seguridad.
  • Tiempos de caducidad:
 

Caducidad

Usos

authorization code

24 horas

1 sola vez

token

6 horas

indefinido

refreshToken

48 horas

1 sola vez

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Todo lo que necesitas saber sobre Webhooks: Configuración y Uso

Notificaciones en tiempo real de eventos en Multivende enviadas a tu app vía Callback URL.

 

Cuando se produce un evento en Multivende, se envía una solicitud HTTPS POST a la URL de devolución de llamada (Callback URL) por cada una de las apps de integración que están suscritas a los webhooks. A partir de las notificaciones se puede usar para desencadenar reglas o procesos específicos de la aplicación.

De esta manera, las apps resultan más eficientes, porque identifican cuando se produce un cambio en tiempo real, y, entonces, puede hacer las solicitudes periódicas en un rango de tiempo más amplio a la API para obtener el contenido actualizado.

 

Los webhooks disponibles son los siguientes:

  • Stock: Se notificará los cambios del stock de una versión de un producto por bodega.
  • Products: Se notificará que hay un cambio en los detalles o un nuevo producto y sus versiones.
  • Product links: Se notificará que hay un cambio en el estado de sincronización del producto con el canal.
  • Checkouts: Se notificará que hay una nueva venta, cambios de estados, cambio en el detalle de la venta.*
  • Prices: Se notificará los cambios en los precios de una versión de un producto por lista de precio.
  • Delivery Orders: Se notificará los cambios de estados en las entregas con despacho a domicilio de una venta.
  • Pick Up Orders: Se notificará los cambios de estados en las entregas con retiro en tienda de una venta.

Ejemplo de notificación cambio de checkouts:

{
"CheckoutId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"MerchantId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"MarketplaceConnectionId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"MerchantAppId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"OauthClient":{
"_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"client_id":"99631xxxxxxx"
},
"resource":"checkouts",
"attemps":1,
"received":"2021-04-08T19:55:07.061Z"
}

Más ejemplos de notificaciones (link)

⚠️ Advertencia: Si al consultar el detalle de la venta con el CheckoutId el response es con status 404, se debe a que se trata de una venta que presentó error en el registro de Multivende la cual no queda registrada.

Importante:

  • Recomendamos no procesar la notificación (Webhooks) cuando esta se recibe en tu sistema, sino realizarlo de forma asíncrona, implementando un sistema de colas para el procesamiento de las notificaciones.
  • Guarda el JSON directamente en algún lugar.
    • Por ejemplo Redis o alguna BBDD.
  • El Callback URL se registra al momento de crear la aplicación (Crear tu aplicación).
    • El Callback URL debe poseer certificado SSL válido (HTTPS).
    • El Callback URL no debe poseer validación de token.
    • El tiempo de respuesta de la CallbackURL debe ser menor a 6 segundos.
  • Los Webhooks son infinitos, los costos de su operación es por parte de ustedes como desarrolladores.
  • Por seguridad deben agregar que solo reciban Request de nuestra IP como Multivende.
  • Los webhooks se deben complementar con un polling para disminuir la probabilidad de pérdida de datos.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Scopes en profundidad: Guía para configuración y uso Efectivo

Permisos que otorga el Merchant para que la app acceda solo a los datos de los scopes autorizados.

 
Estos se pueden otorgar a nivel global o seleccionar un recurso específico perteneciente al alcance. En el JSON del scope podrá encontrar el detalle de acceso según el recurso asociado, se indica con “true” o “false” si la aplicación tiene habilitado ese permiso:
  • “all”: La aplicación tendrá permiso a todos los recursos asociados a ese scope.
  • “xxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx”: La aplicación tendrá permiso al _id del recurso asociado al alcance.

Por ejemplo:

El Merchant otorga el alcance “read: stock”. Como el stock varia según la bodega, el Merchant puede seleccionar otorgar acceso a todas sus bodegas o a una/varias bodegas específicas. 

  • Permiso encendido para leer el Stock de Todas las sucursales y bodegas:

Repsonse:

{
  "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "status": "created",
  "OauthClientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "MerchantAppId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "CreatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "UpdatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "OwnerId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "scopes": {
    "read:stocks": {
      "all": true
    }
  },
  "expiresAt": "2024-10-15T19:57:26.468Z",
  "refreshToken": "rt-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "refreshTokenExpiresAt": "2024-10-17T13:57:26.468Z",
  "updatedAt": "2024-10-15T13:57:26.000Z",
  "createdAt": "2024-10-15T13:57:26.000Z",
  "token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXX........."
}

Si el merchant otorga permisos "all", deberá consultar el endpoint correspondiente según sea el caso para obtener el listado de todos los recursos.

  • Permiso para acceder solo a una bodega o sucursal:

Response:

{
"_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"status": "created",
"OauthClientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"MerchantAppId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"CreatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"UpdatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"OwnerId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"scopes": {
"read:stocks": {
"all": false,
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": false,
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX1234": true //Bodega con acceso
},
}
"expiresAt": "2024-10-15T19:57:26.468Z",
"refreshToken": "rt-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"refreshTokenExpiresAt": "2024-10-17T13:57:26.468Z",
"updatedAt": "2024-10-15T13:57:26.000Z",
"createdAt": "2024-10-15T13:57:26.000Z",
"token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXX........."
}

En este caso en el json del scope el valor del campo “all” es “false” por lo que la aplicación no tiene acceso a todas las bodegas. Pero tiene acceso a la bodega con id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX1234".

  • Sin permiso para leer stock de ninguna sucursal o bodega:

Response:

{
  "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "status": "created",
  "OauthClientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "MerchantAppId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "CreatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "UpdatedById": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "OwnerId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "scopes": {
    "read:stocks": {
      "all": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": false,
      "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX1234": true // Bodega con acceso
    }
  },
  "expiresAt": "2024-10-15T19:57:26.468Z",
  "refreshToken": "rt-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "refreshTokenExpiresAt": "2024-10-17T13:57:26.468Z",
  "updatedAt": "2024-10-15T13:57:26.000Z",
  "createdAt": "2024-10-15T13:57:26.000Z",
  "token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXX........."
}

 

Tipos de scope:

  • Read: Otorga permisos de solo lectura para el scope seleccionado.
  • Write: Otorga permisos de escritura para el scope seleccionado.
  • Manage: Otorga permisos para administrar(lectura/escritura) los recursos del scope seleccionado de forma global, no permite seleccionar por recurso.
ℹ️ Importante: El permiso de manage:checkouts es exclusivamente para aplicaciones que integran canales de ventas.

Los diferentes scopes que tenemos disponibles son los siguientes:

  • Permisos para consultar/escribir los productos, sus versiones, categorías, color, talla, entre otros. Se otorga acceso global. 
      •  read:products
      • write:products
  • Permisos para consultar/escribir el stock de los productos según las bodegas. Se puede otorgar acceso a global o segmentado.
      • read:stocks
      • write:stocks
  • Permisos para consultar/escribir el precio de los productos según las listas de precios. Se puede otorgar acceso a global o segmentado.
      • read:prices
      • write:prices
  • Permisos para consultar/escribir/administrar las ventas de los diferentes canales de venta. Se puede otorgar acceso a global o segmentado.
      •  read:checkouts
      • write:checkouts
      • manage:checkouts Este scope se debe habilitar solo para las aplicaciones que son canales de venta.
  • Permisos para consultar/escribir/administrar la asociación de una versión de un producto a los diferentes canales de venta. Se puede otorgar acceso a global o segmentado por canal.
      • read:product_links
      • write:product_links
      • manage:product_links Este scope se debe habilitar solo para las aplicaciones que son canales de venta.
  • Permisos para consultar/escribir/administrar las bodegas que tiene creadas el merchant. Se puede otorgar acceso a global o segmentado.
      • read:warehouses
      • write:warehouses
      • manage:warehouses

  • Permisos para consultar/escribir/administrar los clientes que tiene creados el merchant. Se puede otorgar acceso a global.
      • read:clients
      • write:clients
      • manage:clients

  • Permisos para consultar/escribir en las conexiones con couriers que tiene el merchant creada . Se puede otorgar acceso a global o segmentado.
      • read:couriers
      • write:couriers

  • Permisos para consultar los canales que tiene creados el merchant. Se puede otorgar acceso a global o segmentado.
      • read:channels
  • Permisos para generar etiquetas de despacho desde los canales de ventas que permiten esta funcionalidad.
      • read:channels
      • read:checkouts
      • write:checkouts

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
¿Cómo generar authorization code sin interfaz gráfica?

En caso de no contar con una interfaz gráfica para realizar la conexión de la aplicación con la cuenta del Merchant igualmente puede generar tu código de autorización, primero debes ingresar a tu cuenta de Desarrollador, dirigirte a "Aplicaciones", luego a "Listado de aplicaciones" y hacer clic en la acción del "Lápiz" (Editar).

Dentro de la configuración de la aplicación podrás visualizar la opción “Agregar cuentas de merchant”, la cual se encuentra debajo de “Visibilidad”.

Importante, esto solo se puede realizar una vez tengas tu aplicación autorizada.

 

Una vez dentro, debes insertar el MerchantId en el recuadro y hacer click sobre el botón guardar.

Ahora el Merchant podrá visualizar tu aplicación en el listado de aplicaciones de la vista de Merchants.

 

Para esto, el Merchant debe ingresar a la plataforma, dirigirse a "Aplicaciones" luego a "Listado de aplicaciones".

Aquí veremos un listado de aplicaciones certificadas de Multivende, se debe hacer scroll hasta el final de la página en donde dice "Listado de aplicaciones propias no certificadas", debes hacer clic en "Ver más" en la aplicación a la cual se desea generar el authorization code, donde el Mrechant podrá otorgar los permisos según lo requiera.

Seguido a esto se debe seleccionar la opción "Generar authorization code", aquí el Merchant podrá brindarle permiso (Scopes) a los datos seleccionados y establecer un nombre para la conexión con la aplicación.

Válida que la información esté correcta y listo, el código de autorización será generado y podrás continuar con el proceso de autenticación mediante Oauth2

 

Podrás ver el proceso en el siguiente video:

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Cómo generar un nuevo Código de Autorización en Multivende sin reconectar la aplicación - Guía paso a paso

 

Para generar un nuevo código de autorización de una aplicación ya conectada a la cual se le expiró el refreshToken o algún problema similar; lo puedes realizar sin generar una nueva conexión de la aplicación en Multivende. Para ello debes seguir los siguientes pasos.

 

Primero, el Merchant debe ingresar a la plataforma de Multivende, seguido a esto hará clic a la opción "Aplicaciones" la cual desplegará "Listado de aplicaciones".

Aquí el Merchant podrá ver todas las aplicaciones que tenga conectadas en su cuenta.

 

  • Se debe hacer click sobre la acción del lápiz en la aplicación en concreto.

 

  • Luego "Generar código de autorización

 

  • Y listo, se ha generado el código de autorización para continuar con tu flujo de autenticación.

 

Puedes ver los detalles en el siguiente vídeo:

 

Importante

  • El código de autorización solo se genera al principio del flujo, luego debes renovar tu token con el refreshToken. Solo en los casos que el refreshToken expire u algún problema similar, se puede realizar este proceso.
  • La obtención del código de autorización es un proceso manual que se realiza únicamente desde la cuenta del Merchant. Este proceso no puede ser automatizado debido a que requiere confirmación por parte del Merchant los permisos a otorgar a la aplicación.

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
OAuth2 en Multivende: Cómo obtener y renovar tu token de acceso

El proceso de autenticación mediante OAuth2 es un paso crucial para garantizar que las aplicaciones de terceros puedan interactuar de manera segura con una API, garantizando que solo los usuarios autorizados puedan acceder a ciertos recursos. Sin embargo, en este proceso, pueden surgir varios errores que impiden obtener o renovar el token de acceso. A continuación, te explicamos los pasos involucrados en este proceso, los posibles errores que podrías enfrentar y cómo solucionarlos.

Proceso de autenticación con OAuth2

Cuando un merchant entrega el código de autorización, se inicia el proceso de autenticación mediante OAuth2. El primer paso consiste en enviar los parámetros necesarios al Endpoint Authenticate OAuth2 utilizando una solicitud HTTP POST.

Ejemplo de solicitud:

curl --location -g '{{base_url}}/oauth/access-token' \
--header 'cache-control: no-cache' \
--header 'Content-Type: application/json' \
--data '{
  "client_id": 00000000000,
  "client_secret": "NMV6TupxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpR3YNW",
  "grant_type": "authorization_code",
  "code": "ac-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx"
}
'

En este punto, la API responderá con un objeto que contiene el token, refreshToken y la duración de su validez.

Respuesta exitosa:

 
{
  "_id": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "status": "created",
  "OauthClientId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "MerchantId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "CreatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "UpdatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "OwnerId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "scopes": { ... },
  "expiresAt": "2021-03-03T01:45:34.958Z",
  "refreshToken": "rt-xxxxxxxx-162b-xxxx-xxxx-xxxxxxxxxxxx",
  "refreshTokenExpiresAt": "2021-03-04T19:45:34.958Z",
  "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

El token tiene una validez de 6 horas, mientras que el refreshToken tiene una validez de 48 horas y puede ser utilizado una única vez para renovar el acceso.

Renovación del Token mediante el Refresh Token

Cuando el token está cerca de expirar, se debe utilizar el Endpoint Refresh Token OAuth2 para obtener un nuevo token y un nuevo refreshToken. Esto debe realizarse antes de que el token original caduque, idealmente cuando queda aproximadamente 1 hora de vida.

Ejemplo de solicitud para renovar el token:

curl --location -g '{{base_url}}/oauth/access-token' \
--header 'cache-control: no-cache' \
--header 'Content-Type: application/json' \
--data '{
  "client_id": 00000000000,
  "client_secret": "NMV6TupxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpR3YNW",
  "grant_type": "refresh_token",
  "refresh_token": "rt-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx"
}
'

 

Respuesta exitosa:

{
  "_id": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "status": "created",
  "OauthClientId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "MerchantId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "CreatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "UpdatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "OwnerId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
  "scopes": { ... },
  "expiresAt": "2021-03-03T01:45:34.958Z",
  "refreshToken": "rt-xxxxxxxx-xxxx-4fd9-xxxx-8d9a818bef2a",
  "refreshTokenExpiresAt": "2021-03-04T19:45:34.958Z",
  "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Este proceso puede ser automatizado para que, cuando el token esté cerca de su expiración (por ejemplo, con 5 horas de antelación), se realice la renovación automática utilizando el refreshToken. De este modo, se garantiza la continuidad en el flujo de autenticación sin interrupciones.

Errores Comunes

  1. Token Expirado o Invalidado: Si el token ha expirado y no se ha renovado a tiempo, el proceso debe reiniciarse desde el principio. Esto implica que el merchant deberá generar un nuevo código de autorización manualmente desde la configuración de la aplicación.

  2. Refresh Token Expirado o No Utilizado: Si el refreshToken ha expirado o no ha sido utilizado dentro de su período de validez, el proceso también debe reiniciarse desde cero, lo que requerirá que el merchant obtenga un nuevo código de autorización manualmente.

  3. Error en la Solicitud de Renovación: Si hay errores en la solicitud de renovación del token (por ejemplo, errores de red, parámetros incorrectos, etc.), asegúrate de validar los datos enviados, como el client_id, client_secret y el refresh_token.

  4. Error en la Respuesta del Servidor: Si la API devuelve un error, revisa el código de estado HTTP y el mensaje de error para identificar la causa. Algunos errores comunes incluyen falta de permisos o problemas de autenticación.

Resumen

Para gestionar adecuadamente la autenticación OAuth2, es importante realizar lo siguiente:

  • Obtener y gestionar el token y el refreshToken de manera eficiente.

  • Automatizar la renovación del token antes de su expiración.

  • Asegurarse de que el refreshToken se use dentro de su período de validez.

  • Si el refreshToken expira o no es válido, reiniciar el proceso de autenticación obteniendo un nuevo código de autorización manualmente.

Este proceso garantiza que las interacciones con la API sean seguras y fluidas, manteniendo el acceso autorizado de manera continua y sin interrupciones.

 

Más información

Guía de acciones según tu tipo de integración

Ver los artículos
¿Tu integración es un ERP?

Conoce el proceso para interactuar de forma correcta con la API de Multivende y aprovechar las herramientas disponibles para ERP's

Para realizar tu interacción de forma correcta con la plataforma y permitir que tu integración ERP pueda sacar el máximo provecho de las herramientas que brindamos, es necesario iniciar aprendiendo información básica sobre nuestra API, para eso te pedimos leer 5 artículos básicos sobre la integración:

Artículo 1 - Lo que debes saber sobre Integraciones API - (Requerido)

Detallamos cuáles son los pasos para que tu aplicación pueda conectarse a la cuenta del merchant y poder empezar a consultar sus datos.

Artículo 2 - API Mutivende - Postman(Requerido)

Conocerás más sobre nuestra API y su documentación en Postman.

Artículo 3 - ¿Cómo cargar stock vía API?(Requerido)

Encontrarás la información para realizar la sincronización de stock a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “stock”, te recomendamos dejar un cron que sincronice los stocks por lo menos una vez al día. Además de una opción para que el usuario pueda ejecutar el proceso manualmente.

Artículo 4 - Actualización de Precios(Opcional)

Podrás obtener la información para realizar la sincronización de precios a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “prices”.

Artículo 5 - ¿Cómo crear productos desde tu sistema a Multivende?(Opcional)

Con información básica (SKUs, Nombre, Variantes)(Recomendado): Te dejamos los endpoint disponibles:

Artículo 6 - Registro de ventas desde Multivende: Instrucciones para integrarlas en tu sistema(Requerido)


Conocerás cómo obtener las ventas e iniciar el proceso de logística. Este es un flujo complementario a los webhooks para repasar las ventas en un rango de fechas y horas dadas, se recomienda:

  • Registrar el _id de la venta.
  • Registrar la fecha de la venta en el canal "soldAt".
  • Registrar la fecha de última actualización de la venta en Multivende "updatedAt" para que puedas identificar si la venta ha sido modificada desde la última vez que la obtuviste.
  • Luego de registrar la venta por primera vez se envía el stock actualizado de los productos en ella.

Artículo 7 - ¿Cómo enviar Documentos Tributarios a Multivende? (Requerido)

  • Detallamos cómo realizar la carga de los documentos electrónicos a las ventas.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Tu integración es un OMS?

Conoce el proceso para interactuar de forma correcta con la API de Multivende y aprovechar las herramientas disponibles para tu integración OMS.

Para realizar tu interacción de forma correcta con la plataforma y permitir que tu integración OMS pueda sacar el máximo provecho de las herramientas que brindamos, es necesario iniciar aprendiendo información básica sobre nuestra API, para eso te pedimos leer 8 artículos básicos sobre la integración:

Artículo 1 - Todo lo que debes saber sobre Integraciones API(Requerido)

Detallamos cuáles son los pasos para que tu aplicación pueda conectarse a la cuenta del merchant y poder empezar a consultar sus datos.

Artículo 2 - API Mutivende - Postman(Requerido)

Conocerás más sobre nuestra API y su documentación en Postman.

Artículo 3 - Registro de ventas desde Multivende: Instrucciones para integrarlas en tu sistema(Requerido)

Conocerás cómo obtener las ventas e iniciar el proceso de logística. Este es un flujo complementario a los webhooks para repasar las ventas en un rango de fechas y horas dadas, se recomienda:

    • Registrar el _id de la venta.
    • Registrar la fecha de la venta en el canal "soldAt".
    • Registrar la fecha de última actualización de la venta en Multivende "updatedAt" para que puedas identificar si la venta ha sido modificada desde la última vez que la obtuviste.
    • Luego de registrar la venta por primera vez se envía el stock actualizado de los productos en ella.

Artículo 4 -Estados de una Orden Según el Tipo de Entrega(Requerido)

Encontrarás la información para poder notificar al canal el estado de manejo de una orden.

Artículo 5 - ¿Cómo generar y consultar etiquetas de los Marketplace?(Recomendado):

Conocerás cómo obtener las etiquetas de las ventas que son despachadas por el marketplace.

Artículo 6 - ¿Cómo cargar stock vía API?(Opcional)

Encontrarás la información para realizar la sincronización de stock a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “stock”, te recomendamos dejar un cron que sincronice los stocks por lo menos una vez al día. Además de una opción para que el usuario pueda ejecutar el proceso manualmente.

Artículo 7 - Actualización de Precios(Opcional)

Podrás obtener la información para realizar la sincronización de precios a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “prices”.

Artículo 8 - ¿Cómo enviar Documentos Tributarios a Multivende? (Opcional)

Detallamos cómo realizar la carga de los documentos electrónicos a las ventas.

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Tu integración es un POS?
Más información
¿Tu integración es un PIM?

Conoce el proceso para interactuar de forma correcta con la API de Multivende y aprovechar las herramientas disponibles para tu integración PIM.

Para realizar tu interacción de forma correcta con la plataforma y permitir que tu integración PIM pueda sacar el máximo provecho de las herramientas que brindamos, es necesario iniciar aprendiendo información básica sobre nuestra API, para eso te pedimos leer 5 artículos básicos sobre la integración:

  • Artículo 4 - ¿Cómo cargar stock vía API?(Requerido)
    • Encontrarás la información para realizar la sincronización de stock a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “stock”, te recomendamos dejar un cron que sincronice los stocks por lo menos una vez al día. Además de una opción para que el usuario pueda ejecutar el proceso manualmente.

  • Artículo 5 - Actualización de Precios(Requerido)
    • Podrás obtener la información para realizar la sincronización de precios a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “prices”.
  •  

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Tu integración es un DTE?

Conoce el proceso para interactuar de forma correcta con la API de Multivende y aprovechar las herramientas disponibles para DTE's.

Para realizar tu interacción de forma correcta con la plataforma y permitir que tu integración DTE pueda sacar el máximo provecho de las herramientas que brindamos, es necesario iniciar aprendiendo información básica sobre nuestra API, para eso te pedimos leer 5 artículos básicos sobre la integración:

  • Artículo 5 - Sincronizar stock vía API (Opcional)
    Encontrarás la información para realizar la sincronización de stock a Multivende. Para hacerlo, debes hacer uso de los endpoints de la sección “stock”, te recomendamos dejar un cron que sincronice los stocks por lo menos una vez al día. Además de una opción para que el usuario pueda ejecutar el proceso manualmente.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Tu integración es un Fulfillment / WMS / TMS?

Conoce el proceso para interactuar de forma correcta con la API de Multivende y aprovechar las herramientas disponibles para tu integración Fulfillment/WMS/TMS

Para realizar tu interacción de forma correcta con la plataforma y permitir que tu integración pueda sacar el máximo provecho de las herramientas que brindamos, es necesario iniciar aprendiendo información básica sobre nuestra API, para eso te pedimos leer 6 artículos básicos sobre la integración:

  • Artículo 4 - Registro de ventas desde Multivende: Instrucciones para integrarlas en tu sistema(Requerido)
    Conocerás cómo obtener las ventas e iniciar el proceso de logística. Este es un flujo complementario a los webhooks para repasar las ventas en un rango de fechas y horas dadas, se recomienda:
    • Registrar el _id de la venta.
    • Registrar la fecha de la venta en el canal "soldAt".
    • Registrar la fecha de última actualización de la venta en Multivende "updatedAt" para que puedas identificar si la venta ha sido modificada desde la última vez que la obtuviste.
    • Luego de registrar la venta por primera vez se envía el stock actualizado de los productos en ella.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Registro de ventas desde Multivende: Instrucciones para integrarlas en tu sistema

 

Conoce las herramientas que tenemos disponibles en Multivende para que puedas registrar tus ventas desde la plataforma hacia tu sistema

Para registrar las ventas desde Multivende hacia un sistema tenemos a disposición dos herramientas:

  1. Webhooks: Son notificaciones en tiempo real que se generan cuando ocurre un evento en Multivende y se envían a la aplicación por medio del Callback_URL.
  2. Polling: Es un proceso de consulta de ventas que funciona como complemento del webhook. 

¿Cómo realizar esta implementación?

Consultar ventas

Se debe consultar las ventas de un rango de fechas cada M (Frecuencia de ejecución) horas, estableciendo lo siguiente:

  • from = fecha y hora de la última vez que se ejecutó correctamente el polling (si no se ha ejecutado, desde que fecha y hora se deben consultar las ventas).
  • to = la fecha y la hora actual.
  • M = frecuencia de ejecución (recomendamos usar M = 1 -2 horas).

Deberas usar el endpoint Get checkouts light para realizar el sondeo de las órdenes desde Multivende.

Modos de consulta según funcionalidad a integrar

  1. Sistemas que intervienen en la operación de la orden. Por ejemplo: generación de etiquetas, documentos tributarios, entre otros.
    1. _updated_at_from (buscar en fecha de última actualización en Multivende).
    2. _updated_at_to (buscar hasta la fecha de última actualización en Multivende).
    3. _marketplace_connection_id (opcional, filtra por Marketplace).

  2. Sistemas que no intervienen en la operación de la orden. Por ejemplo: reportería, herramientas de BI. 
    1. _sold_at_from (buscar en Fecha de venta en el mercado).
    2. _sold_at_to (buscar hasta la fecha de venta en el Marketplace).
    3. _sold_at_order (opcional, ordenar ASC o DESC).
    4. _marketplace_connection_id (opcional, filtra por Marketplace).

Importante: Ésta opción no es recomendada para sistemas del punto 1, ya que puede haber desfase de fechas y horas en las que el marketplace y Multivende registraron la venta, debido a validaciones en los pagos u algo similar.

 

Se pueden consultar las ventas cada M = 1 hora, por ejemplo, pasando en los parámetros a continuación:

_updated_at_from: from.
_updated_at_to: to.

Estos parámetros tienen el formato y la zona horaria en UTC, es decir: "YYYY-mm-dd hh:mm:ss".

Ejemplo:

Si la fecha actual es “2020-03-18 20:30”, el request sería de la siguiente manera:

curl --location --request GET

'http://app.multivende.com/api/m/b4bbbbbb-fff2-45b1-99989-0afc7xx32xxx/checkouts/light/p/1?_updated_at_from=2020-03-18 18: 30 & _updated_at_to = 2020-03-18 20:30 '\

--header' Autorización: Baerer eyJ0eXAiOiJKV1QiLCJhbGcixxxxxxxxxxxJ9.e ………… .. '

En donde este sería el Response:

{
"entries": [
{
  "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "status": "created",
  "verifyStatus": "verificado",
  "paymentStatus": "completado",
  "soldAt" : "2019-10-10T16: 12: 59.000Z",
  "createdAt": "2019-10-10T16: 13: 01.000Z",
  "updatedAt": "2019-10-31T22: 01: 09.000Z",
  "BillingAddressId ": null,
  " DeliveryTypeId ": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  " MerchantId ": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
},
],
  " paginación ": {
       "desplazamiento": 0,
       "limit": 50,
       "total_pages": 1,
       "current_page": 1,
       "next_page": 0,
       "previous_page": 0,
       "total_items": 11
 }
}

Recomendamos registrar en su sistema los campos updatedAt (Fecha de última actualización en Multivende), soldAt (Fecha de la venta en el canal), y "_id" (identificador de la venta en Multivende), ya que con estos campos se puede comparar en sus registros y validar si es una nueva venta o se debe actualizar.

 

Consultar detalle de venta por "_id"

Una vez se tenga el "_id" de la venta (response anterior), se consulta su detalle con el endpoint Get Checkout.

Cuando el response tiene el campo:

  • DeliveryOrdersInCheckouts: Se refiere a la venta con despachos, el cual es un arreglo que detalla toda la información de los despachos de la venta.
    • Cada despacho viene dentro de un objeto que se llama DeliverOrder. En el objeto se encuentra la dirección de despacho dentro del objeto ShippingAddress.

  • PickUpOrders: Se refiere a la venta con retiro en tienda, el cual es un arreglo que detalla toda la información del retiro en tienda para la venta.

 

Importante: 

  • Multivende mantiene la misma estructura, pero los datos pueden variar según el canal. Por ejemplo:
  • Los campos DeliveryOrdersInCheckouts y PickUpOrders son arrays dado que una venta puede tener más de un despacho o retiro en tienda asociado.

  • Una venta puede contener tanto “DeliveryOrdersInCheckouts” (Despachos) como “PickUpOrders” (Retiros en tienda) esto siempre y cuando el canal lo permita.
  • Get delivery order types: Tipos de entrega  para una orden.

Ejemplos:

1. El campo country puede tener el valor CL o Chile.
2. El campo indication puede llegar el detalle de la calle y casa y en otra venta llegar separado en el campo calle y número.

  • Entrega con despacho

Podemos consultar el detalle de la orden para tomar la data relevante para la operación logística mediante el endpoint  delivery order.

  • Entrega con retiro en tienda

Podemos consultar el detalle de la orden para tomar la data relevante para la operación logística mediante el endpoint pickup order.

  • Entrega Mixta

Se consultan ambos endpoints de acuerdo al tipo de entrega de cada producto.

 

Consideraciones importantes

  • A través de los webhooks las apps resultan más eficientes, porque identifican cuando se produce un cambio en tiempo real y entonces, puede hacer las solicitudes periódicas en un rango de tiempo más amplio a la API para obtener el contenido actualizado.
  • Los webhooks se deben complementar con un polling para disminuir la probabilidad de pérdida de datos. (Actualmente no estamos realizando re intentos que aseguren el delivery de la notificación).
  • Si al consultar el detalle de la venta con el CheckoutId el response es con status 404, se debe a que se trata de una venta que presentó error en el registro de Multivende la cual no queda registrada.
  • Deben validar siempre desde webhooks y polling que el id de la venta informado ya se encuentre registrado en tu sistema para ver si la creas o actualizas.
  • Validar para actualizar si la fecha de updateAt es diferente a la que tienes registrada.

Ventas con errores:

Es posible consultar los ids de las ventas que no se registraron en Multivende por motivos de error durante el registro, esto puede funcionar como una auditoría. Para realizar la consulta de estos ids pueden realizar un request al endpoint Get checkouts with error

La respuesta de la api dará una descripción del error que causó el no registro correspondiente de la orden. Recordar que cuando la orden es corregida, se lleva a cabo el registro de la misma con un id diferente.

{
"entries": [
{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"externalId": "XXXXXXX",
"externalContent": null,
"error": "StatusCodeError: 404 - {\"cause\":\"\",\"message\":\"Order do not exists\",
\"error\":\"order_not_found\",\"status\":404}\n at new StatusCodeError
(/app/node_modules/request-promise/lib/errors.js:32:15)\n at Request.RP$callback
[as _callback] (/app/node_modules/request-promise/lib/rp.js:77:29)\n at
Request.self.callback (/app/node_modules/request/request.js:185:22)\n
at Request.emit (node:events:513:28)\n at Request.emit (node:domain:489:12)\n
at Request.<anonymous> (/app/node_modules/request/request.js:1154:10)\n
at Request.emit (node:events:513:28)\n at Request.emit (node:domain:489:12)\n
at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1076:12)\n
at Object.onceWrapper (node:events:627:28)\n at IncomingMessage.emit
(node:events:525:35)\n at IncomingMessage.emit (node:domain:489:12)\n at
endReadableNT (node:internal/streams/readable:1358:12)\n at
processTicksAndRejections (node:internal/process/task_queues:83:21)",
"archived": "disabled",
"count": 0,
"status": null,
"eventStatus": "error",
"type": null,
"createdAt": "2021-05-22T04:29:46.000Z",
"updatedAt": "2021-05-22T04:29:46.000Z",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"MarketplaceConnectionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
},
{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"externalId": "XXXXXXX",
"externalContent": null,
"error": "StatusCodeError: 404 - {\"cause\":\"\",\"message\":\"Order do not exists\",
\"error\":\"order_not_found\",\"status\":404}\n at new StatusCodeError
(/app/node_modules/request-promise/lib/errors.js:32:15)\n at Request.RP$callback
[as _callback] (/app/node_modules/request-promise/lib/rp.js:77:29)\n at
Request.self.callback (/app/node_modules/request/request.js:185:22)\n
at Request.emit (node:events:513:28)\n at Request.emit (node:domain:489:12)\n
at Request.<anonymous> (/app/node_modules/request/request.js:1154:10)\n
at Request.emit (node:events:513:28)\n at Request.emit (node:domain:489:12)\n
at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1076:12)\n
at Object.onceWrapper (node:events:627:28)\n at IncomingMessage.emit
(node:events:525:35)\n at IncomingMessage.emit (node:domain:489:12)\n at
endReadableNT (node:internal/streams/readable:1358:12)\n at
processTicksAndRejections (node:internal/process/task_queues:83:21)",
"archived": "disabled",
"count": 0,
"status": null,
"eventStatus": "error",
"type": null,
"createdAt": "2021-05-22T04:11:37.000Z",
"updatedAt": "2021-05-22T04:11:37.000Z",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"MarketplaceConnectionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
}

 

Si se consultan los id's asociados a las ventas con error en la api de Get checkout esta dará un 404 debido a que las ventas con error no quedan guardadas en Multivende.

 

Flujo de la consulta

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Información de facturación: Cómo consultarla y entenderla

En este artículo detallamos la información de la facturación referente a una venta según el Canal.

Lo primero que debes realizar es consultar la orden enviando el ID mediante el Endpoint Get Checkout, los detalles para la información de facturación puedes obtenerla dentro de nuestros campos normalizados en Multivende, consultando dentro de "Client" donde podrás obtener todos los datos relacionados al cliente y dentro del campo "BillingAddresses" los detalles en relación a la dirección de facturación.

"Client": {
"fullName": "",
"_id": "a8e48e5c-XXXX-4dab-9ec3-XXXXXXXXXXXX",
"name": "",
"lastName": "",
"activity": null,
"contactName": null,
"comune": null,
"city": null,
"documentType": null,
"taxId": "XXXXXXXX-X",
"birthday": null,
"code": null,
"email": null,
"phoneNumber": null,
"comment": null,
"type": "person",
"tags": null,
"status": "created",
"createdAt": "2020-11-04T19:32:04.000Z",
"updatedAt": "2020-11-04T19:32:04.000Z",
"CreatedById": "af718539-XXXX-4413-8c83-XXXXXXXXXXXX",
"UpdatedById": "68a88914-XXXX-414e-9d3c-XXXXXXXXXXXX",
"ClientId": "a8e48e5c-XXXX-4dab-9ec3-XXXXXXXXXXXX",
"MerchantId": "be133293-XXXX-4f01-822a-XXXXXXXXXXXX"

"BillingAddresses": [
{
"_id": "30feddc9-XXXX-4951-816b-XXXXXXXXXXXX",
"name": "Full Name",
"address_1": "Coquimbo - IV - Coquimbo, Chile",
"address_2": "General Bartolome Blanche XXX",
"description": null,
"indications": null,
"position": 0,
"status": "created",
"importance": "principal",
"createdAt": "2023-03-10T13:02:10.000Z",
"updatedAt": "2023-03-10T13:02:10.000Z",
"CreatedById": "af718539-XXXX-4413-8c83-XXXXXXXXXXXX",
"UpdatedById": "68a88914-XXXX-414e-9d3c-XXXXXXXXXXXX",
"ClientId": "a8e48e5c-XXXX-4dab-9ec3-XXXXXXXXXXXX",
"MerchantId": "be133293-XXXX-4f01-822a-XXXXXXXXXXXX"
}
]
}
  • Para identificar la información de facturación del cliente debes consultar el campo "CheckoutBillingClients"
"CheckoutBillingClients": [
 {
   "_id": "9f1839df-XXXX-4a05-XXXX-2e4024XXXXXX",
   "name": "Multivende",
   "taxName": null,
   "taxActivity": null,
   "taxId": "XXXXXXXXX",
   "documentType": "RUT",
   "legalRepresentative": null,
   "legalRepresentativeTaxId": null,
   "email": null,
   "phoneNumber": null,
 "type": "company",
   "status": "created",
   "createdAt": "2024-01-12T12:41:08.000Z",
   "updatedAt": "2024-01-12T12:41:08.000Z",
   "BillingAddressId": "02e22a7b-7850-4204-8728-78a888ae09c7",
   "CheckoutId": "0d85a156-9c81-XXXX-XXXX-7908e8XXXXXX",
   "CreatedById": null,
   "UpdatedById": null,
   "MerchantId": "4df759c7-XXXX-4cad-XXXX-a5e954XXXXXX"
 }
],
Dentro del campo "type" se informará si corresponde a persona ("person") o compañía ("company"), pero debes tener en consideración que no todos los canales de venta informan esto, por consiguiente este campo llegaría como "person" por defecto.
 
Si necesitas obtener la información para saber si una venta corresponde a boleta o factura, actualmente esta información no la tenemos estandarizada como campo de Multivende.
Se debe tomar del "CheckoutLink" --> "externalConntent".
 
Puedes identificar el canal de venta consultando el campo "origin". A partir de allí se debe identificar la información de acuerdo a cada Marketplace:
 
  • Dafiti  y Falabella

Esta se informa dentro del campo "InvoiceRequired"

"InvoiceRequired": "false" (Boleta)

"InvoiceRequired": "true" (Factura)
  • Mercadolibre:

Se informa dentro de "remote_order_extra_billing_information --> "billing_info" --> "additional_info"

Si la orden de compra en una boleta llegará de la siguiente manera:

{
"type": "INVOICE_TYPE",
"value": "Boleta"
},

Y en caso de ser factura:

{
"type": "INVOICE_TYPE",
"value": "Factura"
},
  • Paris:

Se informa dentro del campo "originInvoiceType".

"originInvoiceType": "boleta"

"originInvoiceType": "factura"
  • Ripley:

Se informa dentro del campo "has_invoice"

"has_invoice": false (Boleta)

"has_invoice": true (Factura)
  • Shopify

Se informa dentro de los campos "CheckoutLink" --> "tags"

"tags":[
"CS_AIOD",
"CS_APPLIED_SHOPIFY_DISCOUNT",
"EXTRACYBER",
"FACTURA",
"Packed at 16:14 on marzo 29 2023",
"Packed at 16:15 on marzo 29 2023",
"PLAZA"
],
  • VTEX

Se informa dentro del campo "clientProfileData" --> "isCorporate"

"isCorporate": true (Factura)

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Cómo enviar Documentos Tributarios a Multivende?

 

Se pueden adjuntar archivos tanto las ventas (Checkouts) como los despachos (DeliveryOrder) en formato PDF con un peso máximo de 1MB, para ello se requiere identificar los respectivos _ids de la venta o del despacho.

Subir documentos electrónicos a las ventas

Primero se tiene que crear un registro en Multivende del DTE usando el siguiente endpoint Create checkout electronic billing document, dentro del body estarás enviando la siguiente información: 

Request:

curl --location -g '{{base_url}}/api/checkouts/{{checkout_id}}/electronic-billing-documents' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
"ClientId": "{{client_id}}",
"id": "XXXXXXX",
"emissionDate":"2019-03-01",
"type":"electronic_billing_electronic_bill",
"provider":"test_provider_code",
"ElectronicBillingDocumentEmitterId":"{{electronic_billing_document_emitter_id}}"
}'

Response:

{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"status": "created",
"ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"id": "8877777",
"emissionDate": "2019-03-01T00:00:00.000Z",
"ElectronicBillingDocumentEmitterId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ElectronicBillingDocumentTypeId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ElectronicBillingDocumentProviderId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CheckoutId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"updatedAt": "2019-08-29T15:26:33.000Z",
"createdAt": "2019-08-29T15:26:33.000Z"
}

 

Una vez se cree el registro del DTE, con el "_Id" del response, se adjuntan los archivos, tenemos dos endpoints que permiten realizar la carga de archivos en  pdf o base64:

 

 

La carga de los DTE desde Multivende a los canales de venta se tiene habilitado para:

  • Mercado Libre
  • Paris
  • Ripley
  • Falabella
  • Coppel
  • Walmart (Habilitado sólo para México)
  • VTEX

A continuación te detallamos algunas consideraciones a tener en cuenta en la carga de los documentos tributarios para los siguientes canales de ventas: 

Consideraciones para VTEX

  • En el caso de VTEX se envía el documento tributario al canal, solo cuando esta cargado el PDF y luego se marca la orden como enviada.

Consideraciones para Falabella

  • La creación del registro del DTE y posterior subida solo es permitida cuando la orden se encuentra en los siguientes estados:
    • "ready_to_ship",
    • "delivered",
    • "shipped".

De lo contrario el documento quedará con error de sincronización.

  • A partir del 28 de febrero de 2025, Falabella solo admite la carga del documento tributario en formato PDF, por lo que para este canal debes realizar la subida del documento en este formato.

 

Consideraciones para Walmart México

  • Deben esperar a que la orden tenga la información de facturación dentro del campo"billingClient" para poder realizar la generación del DTE, ya que, un cliente puede solicitar factura dentro de los 30 días próximos a la venta; es en ese entonces cuando deben realizar la generación del documento correspondiente.
  • En el caso de Walmart debes realizar previamente la configuración de Apolo en Multivende, en este artículo encontrarás los pasos a seguir.

Subir documentos electrónicos a los despachos

Primero se tiene que crear el registro en Multivende del DTE usando el siguiente endpoint Create delivery order electronic billing document 

Para lo que se requiere conocer:

curl --location -g '{{base_url}}/api/delivery-orders/{{delivery_order_id}}/electronic-billing-documents' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
"ClientId": "{{client_id}}",
"id": "XXXXXXX",
"emissionDate":"2019-03-01",
"type":"electronic_billing_electronic_bill",
"provider":"test_provider_code",
"ElectronicBillingDocumentEmitterId":"{{electronic_billing_document_emitter_id}}"
}'

 

Response:

{
"_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "created",
"ClientId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"id": "8877777",
"emissionDate": "2019-03-01T00:00:00.000Z",
"ElectronicBillingDocumentEmitterId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"CreatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"UpdatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"MerchantId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ElectronicBillingDocumentTypeId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ElectronicBillingDocumentProviderId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"DeliveryOrderId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"updatedAt": "2019-08-29T15:27:24.000Z",
"createdAt": "2019-08-29T15:27:24.000Z"
}

Una vez se cree el registro del DTE, con el _id del response, se adjunta como tal los archivos (.pdf, .zip, entre otros) por medio del endpoint Upload file to electronic billing document.

 

Códigos de tipos (type) permitidos para los DTEs

  • electronic_billing_electronic_invoice (Factura Electrónica)
  • electronic_billing_not_taxed_electronic_invoice (Factura Electrónica Exenta)
  • electronic_billing_electronic_bill (Boleta Electrónica)
  • electronic_billing_not_taxed_electronic_bill (Boleta Electrónica Exenta)
  • electronic_billing_not_taxed_debit_note
  • electronic_billing_not_taxed_credit_node

 

Para los Providers (proveedor)

Esta información se tiene que canalizar vía correo api@multivende.com solicitando un código de proveedor según el proveedor (generador de boletas) que estén usando. Enviando la siguiente información:

  • Sistema DTE.
  • Empresa desarrolladora de la integración.
  • Merchant ID.

Multivende genera el código y lo informa de vuelta en el correo de la solitud.

 

Para los Emisores de documentos (ElectronicBillingDocumentEmitterId)

Puedes seguir los pasos del siguiente artículo ¿Cómo crear un emisor de documentos?.  En caso de cualquier duda comunicarse con onboarding@multivende.com , ellos lo asistirán en la generación de este identificador.

Si deseas realizar este proceso via API, puedes crear el emisor de documentos mediante el endpoint Create electronic billing document emitter enviando los siguientes campos:

{
"name": "nombre asociado al emisor de documentos",
"code":"código",
"taxId":"RUT/NIT",
"taxName":"razón social"
}

*Rellena el campo código con 01111

En la respuesta del endpoint puedes identificar el _id asociado al emisor del documento electrónico, este proceso se realiza sólo una vez y el emisor de documento electrónico queda asociado a la cuenta del merchant.

 

Response:

{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"status": "created",
"name": "Test emitter",
"code": "01010",
"taxId": "76449667-3",
"taxName": "Test emitter SPA",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"updatedAt": "2019-08-28T19:58:12.000Z",
"createdAt": "2019-08-28T19:58:12.000Z"
}

 

Puedes consultar el _id del emisor de documento asociado a la cuenta de un merchant mediante el endpoint: Get electronic billing document emitters

 

Consulta de documentos electrónicos

Para consultar los documentos electrónicos de una orden puedes consultar al siguiente endpoint Get electronic billing documents of a checkout

 

Consideraciones para tipos de envío Fulfillment

Si se trata de una orden de tipo Fulfillment, recuerda que para verificar el tipo de envío debes consultar el campo "shippingMode".

shippingMode: fulfillment
  • Paris
    • El seller debe solicitar la configuración de Fulfillment a Paris, y el canal se encarga de emitir la boleta.

  • Mercadolibre:
    • Argentina, Colombia y México, el vendedor puede generar la factura.
    • Brasil y Chile, Mercado Libre siempre genera la factura.
  • Falabella
    • Falabella se encarga de la emisión de la boleta.
  • Ripley
    • Para registrar tus ventas de Fulfillment by Ripley desde Multivende, es necesario que tengas una cuenta nueva creada en Ripley. Asegúrate de tener este requisito cumplido antes de solicitar la integración. La boleta es generada por el marketplace para estas ventas.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
¿Cómo funcionan los medios de pago?

En este artículo mostramos como obtener la información del pago realizado por el comprador en la venta.

Esta información la obtenemos mediante los siguiente Endpoint que tenemos disponible dentro de nuestro Servicios de Integración de Multivende.

 

Obtener la información del pago de una venta

  • Get checkout: Adicional a obtener los detalles de una venta, tales como datos del cliente y facturación puedes encontrar los detalles del pago consultando el campo "CheckoutPayments" aquí podrás visualizar los métodos de pago utilizados en la venta.

Ejemplo Response:

"CheckoutPayments": [
     {
       "_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
       "code": "xxxxxxxxxxx",
       "amount": 59600,
       "amountPaid": 59600,
       "change": 0,
       "paymentStatus": "completed",
       "authorizationCode": null,
       "detail": null,
       "status": "created",
       "verificationStatus": "verified",
       "cardNumber": null,
       "installments": 1,
       "datePaid": null,
       "dateVerificated": null,
       "createdAt": "2021-05-10T18:31:28.000Z",
       "updatedAt": "2021-05-10T18:51:23.000Z",
       "CreatedById": null,
       "UpdatedById": null,
       "CheckoutId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
       "PaymentMethodId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
       "CurrencyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
       "MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
       "PaymentMethod": {
         "_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
         "tags": "{\n   \"requiresTransaction\": false\n }",
         "code": "_payment_methods_online_payment",
         "name": "PAYMENT_METHODS.Online_payment.Name",
         "description": "PAYMENT_METHODS.Online_payment.Description",
         "position": 12,
         "status": "created",
         "createdAt": null,
         "updatedAt": null,
         "codeTranslated": "Pago en línea"
       },
       "CheckoutPaymentLinks": [
         {
           "_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
           "externalId": "xxxxxxxxxxx",
           "transactionId": "xxxxxxxxxxx",
           "externalContent": "",
           "synchronizationStatus": "synchronized",
           "status": "created",
           "createdAt": "2021-05-10T18:31:28.000Z",
           "updatedAt": "2021-05-10T18:31:28.000Z",
           "CreatedById": null,
           "UpdatedById": null,
           "MarketplaceConnectionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
           "MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
           "CheckoutPaymentId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
         }
       ]
     }
   ]
 

Métodos de Pago

  • Get checkout payment methods: Se detallan los métodos de pago asociados a la cuenta del Merchant, enviando dentro del Request el MerchantId se listará el ID del método de pago, nombre, descripción, entre otros. Los cuales son estándar para todos los merchants de Multivende y puedes dejarlos preconfigurados al realizar la integración para homologarlos con los de la aplicación.

 

Ejemplo Response

[
 {
   "_id": "a4135228-a10c-11e6-bfdf-2c56dc130c0d",
   "tags": "{\n  \"requiresTransaction\": false\n}",
   "code": "_payment_methods_cash",
   "name": "PAYMENT_METHODS.Cash.Name",
   "description": "PAYMENT_METHODS.Cash.Description",
   "position": 0,
   "status": "created",
   "createdAt": null,
   "updatedAt": null
 },
 {
   "_id": "0f5b5e2f-a10d-11e6-bfdf-2c56dc130c0d",
   "tags": "{\n  \"requiresTransaction\": true\n}",
   "code": "_payment_methods_credit_card",
   "name": "PAYMENT_METHODS.Credit_card.Name",
   "description": "PAYMENT_METHODS.Credit_card.Description",
   "position": 1,
   "status": "created",
   "createdAt": null,
   "updatedAt": null
 },
 {
   "_id": "a41369d7-a10c-11e6-bfdf-2c56dc130c0d",
   "tags": "{\n  \"requiresTransaction\": true\n}",
   "code": "_payment_methods_debit_card",
   "name": "PAYMENT_METHODS.Debit_card.Name",
   "description": "PAYMENT_METHODS.Debit_card.Description",
   "position": 2,
   "status": "created",
   "createdAt": null,
   "updatedAt": null
 },
]

 

Actualizar información del pago de una venta

  • Update checkout payment: Te permite actualizar los detalles de un pago, no es obligatorio enviar todos los campos del cuerpo. Solo se deben enviar aquellos que necesitan ser actualizados.

Los valores permitidos para enviar dentro del campo “verificationStatus” es "verified" o "pending"

 

Nota: esta funcionalidad sólo es permitida para las integraciones que son de tipo Canal de venta, las cuales pueden notificar los estados de los pagos hacia Multivende. 

 

Ejemplo Request:

curl --location -g --request PUT '{{base_url}}/api/checkout-payments/{{checkout_payment_id}}' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
   "verificationStatus": "pending",
   "authorizationCode": 12345,
   "detail": "detail",
   "cardNumber": 1234567,
   "installments": 12
}'
 

Ejemplo Response

{
 "_id": "d14833f3-f8c0-4287-a7ba-ee375fabfc2b",
 "code": "14514653588",
 "amount": 4990,
 "amountPaid": 4990,
 "change": 0,
 "paymentStatus": "completed",
 "authorizationCode": 12345,
 "detail": "detail",
 "status": "created",
 "verificationStatus": "pending",
 "cardNumber": 1234567,
 "installments": 12,
 "datePaid": null,
 "dateVerificated": null,
 "createdAt": "2021-04-19T16:44:58.000Z",
 "updatedAt": "2021-11-10T19:23:07.000Z",
 "CreatedById": null,
 "UpdatedById": "644e493e-b3fa-4639-946e-7b47b90ad6f6",
 "CheckoutId": "60a813c9-a16f-4215-949f-d64fda865f24",
 "PaymentMethodId": "7a2f09c3-f7a2-11e7-96a2-2c56dc130c0d",
 "PaymentGatewayId": null,
 "CurrencyId": "5e402b2b-bb2e-46fd-9bda-8dd9f62d3a31",
 "MerchantId": "156bd2c4-13b9-46c0-9e91-349ec8cfeab8"
}

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
Carga de ventas de canales via API: Tutorial Completo

Luego de completar la configuración de la relación entre las plataformas y publicado los productos, se podrán registrar nuevas órdenes vía API si cuenta con los permisos necesarios para administrar las ventas de la conexión realizada.

Para poder registrar una venta se deben cumplir las siguientes condiciones:

  1. El producto debe estar registrado en Multivende.
  2. Los "id" deben ser únicos por conexión.
  3. Validar antes al momento de realizar el pago de la orden el stock.

 

A continuación, se detalla los campos que deben enviar a través del endpoint Created checkout

Detalles de los campos a enviar para crear una venta:

  • "id": Identificador único de la orden en el canal. 
  • "orderNumber": Número de orden entregado al Merchant.
  • "customerOrderNumber": Número de orden entregado al cliente.
  • "externalCreatedAt": Fecha de creación de la orden en el canal (Ver formato valido).
  • "externalUpdatedAt": Fecha de última actualización de la orden en el canal (Ver formato valido).
  • "soldAt": Fecha de venta (Ver formato valido).
  • "currencyCode": Moneda en la cual se realizó la venta (Ver valores validos).
  • "comment": Comentarios de la orden. (Opcional).
  • "net": Precio de venta total sin impuestos, descuentos y costo de envío. (Opcional).
  • "tax": Impuestos. (Opcional).
  • "total": Precio de venta total con impuestos, sin descuentos y sin costo de envío.
  •  "discounts": Array de descuentos aplicados a la venta, no se deben incluir los descuentos por item. (Opcional).
    • "detail": Detalles del descuento.
    • "discount": Valor del descuento.
    • "discountType": Tipo de descuento (Ver valores validos).
  • “externalContent”: JSON en formato string del detalle de la orden en el canal.
  • "client":
    • "id": Identificador único del cliente en el canal.
    • "documentType": Tipo de documento. (Opcional).
    • "taxId": Número de identificación nacional (Rut, pasaporte, DNI, etc).
    • "name".
    • "lastName".
    • "contactName".
    • "activity": Actividad a la que se dedica (Rubro, etc). (Opcional).
    • "birthday": Fecha de cumpleaños. (Opcional).
    • "email". (Opcional).
    • "phoneNumber". (Opcional).
    • "type": Tipo de cliente (Ver valores validos).
  • "billingClient": 
    • "name": "company or client name",
    • "taxName": "company name",
    • "taxActivity": "company activity",
    • "taxId": "document number",
    • "documentType": "document type",
    • "legalRepresentative": "legalRepresentative name",
    • "legalRepresentativeTaxId": "999999999",
    • "email": "email@mail.cl",
    • "phoneNumber": "5555555555",
    • "type": "company or person",
    • "billingAddress": 
      • "name":"company name",
      • "address_1": "address_1",
      • "address_2": "address_2",
      • "indications": "indications",
      • "description": "description",
      • "importance": "principal" 
  • "checkoutItems": Array dónde se debe enviar los ítems de la venta con el precio de venta.
        • "sku": sku del productVersion.
        • "quantity": cantidad total de ítems en la venta.
        • "unitPrice": Precio de venta total del item con impuestos, sin descuentos y sin costo de envío.
        • "net": Precio total del item sin impuestos, descuentos y costo de envío. (Opcional).
        • "tax": Impuestos. (Opcional).
        •  "discounts": Array de descuentos aplicados al item, este descuento no se debe incluir en el array de discounts de la venta.
          • "detail": Detalles del descuento.
          • "discount": Valor del descuento.
          • "discountType": Tipo de descuento (Ver valores validos).
 
  • "deliveryOrders": Array de las diferentes entregas a domicilio de una orden. En el caso que la orden no tenga despacho a domicilio se debe enviar el array vacio.
    • "id": Identificador único de la orden de despacho en el canal.
    • "externalContent": JSON en formato string del detalle de la orden de despacho en el canal.
    • "createdAt": Fecha de creación de la orden de despacho en el canal (Ver formato valido).
    • "updatedAt": Fecha de última actualización de la orden de despacho en el canal (Ver formato valido).
    • "shippingMode": Modalidad Logística. (Opcional).
    • "courierName": Nombre del courier. (Opcional).
    • "trackingNumber": Número de tracking del courier. (Opcional).
    • "trackingContent": Detalles del tracking. (Opcional).
    • "cost": Costo del despacho con impuestos.
    • "estimatedDeliveryDateFrom": Fecha inicial del rango de entrega (Ver formato valido).
    • "estimatedDeliveryDateTo": Fecha límite para entrega (Ver formato valido).
    • "effectiveDeliveryClosingDate": Fecha en que se entregó la orden de despacho (Ver formato valido, opcional).
    • "promisedDeliveryDate": Fecha de promesa de entrega al cliente (Ver formato valido).
    • "handlingDateLimit": Fecha límite de entrega al Courier (Ver formato valido).
    • "comment": Comentarios para la orden de despacho. (Opcional).
    • "deliveryOrderStatus": Estado de la orden de despacho, se detalla más adelante los valores permitidos (Ver valores permitidos).
    • "shippingAddress": Dirección donde se debe despachar la orden.
      • "address_1": Dirección.
      • "address_2": Dirección. (Opcional).
      • "neighborhood": Comuna.
      • "number": Numeración de la calle.
      • "street": Calle.
      • "country": País.
      • "state": Región.
      • "city": Ciudad.
      • "zipCode":  Código postal. 
      • "description": (Opcional).
      • "indications": Indicaciones para ubicar la dirección. (Opcional).
    • "shippingAddressReceiver": Datos de la persona que recibirá la orden de despacho.
      • "documentType": Tipo de documento. (Opcional).
      • "taxId": Número de identificación nacional (Rut, pasaporte, DNI, etc). (Opcional).
      • "name".
      • "lastName".
      • "contactName”.
      • "email”. (Opcional).
      • "phoneNumber". (Opcional).
    • "deliveryOrderItems": Array de ítems que se van a entregar en la orden de despacho indicando la cantidad y bodega donde se va a descontar el stock.
      • "sku": sku del productVersion.
      • "quantity": Cantidad de ítems a descontar de la bodega indicada.
      • "fulfilledWarehouseId": Id de la bodega donde se descontará el stock, este Id se obtiene de la configuración inicial para el mapeo de las bodegas. 
  • "pickUpOrders": Array de las diferentes entregas con retiro. En caso que la orden no tenga retiro en tienda se debe enviar el array vacio.
    • "id": Identificador único de la orden de retiro en el canal.
    • "externalContent": JSON en formato string del detalle de la orden de retiro en el canal.
    • "createdAt": Fecha de creación de la orden de retiro en el canal.
    • "updatedAt": Fecha de última actualización de la orden de retiro en el canal.
    • "cost": Costo por retiro con impuestos. 
    • "estimatedPickUpDateFrom": Fecha inicial del rango de retiro (Ver formato valido).
    • "estimatedPickUpDateTo": Fecha límite para el retiro (Ver formato valido).
    • "effectivePickUpClosingDate": Fecha en que se entregó la orden de retiro. (Ver formato valido, opcional).
    • "comment": Comentarios para la orden de retiro. (Opcional).
    • "pickUpOrderStatus": Estado de la orden de retiro, se detalla más adelante los valores permitidos (Ver valores validos).
    • "warehouseId": Id de la tienda en Multivende donde se va a retirar la orden.
    • "pickUpOrderPicker": Datos de la persona que retirará la orden de retiro.
      • "documentType": Tipo de documento. (Opcional).
      • "taxId": Número de identificación nacional (Rut, pasaporte, DNI, etc). (Opcional).
      • "name".
      • "lastName".
      • "contactName”.
      • "email”. (Opcional).
      • "phoneNumber". (Opcional).
    • "pickUpOrderItems": Array de ítems que se van a entregar en la orden de retiro indicando la cantidad y bodega donde se va a descontar el stock.
      • "sku": sku del productVersion.
      • "quantity": Cantidad de ítems a descontar de la bodega indicada.
      • "fulfilledWarehouseId": Id de la bodega donde se descontará el stock, este Id se obtiene de la configuración inicial para el mapeo de las bodegas. 
  • "checkoutPayments": Array con los pagos registrados en la orden.
    • "id": Identificador único del pago en el canal.
    • "transactionId": Número de transacción.
    • "code": Código de transacción. (Opcional).
    • "paymentStatus": Estado del pago (Ver valores validos).
    • "datePaid": Fecha de pago (Ver formato valido).
    • "amountPaid": Monto pagado.
    • "installments": Cantidad de cuotas. (Opcional).
    • "cardNumber": Número de tarjeta. (Opcional).
    • "authorizationCode": Código de autorización.
    • "detail": Detalles del pago. (Opcional).
    • "verificationStatus": Estado de verificación del pago (Ver valores permitidos).
    • "dateVerificated": Fecha cuando se verificó el pago (Ver formato valido).
    • "externalContent": JSON en formato string del detalle del pago en el canal.
    • "paymentMethodCode": Código del método de pago registrado en el mapeo inicial de configuración, se detalla más adelante los valores permitidos (Ver valores permitidos).

 

A continuación, te detallamos los valores válidos para los campos

Global

  • Formato para las fechas, todas nuestras fechas se encuentran almacenadas en formato UTC, por lo que se debe enviar las fechas siguiendo este formato “YYYY-MM-DDThh:mm:ss.sTZD”. Donde:
    • YYYY = un año de cuatro dígitos
    • MM = un mes de dos dígitos, de 01 a 12
    • DD = un día del mes de dos dígitos, de 01 a 31
    • T = un valor literal que sigue a la fecha y presenta la hora
    • hh = dos dígitos para la hora, de 00 a 23
    • mm = dos dígitos para los minutos, de 00 a 59
    • ss = dos dígitos para los segundos, de 00 a 59
    • s = uno o varios dígitos que representan una fracción decimal de un segundo
    • TZD = designador de zona horaria (Z o +hh:mm o -hh:mm)
      • Z para hora UTC
      • +hh:mm para una zona horaria local anterior a UTC
      • -hh:mm para una zona horaria local posterior a UTC
  • “currencyCode”: se debe enviar el campo “code” del mapeo realizado en la configuración inicial para la moneda a través del endpoint Get currencies

  • “verificationStatus": 
    • 'verified': Todos los pagos de la orden están verificados.
    • 'pending': Todos o algunos de los pagos aún no están verificados.
  • “paymentStatus": 
    • 'completed': Todos los pagos de la orden esta completos, cubriendo el total del valor de los ítems y el despacho.
    • 'pending': Hay por lo menos un pago pendiente para se cubra el total del valor de los ítems y el despacho.
    • 'rejected': Todos los pagos fueron rechazados.
    • 'refunded': Se solicita devolución de todos los pagos. 
  • “deliveryStatus": 
    • 'canceled': Se canceló la orden.
    • 'delivered': Se completaron todas las entregas de la orden.
    • 'not-delivered': No se entregó una de las entregas de la orden.
    • 'pending': Pendiente de por lo menos una de las entregas de la orden.

"discounts"

  • "discountType":
    • "value": Si el descuento es un monto especifico.
    • "percentage": Si el descuento aplicado es un porcentaje del valor.

“client”

  • “type”:
    • ‘person’: Persona.
    • ‘company’: Empresa.

“deliveryOrders”

  • “status”:
    • “pending”: La orden de despacho se creó y está pendiente de preparación.
    • “under_review”: La orden de despacho está en revisión para ser despachada.
    • “handling”: La orden de despacho fue tomada para preparación.
    • “ready_to_ship”: La orden de despacho esta lista para ser despachada.
    • “shipped”: La orden de despacho fue enviada.
    • “delivered”: La orden de despacho fue entregada.
    • “not_delivered”: La orden de despacho no fue entregada.
    • “cancelled”: La orden de despacho fue cancelada.
    • “reschedule”: La orden de despacho se reprogramó. 

 “pickUpOrders”

  • “status”:
    • “pending”: La orden de retiro en tienda se creó y está pendiente de preparación.
    • “handling”: La orden de retiro en tienda fue tomada para preparación.
    • “received_by_store”: La orden de retiro en tienda fue recibida por la tienda.
    • “completed”: La orden de retiro en tienda fue entregada.
    • “cancelled”: La orden de retiro en tienda fue cancelada.

 “checkoutPayments”

  • “paymentStatus":
    • 'completed': El pago fue completado.
    • 'pending': El pago está pendiente.
    • 'rejected': El pago fue rechazado.
    • 'refunded': 
    • 'cancelled': El pago fue cancelado.
  • “verificationStatus":
    • 'verified': El pago está verificado.
    • 'pending': El pago está pendiente de verificación.
  • “paymentMethodCode”: Se debe enviar el campo “code” del mapeo realizado en la configuración inicial para los métodos de pago a través del endpoint Get checkout payment methods

 

¿Cómo realizar la actualización de estados de una venta?

Desde la integración de tu marketplace, puedes realizar la actualización de los estados asociados a una venta, los cuales son los siguientes:

 

Actualización del estado del despacho

  • deliveryStatus
    • "delivered"
    • "not-delivered"
    • "cancelled"
    • "pending"

Actualización del estado del pago

  • paymentStatus
    • "completed"
    • "pending"
    • "rejected"
    • "refunded"
    • "cancelled"

Actualización del estado de verificación de la orden

  • verificationStatus
    • "verified"
    • "pending"

 

Para actualizar a la venta los estados anteriores, se debe mediante el endpoint PUT
Update checkout status enviando en la solicitud el id de la venta y en el body el o los estados a actualizar:

{
"deliveryStatus": "cancelled",
"paymentStatus": "cancelled",
"verificationStatus": "verified"
}

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Cómo administrar atributos personalizados de ventas via API
  • Grupos de atributos personalizados para las ventas:  A través de la API de Multivende puedes crear, editar o consultar estos grupos de atributos personalizados.

    • Consultar grupos de atributos: mediante el endpoint de Get Custom Attribute Sets puedes realizar la consulta de los grupos de atributos personalizados de ventas asociados a una cuenta de merchant.
    • Crear un grupo de atributos: puedes crear un grupo de atributos via API mediante el endpoint Post Custom Attribute Sets  
    • Editar un grupo de atributos: la actualización de un grupo de atributos se hace por medio del endpoint Put Custom Attribute Sets 

 

  • Atributos personalizados para las ventas: los atributos se crean dentro un grupo. A través de la API de Multivende puedes crear, editar o consultar estos atributos personalizados.

    • Consultar atributos: mediante el endpoint de Get Checkouts Custom Attributes puedes realizar la consulta de atributos personalizados de una venta para que puedas registrarlos o leerlos mediante tu integración.
    • Crear un atributo: puedes crear un atributo dentro de un grupo de atributos via API mediante el endpoint Post Chekouts Custom Attributes   
    • Actualizar un atributo: puedes actualizar la información de un atributo personalizado de la venta a través del endpoint Put Checkout Custom Attributes

 

 

Más información

Productos, Stocks y Precios

Ver los artículos
¿Cómo crear productos desde tu sistema a Multivende?

En este artículo, mostramos cómo realizar la creación de productos desde tu sistema hacia Multivende mediante nuestra API.

Para comenzar, te dejamos los Endpoints disponibles para una correcta creación de un producto desde nuestra API.

  • Get products with scroll: Obtener todos los productos de un Merchant.
  • Products: Obtener los registros de las marcas, tallas, colores u otros se debe consultar según sea el caso en la carpeta correspondiente.
  • Create product: Crear productos asociado a un merchant.
  • Update product: Permite actualizar la información del producto.
  • Atributos custom: Atributos personalizados que pueden asignar al producto.
    • Te recomendar leer el siguiente artículo en donde abordamos esto con mayor detalle.

 

  • Creación de un producto con información básica

A través de nuestra API podemos realizar la creación de un producto para ello disponemos del Endpoint Create product *, esto nos permite crear un producto a un Merchant.

Te dejamos un ejemplo para la creación de un producto enviando información básica dentro del cuerpo del mensaje, cabe destacar que debes ponerle un Nombre y configurar el SKU padre e hijo.

{
"name": "Nombre del producto",
"code": "SKU Padre",
"InventoryTypeId": "791a6654-c5f2-11e6-aad6-2c56dc130c0d",
"InternalCodeTypeId": null,
"ProductVersions": [
   {
       "status": "waiting-for-creation", (Status enviado por defecto)
       "code": "SKU Hijo",
       "isDefaultVersion": true,
       "InventoryTypeId": "791a6654-c5f2-11e6-aad6-2c56dc130c0d",
       "InternalCodeTypeId": null,
       "position": 0
   }
]
}

Tener en consideración utilizar siempre el campo “InventoryTypeId” seteado de la siguiente manera  = "791a6654-c5f2-11e6-aad6-2c56dc130c0d".

 

Una vez enviado el endpoint la API no retornará 201, indicando la creación de nuestro producto de forma exitosa, un ejemplo del response es el siguiente:

{
   "_id": "XXX33b34-XXXX-XXXX-85e2-5b55a0aXXXXXX",
   "status": "created",
   "name": "Nombre del producto",
   "InternalCodeTypeId": null,
   "code": "SKU Padre",
   "CreatedById": "d561f14f-0800-4091-8d3f-XXXXXXXXXXXX",
   "UpdatedById": "d561f14f-0800-4091-8d3f-XXXXXXXXXXX",
   "MerchantId": "bf03e4e6-53a0-4082-9476-XXXXXXXXXXX",
   "updatedAt": "2023-00-00T00:00:00.000Z", (Fecha y hora en formato UTC)
   "createdAt": "2023-00-00T00:00:00.000Z",
   "ProductTypeId": "0f381d1c-3408-11e7-8e63-XXXXXXXXXXXX",
   "ProductVersions": [
       {
           "_id": "d775b3d8-a19a-4069-8cdd-XXXXXXXXXXXX",
           "code": "SKU Hijo",
           "internalCode": null,
           "providerCode": null,
           "position": 0,
           "width": 0,
           "length": 0,
           "height": 0,
           "weight": 0,
           "status": "created",
           "createdAt": "2023-00-00T00:00:00.000Z",
           "updatedAt": "2023-00-00T00:00:00.000Z",
           "CodeTypeId": null,
           "InternalCodeTypeId": null,
           "ColorId": "4ecf5004-f721-46bf-a38a-75807491a4cb",
           "SizeId": "226a61dc-1eef-41cf-af5e-cc6aea7c75b4",
           "CreatedById": "d561f14f-0800-4091-8d3f-XXXXXXXXXXXX",
           "UpdatedById": "d561f14f-0800-4091-8d3f-XXXXXXXXXXXX",
           "InventoryTypeId": "791a6654-c5f2-11e6-aad6-XXXXXXXXXXXX",
           "ProductId": "30433b34-294f-40a6-85e2-XXXXXXXXXXXX",
           "MerchantId": "bf03e4e6-53a0-4082-9476-XXXXXXXXXXXX"
       }
   ]
}

 

Tener en consideración la lectura de los siguientes artículos, dado que una vez creado este producto puedes realizar la carga del Stock y el Precio.

 

  • Crear un producto con información completa.

Del mismo modo utilizando el Endpoint Create product * podemos crear un producto pero enviando información completa de este, ya sea color, talla, marca, etc.

Antes de comenzar a crear un producto al detalle lo primero que debes realizar es lo siguiente:

1.- Mapeo de los atributos de los productos como:

  1. Categoría.
  2. Color.
  3. Talla.
  4. Marca.
  5. Temporada.
  6. Clases de envío.
  7. Descripción.
  8. Atributos custom. 
  9. El único atributo que debe quedar configurado por defecto es el SKU (code).

Para obtener un array con todos los atributos de los productos de Multivende para un Merchant usar en endpoint Get product attributes.

 

2.- Imágenes: 

Las imágenes están clasificadas por álbum para obtener el listado de los álbumes usar el endpoint Get products picture set. (El Merchant deberá poder mapear los álbumes de la aplicación con los álbumes de Multivende).

Puedes encontrar más detalles en el artículo dedicado a la Gestión de imágenes.

*El Merchant deberá poder seleccionar cuales son los productos que cargará desde la aplicación a Multivende.

 

Configuración de atributos

Puedes encontrar el detalle de los Endpoint en la propia documentación de la API, no obstante te dejamos los que podrían ser los más relevantes:

 

  • Marcas:

    • Get Brands: Podrás obtener las marcas asociadas al Merchant.
      • Get Brands by Id: Te permite buscar una marca especifica enviando el "_id" dentro del request.
    • Post Brands: Puedes crear una marca desde la integración la cual quedará asociada al Merchant.
    • Update Brands: Te permite actualizar el nombre o la descripción de la marca.

 

 

  • Colores:

    • Get Colors:  Podrás obtener los colores asociados al Merchant.  
      • Get Colors by Id: Te permite buscar un color especifico enviando el "_id" dentro del request.
    • Post Colors: Puedes crear un color el cual quedará asociado al Merchant.
    • Update Colors: Te permite actualizar el nombre del color.

 

  • Tallas:

    • Get Sizes: Podrás buscar las tallas asociadas al Merchant. 
      • Get Size by Id: Te permite buscar una talla especifica enviando el "_id" dentro del request.
    • Post Sizes: Puedes crear un talla la cual quedará asociada al Merchant.
    • Update Sizes: Te permite actualizar el nombre y la descripción de la talla.

 

  • Temporadas:

    • Get Seasons: Podrás obtener las temporadas asociadas al Merchant.  
      • Get Seasons by Id: Te permite buscar una temporada especifica enviando el "_id" dentro del request.
    • Post Seasons: Puedes crear una temporada la cual quedará asociada al Merchant.
    • Update Seasons: Te permite actualizar el nombre de la temporada.

 

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Cómo actualizar un producto desde tu sistema hacia Multivende?

En este artículo, mostramos cómo actualizar un producto desde tu sistema hacia Multivende mediante nuestra API.

Para comenzar, te dejamos los Endpoints disponibles para una correcta actualización de un producto desde nuestra API.

  • Get products with scroll: Obtener todos los productos de un Merchant.
  • ProductsObtener los registros de las marcas, tallas, colores u otros se debe consultar según sea el caso en la carpeta correspondiente.
  • Create product: Crear productos asociado a un merchant.
  • Atributos custom: Atributos personalizados que pueden asignar al producto.

A través de nuestra API podemos realizar la actualización de un producto para ello disponemos del Endpoint Update Product.

Dentro del "Body" podrás enviar los parámetros que deseas modificar, como por ejemplo "name", "alias" o un "CustomAttributeValues".

Te dejamos un ejemplo para la actualización de un producto enviando información básica dentro del cuerpo del mensaje.

{
"name":"TEST Guantes Nike Extreme Lightweight Fitness Para Hombre",
"alias":"",
"BrandId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"model":"",
"SeasonId":null,
"description":null,
"ProductVersions":[
{
"_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"code":"NLGC4937_L",
"SizeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"ColorId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"status":"created",
"internalCode":"",
"CodeTypeId":null,
"InternalCodeTypeId":null,
"position":0,
"width":0,
"length":0,
"height":0,
"weight":0,
"Size":{
"_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"name":"L"
},
"CodeType":{
"_id":null,
"name":null,
"code":null,
"description":null,
"position":null,
"tags":null,
"status":null,
"createdAt":null,
"updatedAt":null
},
"InternalCodeType":{
"_id":null,
"name":null,
"code":null,
"description":null,
"position":null,
"tags":null,
"status":null,
"createdAt":null,
"updatedAt":null
},
"Color":{
"_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"name":"Negro"
},
"InventoryType":{
"_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"name":"INVENTORY_TYPES.Normal.Name",
"code":"_normal_inventory_type",
"description":"INVENTORY_TYPES.Normal.Description",
"position":0,
"tags":"NULL",
"status":"created",
"createdAt":null,
"updatedAt":null
},
"ProductVersionPictures":[
null
],
"CustomAttributeValues":{
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX":"L"
},
"allImages":[

],
"InventoryTypeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}
],
"ProductCategoryId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"code":"NLGC4937",
"internalCode":"",
"CodeTypeId":null,
"shortDescription":"",
"htmlDescription":"",
"htmlShortDescription":"",
"tags":[

],
"WarrantyId":null,
"ShippingClassId":null,
"CustomAttributeValues":{
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX":"negro",
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX":"xNLGC4937",
"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
},
"OfficialStoreId":null,
"InventoryTypeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"InternalCodeTypeId":null
}

Importante:

  • Recordar que siempre el campo “InventoryTypeId” debe ir establecido de la siguiente manera:
"InventoryTypeId": "791a6654-c5f2-11e6-aad6-2c56dc130c0d"
  • Dentro del body puede enviar únicamente los parámetros que deseas actualizar, el resto, puedes omitirlos o no enviarlos en la solicitud.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
Consultar stock de productos en bodegas

En este artículo te mostramos cómo consultar el stock de tus productos mediante la API de Multivende.

 

La consulta de stock se realiza a productos asociados a una bodega en Multivende. Para consultar las bodegas que se encuentran creadas en una cuenta de merchant, lo puedes hacer mediante el endpoint: Get stores and warehouses.

 

Request:

 

curl --location -g '{{base_url}}/api/m/{{merchant_id}}/stores-and-warehouses/p/{{page}}' \
--header 'Authorization: Bearer {{access_token}}'

 

Response:

{
"entries": [
{
"_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Mi Tienda (Personaliza el nombre)",
"code": null,
"address": null,
"description": null,
"type": "store",
"phoneAreaCode": null,
"phoneNumber": null,
"latitude": 0,
"longitude": 0,
"openHours": null,
"tags": null,
"position": 0,
"status": "created",
"createdAt": "2018-05-24T00:19:31.000Z",
"updatedAt": "2018-05-24T00:19:31.000Z",
"CreatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"UpdatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"LocationId": null,
"TimezoneId": null,
"MerchantId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"SalesGroupId": null
},
{
"_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Bodega (Personaliza el nombre)",
"code": null,
"address": null,
"description": null,
"type": "warehouse",
"phoneAreaCode": null,
"phoneNumber": null,
"latitude": 0,
"longitude": 0,
"openHours": null,
"tags": null,
"position": 1,
"status": "created",
"createdAt": "2018-05-24T00:19:31.000Z",
"updatedAt": "2018-05-24T00:19:31.000Z",
"CreatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"UpdatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"LocationId": null,
"TimezoneId": null,
"MerchantId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"SalesGroupId": null
}
],
"pagination": {
"offset": 0,
"limit": 50,
"total_pages": 1,
"current_page": 1,
"next_page": 0,
"previous_page": 0,
"total_items": 2
}
}

 

Consultar stock de productos

Puedes consultar el stock de los productos mediante el endpoint Get stocks with scroll, enviando el id de la bodega, límite de items a consultar (el rango del límite permitido es >=50 y <=30000), este endpoint permite obtener el stock de los productos paginados por scroll.

 

Puedes consultar el stock por un rango de fecha y hora, filtrando por el parámetro de fecha de creación (createdAt) o fecha de actualización (updatedAt).

 

Consultar el histórico de movimientos de stock de un producto en una bodega

El historial de stock en bodega, puede ser consultado a través del endpoint Get stock history
este retorna todo el movimiento de stock del producto.

Podrás visualizar la información que se ve en la vista Movimiento de inventario desde la plataforma de Multivende.

Ejemplo response:

{
"entries": [
{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"date": "2019-03-07T18:14:15.000Z",
"amount": 76,
"unitCost": 0,
"type": "INCREASE",
"comment": null,
"status": "created",
"createdAt": "2019-03-07T18:14:15.000Z",
"updatedAt": "2019-03-07T18:14:15.000Z",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CostCurrencyId": null,
"OriginProviderId": null,
"ProductRelocationCategoryId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"OriginWarehouseId": null,
"DestinationWarehouseId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductVersionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductStockBatchId": null,
"ProductRelocationCategory": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"name": "PRODUCT_RELOCATION_CATEGORIES.Product_reception.Name",
"certaintyLevel": "known",
"type": "increase",
"code": "_product_reception",
"description": "PRODUCT_RELOCATION_CATEGORIES.Product_reception.Description",
"position": 0,
"tags": "{ \"use_type\": \"external\"}",
"status": "created",
"createdAt": null,
"updatedAt": null
},
"CreatedBy": {
"profile": {
"name": "developers",
"fullName": "developers"
},
"token": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
},
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"name": "developers",
"email": "developers-test@multivende.com"
},
"OriginWarehouse": null,
"DestinationWarehouse": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"name": "Bodega (Personaliza el nombre)",
"code": null,
"address": null,
"description": null,
"type": "warehouse",
"phoneAreaCode": null,
"phoneNumber": null,
"latitude": 0,
"longitude": 0,
"openHours": null,
"tags": null,
"position": 1,
"status": "created",
"createdAt": "2019-01-30T17:18:46.000Z",
"updatedAt": "2019-01-30T17:18:46.000Z",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"LocationId": null,
"TimezoneId": null,
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"SalesGroupId": null
}
},
{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"date": "2019-03-07T18:04:49.000Z",
"amount": 14,
"unitCost": 0,
"type": "INCREASE",
"comment": null,
"status": "created",
"createdAt": "2019-03-07T18:04:49.000Z",
"updatedAt": "2019-03-07T18:04:49.000Z",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CostCurrencyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"OriginProviderId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductRelocationCategoryId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"OriginWarehouseId": null,
"DestinationWarehouseId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductVersionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductStockBatchId": null,
"ProductRelocationCategory": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"name": "PRODUCT_RELOCATION_CATEGORIES.Product_reception.Name",
"certaintyLevel": "known",
"type": "increase",
"code": "_product_reception",
"description": "PRODUCT_RELOCATION_CATEGORIES.Product_reception.Description",
"position": 0,
"tags": "{ \"use_type\": \"external\"}",
"status": "created",
"createdAt": null,
"updatedAt": null
},
"CreatedBy": {
"profile": {
"name": "developers",
"fullName": "developers"
},
"token": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
},
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"name": "developers",
"email": "developers-test@multivende.com"
},
"OriginWarehouse": null,
"DestinationWarehouse": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"name": "Bodega (Personaliza el nombre)",
"code": null,
"address": null,
"description": null,
"type": "warehouse",
"phoneAreaCode": null,
"phoneNumber": null,
"latitude": 0,
"longitude": 0,
"openHours": null,
"tags": null,
"position": 1,
"status": "created",
"createdAt": "2019-01-30T17:18:46.000Z",
"updatedAt": "2019-01-30T17:18:46.000Z",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"LocationId": null,
"TimezoneId": null,
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"SalesGroupId": null
}
}
],
"pagination": {
"offset": 0,
"limit": 50,
"total_pages": 1,
"current_page": 1,
"next_page": 0,
"previous_page": 0,
"total_items": 2
}
}

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Cómo cargar stock vía API?

En este artículo, te mostramos cómo realizar las carga de stock de tus productos mediante la API de Multivende.

Consultar y crear bodegas 

Puedes consultar y crear bodegas asociadas a un Merchant mediante el siguiente Endpoint:

Actualizar stock de productos en bodegas

La actualización de stock disponible de un producto se envía de manera individual o masiva a cada bodega. 

De manera masiva se pueden actualizar 1000 productos por solicitud. 

Puedes actualizar el stock de productos asociados a una bodega mediante los siguientes endpoints:

  •  Update stock: actualiza el stock disponible de un producto a una bodega, identificando el producto mediante el sku versión y enviando el monto disponible.
  • Bulk update stock: envía de manera masiva el stock a una bodega, enviando en un arreglo de productos el sku versión y monto disponible. En la respuesta mediante el parámetro success se devuelve el mensaje de si la actualización fue exitosa o no.

Consideraciones

  • Debes tener en cuenta que el stock enviado mediante API reemplaza al actual que tenga el producto.
  • Debes consultar primero el stock actual en Multivende mediante el endpoint Get stocks with scroll y actualizar solamente los que tengan diferencias.
  • Se recomienda realizar la sincronización de stock por lo menos una vez al día de forma automática.
  • Se recomienda dejar una opción para que se pueda ejecutar el proceso de forma manual.

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Consultar precios de productos via API

En este artículo te mostramos cómo consultar el precio de tus productos mediante la API de Multivende.

La consulta de precios se realiza a productos asociados a una lista de precios en Multivende.

 

Consultar precios de productos.

Para obtener el id de una lista de precios consultamos al endpoint Get price lists.

Puedes consultar el precio de los productos mediante el endpoint Get prices with scroll, enviando el id de la lista de precios, límite de items a consultar (el rango del límite permitido es >=50 y <=30000), este endpoint permite obtener el precio de los productos paginados por scroll.

Puedes consultar el precio por un rango de fecha y hora, filtrando por el parámetro de fecha de creación (createdAt) o fecha de actualización (updatedAt).

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
Actualización de Precios

Un producto puede estar relacionado a más de una lista de precios, por lo que la actualización del precio de un producto se realiza por cada una de las listas en la que se encuentre.

Proceso para actualizar el precio de un producto

Se debe consultar al endpoint  Get price list para obtener las listas de precios que tiene creadas el Merchant.

El response es un array que contiene:

    • “_Id”: Identificador de la lista en Multivende, este dato se debe guardar en el sistema para poder realizar el mapeo de las listas.
    • “name”: Nombre de la lista.
    • “status”: Estado de la lista en Multivende.

Ejemplo Response:

 

{
"entries": [
{
"_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Precios de lista",
"isDefault": true,
"code": null,
"description": null,
"position": 0,
"status": "created",
"createdAt": "2018-05-24T00:19:31.000Z",
"updatedAt": "2018-05-24T00:19:31.000Z",
"CreatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"UpdatedById": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"CurrencyId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"MerchantId": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Currency": {
"_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"PlatformCurrency": {
"_id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "CURRENCIES.Chilean_peso.Name",
"symbol": "$",
"code": "CLP",
"decimalPlaces": 0
}
}
}
],
"pagination": {
"offset": 0,
"limit": 50,
"total_pages": 1,
"current_page": 1,
"next_page": 0,
"previous_page": 0,
"total_items": 1
}
}

Para el precio de un producto en una lista de precios, se emplea el siguiente Endpoint Update price enviando como parámetros el "_Id" actualizar obtenido de la consulta anterior y el campo sku_child del producto. Y en el body:

  • net”: Precio neto.
  • tax”: Impuestos.
  • "gross": Precio de venta.
  •   " priceWithDiscount": Precio con descuento (algunos canales no permiten realizar la actualización de esta manera, por lo que se sugiere que los descuentos los trabajen directo en el canal).

Request:

https://app.multivende.com/api/product-price-lists/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/product-versions/{{sku_child}}/set' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--header 'Cookie: route=XXXXXXXXXX.XXX.XX.XXXXXX|0bbbab1f8d05XXXXXXXXXXXXXXXXXXX' \
--data
{
"net": 119900,
"tax": 19,
"gross": 120000,
"priceWithDiscount": 150000
}

 

Response:

{
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"net": 100840.336134454,
"tax": 21,
"gross": 120000,
"priceWithDiscount": 150000,
"status": "created",
"createdAt": "2019-10-14T13:50:19.000Z",
"updatedAt": "2019-10-24T20:01:25.000Z",
"CreatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"UpdatedById": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductPriceListId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"ProductVersionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"CurrencyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"MerchantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Currency": {
"_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"PlatformCurrency": {
"_id": "a3e8e8ec-62d5-11e6-9651-70928b05753b",
"name": "CURRENCIES.Chilean_peso.Name",
"symbol": "$",
"code": "CLP",
"decimalPlaces": 0
}
}
}

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información

Logística

Ver los artículos
Modalidades y operadores logísticos de los despachos

Conoce las modalidades y operadores logísticos de los despachos que puedes gestionar a través de Multivende.

Modalidades logísticas

Podrás conseguir la información de las modalidades logísticas de tus despachos en los endpoints:

  • Get checkouts light: Permite realizar el sondeo de las órdenes desde Multivende hacia tu integración.
  • Get checkout: Ente endpoint te permite consultar el detalle de una orden.
  • Get delivery order: Este Endpoint te permite consultar el detalle de un despacho asociado a una orden. 

Delivery Order

En el detalle del DeliveryOrders:

  • "shippingMode": Informa el modo de envío según lo que indica el canal de venta.
  • "courierName": Informa el nombre del courier que realizará el despacho según lo que indica el canal de venta.

Checkout

En el detalle del Checkout:

  • "shippingMode": Informa el modo de envío según lo que indica el canal de venta. En los casos donde hay más de un DeliveryOrder con diferentes ShippingMode, el campo indicará "multiple".
  • "courierName": Informa el nombre del courier que realizará el despacho según lo que indica el canal de venta. En los casos donde hay más de un DeliveryOrder con diferentes courierName, el campo indicará "múltiple".
  • "isMultiwarehouse": Informa si el punto de retiro del pedido para el despacho es más de uno.

Shipping Mode

En el "shippingMode" encontrarás las opciones propias de cada canal de venta, según la información que nos proporcione el canal vía API. (me1, me2, fulfillment, Dropshipping).

Ejemplo:

 "shippingMode": "fulfillment",

courierName

En el “courierName” las opciones disponibles y denominación de los operadores logísticos podrán variar de acuerdo a la configuración propia del canal para identificar a cada uno (El courier Blue Express podrás encontrarlo con los valores: Blue Express, BLX, entre otros).

Ejemplo:

"courierName": "BLUEXPRESS",

Modalidades logísticas de los marketplaces

Mercadolibre

Mercado Envíos (drop_off)

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace. 

Mercado Envíos Places (xd_drop_off)

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado o en los puntos autorizados de Mercado Libre.

Mercado Envíos Colecta (cross_docking)

El vendedor prepara el pedido en su bodega, imprime la etiqueta y la flota propia de Mercado Libre lo retira y entrega al cliente final.

Mercado Envíos Full (fulfillment)

El vendedor envía stock a la bodega de Mercado Libre y el marketplace se encarga de almacenar los productos y realizar todo el proceso de preparación, generación de etiquetas y entrega al cliente final.

*No se genera etiqueta

* El seller debe generar la boleta para Colombia.

Mercado Envíos Flex (self_service):

El vendedor prepara el pedido en su bodega, imprime la etiqueta con código QR y despacha a través del courier de su preferencia o con su flota propia.

*Las etiquetas deben ser escaneadas por el operador logístico con la app móvil de Mercado Envíos Flex para el control y seguimiento de los paquetes.

Acordar con el vendedor (custom)

El vendedor prepara el pedido en su bodega y despacha según lo acordado con el comprador. 


*No imprime la etiqueta
*Debe actualizar el estado de envío a Mercado Libre.

ME1 (default)

El vendedor prepara el pedido en su bodega y despacha con su flota propia o a través del courier de su preferencia.

*No imprime la etiqueta.
*Debe actualizar el estado de envío, URL y número de tracking a Mercado Libre.

own logistic

Despacho por cuenta propia del vendedor

 

Linio

Dropshipping

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

 

Dafiti

Dropshipping

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

Cross docking

El vendedor prepara el pedido en su bodega, imprime la etiqueta y la flota propia de Dafiti lo retira y entrega al cliente final.

 

Ripley

Dropshipping

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

Cross docking

El vendedor prepara el pedido en su bodega, imprime la etiqueta y la flota propia de Ripley lo retira y entrega al cliente final.

Despacho propio

El vendedor prepara el pedido en su bodega y despacha a través de su flota propia.

Fulfillment

El vendedor envía stock a la bodega de Mercado Ripley y el marketplace se encarga de almacenar los productos y realizar todo el proceso de preparación, generación de etiquetas y entrega al cliente final.

 

Paris

Dropshipping (scheduled)

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

Same Day

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha con su flota propia o a través del courier de su preferencia en el mismo día.

Fulfillment

El vendedor envía stock a la bodega de Paris y el marketplace se encarga de almacenar los productos y realizar todo el proceso de preparación, generación de etiquetas y entrega al cliente final.

*Los productos aún no son informados vía API.
*No se genera etiqueta y el seller debe generar la boleta.

Next Day

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha con su flota propia o a través del courier de su preferencia en el mismo día.

 

Fcom (falabella.com)

Dropshipping

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

Cross docking

El vendedor prepara el pedido en su bodega, imprime la etiqueta y la flota propia de falabella.com lo retira y entrega al cliente final.

Fulfillment

El vendedor envía stock a la bodega de Falabella y el marketplace se encarga de almacenar los productos y realizar todo el proceso de preparación y entrega al cliente final.

*Los productos aún no son informados vía API.
*No se genera etiqueta y el seller debe generar la boleta.

 

Amazon 

 MFN

Los vendedores son responsables de abastecer y almacenar su propio inventario, cumplir con sus propios pedidos, gestionar las devoluciones y trabajar directamente con el cliente.

Fulfillment

El vendedor envía el stock a la bodega de Amazon y el marketplace se encarga de almacenar los productos y realizar todo el proceso de preparación y entrega al cliente final.

Easy Ship

('pri-ez-mx'

'expd-ez-mx'

'expr-ez-mx'

std-ez-mx')

Se encarga de la recolección, etiquetado y entrega de tus productos. Una vez que recibes un pedido, el sistema genera automáticamente la etiqueta de envío y coordina la recolección con el transportista.

Además te ofrece seguimiento en tiempo real de todos tus envíos, proporcionando actualizaciones constantes tanto a ti como a tus clientes, mejorando la transparencia y la satisfacción del cliente.

MFN std

Logística MFN pero en modalidad standard

 

 Walmart

 Standard

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

 

Coppel

 Standard

El vendedor prepara el pedido en su bodega, imprime la etiqueta y despacha a través del courier asignado por el marketplace.

 

Consideraciones para ventas con modalidad fulfillment

Las ventas de tipo fulfillment pueden ser registradas en Multivende y leerse mediante la integración a través del endpoint de Get checkout, no hay diferencia entre el formato de estas ventas y otras modalidades.

Los canales de venta que tienen disponible esta modalidad son: Mercado LibreParis, Falabella.com, Amazon y Ripley.

  • Para activar el registro de las órdenes con esta modalidad logística debes habilitar la opción en la configuración de la conexión del canal como lo indica el artículo según el canal.
  • Debido a que se crea una bodega especial para asociar las ventas fulfillment del marketplace, el stock de tus bodegas no se verá afectado.
  • Para este tipo de órdenes el shippingMode trae el valor “fulfillment”, de esta manera se pueden identificar.
  • Para Mercado Libre en Argentina, Colombia y México, el vendedor puede generar la factura.
  • Para Mercado Libre Brasil y Chile, la factura es generada por Mercado Libre y el vendedor puede descargarla.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
¿Cómo generar y consultar etiquetas de los Marketplace?

El proceso de generación/consultas de etiquetas, debe realizarse consultado por cada Marketplace.

¿Cómo generar / consultar etiquetas de los Marketplace?

Te dejamos el paso a paso para que puedas obtener los documentos de despachos vía API:

 

1. Consultar las conexiones de los Marketplaces

Primero se debe consultar las conexiones de los Marketplaces que tiene habilitadas el Merchant por el endpoint Get Marketplace connections . El cual retorna un array con todas las conexiones, en el campo "_name" se indica el Marketplace al cual pertenece la conexión, los cuales pueden ser los siguientes:

 

Marketplace / Tienda online

Estado para poder generar etiquetas

Mercadolibre

Disponible

Linio

Disponible

Dafiti

Disponible

Ripley

Disponible

Paris

Disponible

Falabella (FCOM)

Disponible

Amazon

Disponible

Walmart

Disponible sólo Chile

Coppel

Disponible

Totalplay

Disponible

Liverpool

Disponible

Vtex

No disponible

Magento

No disponible

Shopify

No disponible

Prestashop

No disponible

Woocommerce

No disponible

Nota: Se deben descartar las conexiones de los Marketplace / Tiendas online que no están disponibles.

 

2. Consultar las órdenes disponibles para generar etiquetas

Con el "_Id" obtenido del respuesta anterior (Get Marketplace connections), se debe consultar por cada uno al Endpoint Get delivery orders with available labels. Enviando de forma predeterminada los siguientes parámetros:

  • _delivery_statuses = "completed".
  • _delivery_statuses = "pending".
  • _shipping_label_print_statuses = "not_printed"
  • _shipping_label_status = "ready"
  • _include_only_delivery_order_with_traking_number = true

El response es un array paginado de 50 órdenes por página. Se debe iterar por cuantas paginas contenga.

CONSIDERACIONES ESPECIALES:

  • Para generar las etiquetas de Linio y Dafiti es necesario cambiar el estado de la orden a "Listo para envío" previo a consultar las órdenes disponibles para generar etiquetas; por el endpoint Update delivery order status.
    • Para el caso de Falabella se puede generar la etiqueta sin previamente cambiar el estado a Listo para envío, pero se debe informar este estado al canal de venta para indicar que el despacho está listo.
  • Para generar las etiquetas de Ripley debes realizar previamente la configuración indicada en el articulo Generación de etiquetas para Mercado Ripley hasta el paso 2, ya que los siguientes pasos son automatizados.
  • Para generar las etiquetas de Walmart es necesario cambiar el estado de la orden a "En Manejo" previo a consultar las órdenes disponibles para generar etiquetas; por el endpoint Update delivery order status.
  • Para generar las etiquetas de Liverpool es necesario cambiar el estado de la orden a "En Manejo" previo a consultar las órdenes disponibles para generar etiquetas; por el endpoint Update delivery order status.

Solo podrás generar etiquetas de las órdenes que no están despachadas ni canceladas. Para modalidad Fullfilment no se genera documento de despacho ya que la logística es administrada por los marketplaces que admiten esta modalidad.

 

3. Crear solicitud de generación de etiquetas

Con los _Id del response anterior (Get delivery orders with available labels), los cuales se pueden agrupar en un array de máximo 50 para consultar al endpoint PUT Generate delivery order tikets.

El cual crea una tarea asíncrona para procesar la solicitud de generar etiquetas.

 

Para verificar que la tarea esté procesada, consultar periódicamente al siguiente Endpoint Get bulk action task hasta que el campo "processStatus" sea ​​igual a:

  • "completed",
  • "completed_with_warnings"  
  • "failed". 

En caso que sea "completed_with_warnings" o "failed" se debe volver a procesar la solicitud. 

Adicionalmente, se debe validar el valor del campo “output” en el se indica el estado de las órdenes a las que se le solicitó generar las etiquetas.

  • "ordersWithAvailableDeliveryOrderTickets" es un array que contiene los id de las ordenes a las que se les puede generar etiqueta en la solicitud. Los campos que retorna son:
    • "deliveryOrderId"
    • "deliveryOrderCode"
    • "checkoutId"
    • "checkoutCode"
    • "checkoutExternalId"
    • "deliveryOrderLinkId"
    • "deliveryOrderLinkExternalId"
  • "ordersWithUnavailableDeliveryOrderTickets" es un array que contiene los id de las ordenes a las que no se les puede generar etiqueta en la solicitud.
  • "failedDeliveryOrders" es un array que contiene los id de las ordenes a las que falló la generación de  etiquetas en la solicitud.
  • "successfulDeliveryOrderDocuments" es un array que contiene los id de las ordenes a las que se les generó etiqueta en la solicitud. Los campos que retorna son:
    • "deliveryOrder": {
      "deliveryOrderId",
      "deliveryOrderCode",
      "checkoutId",
      "checkoutCode",
      "checkoutExternalId",
      "deliveryOrderLinkId",
      "deliveryOrderLinkExternalId",
      }
    • "deliveryOrderDocumentId"
  • "totalOrderProcessed" total de ordenes a las que se generó etiquetas en la solicitud.

Consideraciones

  • Si hay órdenes que están en ""failedDeliveryOrders" o ""ordersWithUnavailableDeliveryOrderTickets" se deben volver a reprocesar.
  • Si el valor de "totalOrderProcessed" no coincide con la cantidad de órdenes enviadas en la solicitud se debe a que hay ids de órdenes que no existen en Multivende enviadas para generar etiquetas.
  • En caso de que alguna venta quede con error, se debe revisar con el Marketplace. 
  • Se recomienda generar las etiquetas al apenas la integración validar que existe el stock y almacenar el PDF para su impresión, así disminuirán los tiempos en el proceso de packing.
  • Por cada etiqueta los marketplace demorar aprox 1 min en poderla liberar.
  • Para Amazon desde el momento en que se genere la url de los documentos de despacho desde el Get bulk action task, tienes 15 minutos para realizar la descarga y almacenarlo, la url caducará pasado el tiempo mencionado.
  • En caso de que necesites descargar tus documentos de despacho de Amazon, si lo haces desde  Get delivery order consultando la url desde el deliveryOrderDocuments, esta url también tiene un tiempo de 15 minutos, pasado este tiempo la url caducará y deberás hacer nuevamente el llamado del endpoint para habilitar una nueva url.
  • El proceso de generación masiva de etiquetas ha sido optimizado y estandarizado con el fin de controlar mayor cantidad de errores a la hora de generar etiquetas de despacho para los canales que utilizan esta función, el primer canal que ha implementado este funcionalidad estándar es Mercadolibre y próximamente lo hará Dafiti:
    1. La implementación de esta optimización no significa ni debiera significar cambio alguno en el proceso normal de generación de etiquetas para los canales, es decir no debiera haber diferencia en cómo el usuario veía antes las etiquetas y cómo las ve ahora. No obstante sí debiera notar un cambio a la hora de generar etiquetas que habían sido previamente generadas puesto que en el antiguo proceso no generábamos estas etiquetas.
    2. Actualmente cuando recibimos la solicitud para generar etiquetas previamente generadas (para el caso de Mercadolibre) lo que hacemos es tomarlas directamente desde el storage de Multivende (puesto que ya existen) generar el archivo consolidado y luego comprimirlas. Dichas etiquetas estarán disponibles con los mismos nombres de archivo pero, con la palabra “_old” al final de estos, esto con el fin de señalar que corresponden a etiquetas antiguas.
    3. Las etiquetas denominadas “_old” no contaran con archivos de control puesto que Multivende no genera este recurso por ser un recurso propio de Mercadolibre y por ser etiquetas antiguas el archivo de control ya estará asociado a otra generación masiva de etiquetas realizada previamente.
    4. Para este último caso el usuario podrá encontrar el archivo de control asociado a cada despacho individualmente.

El .zip contiene los siguientes archivos, según el formato que estableció el Marketplace:

  • etiquetas para la impresora Zebra (SOLO MERCADO LIBRE - PARIS y FCOM*)
  • manifiesto (SOLO MERCADO LIBRE, 1 manifiesto por solicitud)
  • etiquetas en PDF
  • Packing (agrupa los ítems por orden, formato Excel)
  • Picking (agrupa todos los ítems de las órdenes, formato Excel)

*La activación del ZPL de FCOM se solicita directamente al canal de venta.

 

Documentos según canal de venta:

Canales Órdenes "externalOrderNumber" "PackageId" ("externalContent) "shipping"."id" ("externalContent")
Mercado Libre

1 PDF por solicitud.

1 ZPL por cada orden de la solicitud.

"Venta" No disponible "Envío"
Paris

1 PDF por cada orden de la solicitud.

1 ZPL por cada orden de la solicitud.

1 PDF con todas las órdenes cada orden separada en 1 página.

El formato es compatible con impresora zebra.

"Referencia" No disponible No disponible
Ripley

1 PDF por cada orden de la solicitud.

1 PDF con todas las órdenes cada orden separada en 1 página.

El formato es compatible con impresora zebra.

"Número de Orden" No disponible No disponible
Falabella

1 PDF por cada orden de la solicitud.

O de lo contrario: 1 ZPL por cada orden de solicitud.

Esto se modifica desde el canal, si desean recibir PDF no llegará el archivo ZPL y al contrario, si desean recibir el ZPL no llegará el PDF dentro del .ZIP

No disponible "REF" No disponible
Linio

1 PDF por cada orden de la solicitud. El formato es compatible con impresora zebra.

No disponible "REF" No disponible
Dafiti

1 PDF por cada orden de la solicitud. El formato es compatible con impresora zebra.

"Referencia" No disponible No disponible

 

 

NOTA: si el Marketplace es Mercado Libre, automáticamente procesa la orden a lista, lo cual bloquea que se pueda cancelar por parte del cliente o Merchant.

No se registra que pueden pasar a buscar el pedido, esto se debe coordinar con el courier.

 

¿Cómo consultar las etiquetas de una orden?

A través del endpoint Get delivery order se puede consultar el detalle de entregas con despacho de una orden. El campo "DeliveryOrderDocuments" contiene un array con los documentos referentes a la entrega con despacho de la orden consultada.

 

Diagrama de Flujo 

A continuación, se encuentra el diagrama de flujo para las consultas.

Flujos_de_integracio_n-Generar_etiquetas__1_-1.png

 

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Cómo actualizar los estados de un despacho?

Los cambios de estados lo puedes realizar mediante tu integración vía API, no obstante debes tener en consideración lo que te explicamos a continuación. 

Puedes obtener el campo _id del endpoint Get checkout dentro del arreglo de DeliveryOrder, el cual es necesario para actualizar el estado de la entrega.

La actualización del estado se debe realizar según el tipo de entrega.

 

Despachos

Los siguientes datos pueden actualizarse por el endpoint Update delivery order status:

  • "DeliveryOrderStatusId” = actualizar el estado del despacho según el _id correspondiente del endpoint Get Delivery Order Status
  • "comment" = un comentario al despacho
  • Para actualizar el número y url de tracking debes usar el endpoint Update delivery order
    • Los canales que permiten actualizar el número de tracking son los siguientes:
      • Mercadolibre (Esto aplica para envíos ME1, custom y not_specified).
      • Vtex (Aplica tanto para ordenes tipo "despacho" como "retiro en tienda").
      • Dafiti (Aplica para la modalidad "Dropshipping").
      • Amazon (Aplica para ventas de tipo Fulfillment - Channel == 'MFN').
      • Liverpool.

Tener en consideración que al enviar el cambio de estado a "Listo para envío" verificar posteriormente que este se haya sincronizado de forma correcta, esto lo pueden hacer consultando el Endpoint Get Delivery Order, el campo "DeliveryOrderStatusLink" verificando dentro de  "synchronizationStatus" el cual puede contener los siguientes estados:

 

"pending" Pendiente de sincronizar
"requesting" Empezando la ejecución
"changed" Cambio de estado correcto
"not_requested" El estado no genera sincronización al canal
"failed_fatal" Fallo cambio de estado en el canal

 

 

Consideraciones Importantes:

  • Si al pasar 10 minutos y se visualiza que no se ha realizado el cambio de estado, por favor enviar nuevamente la actualización de estado.
  • Cuando se crea una tarea de cambio de estado, los campos del "DeliveryOrderStatusLink" serán informados en "null", cuando este cambio comience a ser procesado desde Multivende, el estado del campo "synchronizationStatus" informará uno de los 4 estados detallados en la tabla de arriba.
Más información
Estados de una orden según el tipo de entrega

Los estados de las órdenes dependen del tipo de entrega que haya seleccionado el cliente, por lo que puede variar según esta condición.

Tipos de entrega para una orden

Para obtener los diferentes tipos de entrega que puede tener una orden se debe consultar el Endpoint Get delivery types. Actualmente contamos con dos tipos de entrega posibles, las cuales, en el response de la solicitud se obtiene el campo code, que puede tener los siguientes valores:

  1. “_delivery_type_delivery” = Despacho (el producto se envía a una dirección dada por el comprador).
  2. "_delivery_type_store_pickup" = Retiro (el producto lo retira el comprador en la dirección de la bodega asociada al stock del producto).
  3. "_delivery_type_mix" = Mixto (La orden está compuesta por varios productos de los cuales tiene retiro en tienda y despacho)

Entregas con despacho

En el endpoint Get Checkout entregamos información general del despacho, pero si necesitas información adicional como los documentos o logs de cambio de estado, consulta el endpoint Get delivery order.

Para realizar la integración con los sistemas, se debe hacer un mapeo de los estados de las órdenes en Multivende y el sistema con el que se va a integrar. Para ello, se consulta al endpoint Get Delivery Order Status el cual retorna un array con todos los estados posibles de una orden en Multivende. 

Del response se deben guardar los campos _id y code, que deben ser mapeados con los estados del sistema.

A continuación, se detallan los posibles estados de las ventas en Multivende y su relación con los estados de las ventas en los canales.

  • Multivende

Estado en Multivende campo code

Descripción

_delivery_order_status_pending_

La orden ingresó en el sistema.

_delivery_order_status_handling_

Se está preparando la orden para el envío.

_delivery_order_status_ready_to_ship_

La orden está lista para el despacho.

_delivery_order_reschedule_

La orden se re agendó.

_delivery_order_status_shipped_

La orden se ha enviado.

_delivery_order_status_delivered_

La orden se ha entregado.

_delivery_order_status_not_delivered_

La orden no se entregó.

_delivery_order_status_cancelled_

La orden se ha cancelado.

_delivery_order_status_under_review_

La orden está en revisión.

_delivery_order_status_partial_cancelled_

Uno o algunos de los items de la orden fue cancelado

  • Multivende - Amazon
    • Relación de estados entre Multivende y Amazon
Multivende

Amazon

_delivery_order_status_pending_ unshipped
_delivery_order_status_handling_ partiallyShipped
_delivery_order_status_ready_to_ship_ closed_summary
 _delivery_order_status_shipped_ shipped
_delivery_order_status_delivered_ delivered
_delivery_order_status_not_delivered_ not_delivered
_delivery_order_status_cancelled_ cancelled
  • Multivende - Linio, Dafiti, Falabella
    • Relación de estados entre Multivende y Linio, Dafiti, Falabella

Multivende

Linio, Dafiti, Falabella

_delivery_order_status_pending_

pending, processing

_delivery_order_status_handling_

return_waiting_for_approval, return_shipped_by_customer, return_rejected

_delivery_order_status_ready_to_ship_

ready_to_ship

_delivery_order_status_shipped_

shipped

_delivery_order_status_delivered_

delivered

_delivery_order_status_not_delivered_

returned

_delivery_order_status_cancelled_

failed, canceled

  • Multivende - Mercado Libre
    • Relación de estados entre Multivende y Mercado Libre

Multivende

Mercado Libre

_delivery_order_status_pending_

pending

_delivery_order_status_handling_

handling

delivery_order_status_ready_to_ship_

ready_to_ship

_delivery_order_status_shipped_

shipped

_delivery_order_status_delivered_

delivered

_delivery_order_status_not_delivered_

not_delivered

_delivery_order_status_cancelled_

cancelled

El estado solo se cambia en Mercadolibre para los pedidos que no son ME2 excepto el estado cancelado.

  • Multivende - Paris
    • Relación de estados entre Multivende y Paris

Multivende

Paris

_delivery_order_status_pending_

null

_delivery_order_status_handling_

confirmed

_delivery_order_status_shipped_

in_transit

_delivery_order_status_delivered_

delivered

_delivery_order_status_not_delivered_

failure

_delivery_order_status_cancelled_

failure

  • Multivende - Ripley
    • Relación de estados entre Multivende y Ripley

Multivende

Ripley

_delivery_order_status_pending_

shipping

_delivery_order_status_shipped_

shipped

_delivery_order_status_delivered_

received

_delivery_order_status_cancelled_

cancelled

  • Multivende - Walmart Chile
    • Relación de estados entre Multivende y Walmart Chile
Multivende

Walmart Chile

_delivery_order_status_pending_ Created
_delivery_order_status_handling_ Acknowledged
 _delivery_order_status_shipped_ Shipped
_delivery_order_status_delivered_ Delivered
_delivery_order_status_cancelled_ Cancelled
  • Multivende - Walmart México
    • Relación de estados entre Multivende y Walmart México 
Multivende

Walmart México

_delivery_order_status_pending_ On Hold
_delivery_order_status_pending_ Created
_delivery_order_status_ready_to_ship_ Acknowledged
_delivery_order_status_shipped_ Shipped
_delivery_order_status_delivered_ Delivered
_delivery_order_status_cancelled_ Cancelled
  • Multivende - Magento
    • Relación de estados entre Multivende y Magento

Multivende

Magento

_delivery_order_status_pending_

pending, new, pending payment, pending payPal 

_delivery_order_status_handling_

processing, on hold, payment review 

_delivery_order_status_delivered_

invoiced

_delivery_order_status_cancelled_

closed, canceled 

  • Multivende - Shopify
    • Relación de estados entre Multivende y Shopify

Multivende

Shopify

_delivery_order_status_pending_

null

delivery_order_status_ready_to_ship_

confirmed

_delivery_order_status_shipped_

in_transit

_delivery_order_status_delivered_

delivered

_delivery_order_status_not_delivered_

failure

  • Multivende - VTEX
    • Relación de estados entre Multivende y VTEX

Multivende

VTEX

_delivery_order_status_under_review_
window-to-cancel

_delivery_order_status_pending_

ready-for-handling

_delivery_order_status_handling_

handling

_delivery_order_status_shipped_

invoiced (Solo si esta el DTE cargado)

_delivery_order_status_cancelled_

cancelled

 

Consideraciones especiales para la información logística por canal de venta:

Cancelaciones parciales para el canal Paris:

Identificar los items cancelados: Para determinar qué artículo o artículos han sido cancelados en una orden de despacho, les instamos a buscar en el campo:

"checkoutLink" -> "externalContent" -> "subOrders "-> items al consultar la venta con Get checkout.

Dentro items, por cada uno de los items, en el campo “status” encontrarán la información detallada sobre la cancelación parcial en caso de que el ítem haya sido cancelado.

  • Ejemplo:
"status": {
"id": 31,
"name": "stock_shortage_refunded",
"description": "Reembolsado por falta de stock en la db",
"translate": "Problema con stock",
"cancelable": false
}

Estas indicaciones solo aplican para el caso del marketplace Paris. 

 

Entrega con retiro en tienda

En el endpoint Get Checkout entregamos información general del retiro en tienda, pero si necesitas información adicional como los logs de cambio de estado, consulta el endpoint Get pickup order.

Los estados de retiro en tienda se pueden consultar mediante el endpoint de: GET pick up order statuses.

 

Estado en Multivende campo code

Descripción

pick_up_order_status_pending

La orden ingresó en el sistema

pick_up_order_status_received_by_store

La orden ingresó a la tienda

pick_up_order_status_completed

La orden está lista para el despacho.

pick_up_order_status_cancelled

La orden fue cancelada

 

Actualizar el estado de una orden con retiro en tienda

Para actualizar el estado de una orden con retiro en tienda, lo hacemos mediante el endpoint:

PUT Update pick up order status. Enviando en el body los siguientes parámetros:


"PickUpOrderStatusId": "{{pick_up_order_status_pending_id}}"
"comment": "test comment",
"pickUpClosingComment": "test Pick Up Closing Comment",
"estimatedPickUpDateFrom": "2019-09-08 16:19:06",
"estimatedPickUpDateTo": "2019-09-10 09:19:06",
"effectivePickUpClosingDate": "2019-09-11 16:19:06"

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
Identificar cancelaciones parciales de los despachos

La integración con nuestra API permite a los integradores acceder a información detallada sobre ventas, incluidas aquellas con cancelaciones parciales, específicamente para los canales de venta Paris y Mercadolibre. A continuación te compartimos la información de como puedes identificar estas transacciones:

Cancelaciones parciales para el canal Paris:

Identificar los items cancelados: Para determinar qué artículo o artículos han sido cancelados en una orden de despacho, les instamos a buscar en el campo:

"checkoutLink" -> "externalContent" -> "subOrders "-> items al consultar la venta con Get checkout.

Dentro items, por cada uno de los items, en el campo “status” encontrarán la información detallada sobre la cancelación parcial en caso de que el ítem haya sido cancelado.

 

Ejemplo:
"status": {
"id": 31,
"name": "stock_shortage_refunded",
"description": "Reembolsado por falta de stock en la db",
"translate": "Problema con stock",
"cancelable": false
}

 

Cancelaciones parciales para Mercadolibre:

Para Mercadolibre, al consultar el Get delivery order puedes validar el code del estatus del despacho en el DeliveryOrderStatus, en el caso de una cancelación parcial registra:

"code": "_delivery_order_status_partial_cancelled_"

"DeliveryOrderStatus": 
{
"_id": "9fddd14d-8eda-46d8-867f-26ae43b3491f",
"name": "DELIVERY_ORDER_STATUSES.Partial_cancelled.Name",
"description": "DELIVERY_ORDER_STATUSES.Partial_cancelled.Description",
"code": "_delivery_order_status_partial_cancelled_",
"position": 10,
"tags": null,
"status": "created",
"createdAt": "2023-02-21T00:00:00.000Z",
"updatedAt": "2023-02-21T00:00:00.000Z"
}

 

Para el resto de los marketplaces aún no se registra información de cancelaciones parciales.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 

Más información
Homologación de estados canales de venta versus Multivende

Cada canal de venta maneja diversos estados para los tipos de entrega, no obstante en Multivende poseemos esados normalizados dentro de la plataforma; estos los obtienes consultando el endpoint Get Delivery Order Status el cual retorna un array con los estados normalizados en Multivende. 

Del response se deben guardar los campos _id y code, que deben ser mapeados con los estados del sistema.

A continuación, se detallan la homologación de estados de las ventas en Multivende y su relación con los estados de las ventas en los canales.

Multivende

Estado en Multivende campo code

Descripción

_delivery_order_status_pending_

La orden ingresó en el sistema.

_delivery_order_status_handling_

Se está preparando la orden para el envío.

_delivery_order_status_ready_to_ship_

La orden está lista para el despacho.

_delivery_order_reschedule_

La orden se reagendó.

_delivery_order_status_shipped_

La orden se ha enviado.

_delivery_order_status_delivered_

La orden se ha entregado.

_delivery_order_status_not_delivered_

La orden no se entregó.

_delivery_order_status_cancelled_

La orden se ha cancelado.

_delivery_order_status_under_review_

La orden está en revisión.

Paris

Estado del canal

Estado Multivende

awaiting_fulfillment _delivery_order_status_pending_
ready_to_ship _delivery_order_status_pending_
printed_label _delivery_order_status_ready_to_ship_
closed_summary _delivery_order_status_ready_to_ship_
shipped

_delivery_order_status_shipped_

delivery_in_progress

_delivery_order_status_shipped_

delivered

_delivery_order_status_delivered_

not_delivered _delivery_order_status_not_delivered_
lost _delivery_order_status_not_delivered_
rejected_by_carrier _delivery_order_status_not_delivered_
_delivery_order_status_under_review_ _delivery_order_status_under_review_
_delivery_order_reschedule_ _delivery_order_reschedule_
returned _delivery_order_reschedule_
return_in_process _delivery_order_reschedule_
seller_received _delivery_order_reschedule_
returned_to_seller _delivery_order_reschedule_
cancelled  _delivery_order_status_cancelled_
deleted

_delivery_order_status_cancelled_

unable_to_fulfill

_delivery_order_status_cancelled_

Shopify v2

Estado del canal

Estado Multivende

confirmed _delivery_order_status_ready_to_ship_
in_transit _delivery_order_status_shipped_
delivered _delivery_order_status_delivered_
failure _delivery_order_status_not_delivered_
null _delivery_order_status_pending_
cancelled _delivery_order_status_cancelled_

 

Mercadolibre

Estado del canal

Estado Multivende

pending _delivery_order_status_pending_
handling _delivery_order_status_handling_
ready_to_ship _delivery_order_status_ready_to_ship_
shipped _delivery_order_status_shipped_
delivered _delivery_order_status_delivered_
not_delivered _delivery_order_status_not_delivered_
cancelled _delivery_order_status_cancelled_

Amazon

Estado del canal

Estado Multivende

unshipped _delivery_order_status_pending_
partiallyShipped _delivery_order_status_handling_
closed_summary _delivery_order_status_ready_to_ship_
shipped _delivery_order_status_shipped_
delivered _delivery_order_status_delivered_
not_delivered _delivery_order_status_not_delivered_
cancelled _delivery_order_status_cancelled_

 

Vtex

Estado del canal

Estado Multivende

window-to-cancel _delivery_order_status_under_review_
ready-for-handling _delivery_order_status_pending_
handling

_delivery_order_status_handling_

canceled _delivery_order_status_cancelled_
cancel _delivery_order_status_cancelled_
cancellation-requested _delivery_order_status_cancelled_
shipped

_delivery_order_status_shipped_

delivered

_delivery_order_status_delivered_

Magento

Estado del canal

Estado Multivende

pending _delivery_order_status_pending_
new _delivery_order_status_pending_
pending payment _delivery_order_status_pending_
pending payPal

_delivery_order_status_pending_

processing

_delivery_order_status_handling_

on hold _delivery_order_status_handling_
payment review _delivery_order_status_handling_
closed

_delivery_order_status_cancelled_

canceled

_delivery_order_status_cancelled_

complete

_delivery_order_status_delivered_

Prestashop

Estado del canal

Estado Multivende

pending

_delivery_order_status_pending_

Mapeo personalizado de estados

Ripley

Estado del canal

Estado Multivende

delivered _delivery_order_status_ready_to_ship_
pending _delivery_order_status_pending_
shipped

_delivery_order_status_shipped_

received

_delivery_order_status_delivered_

canceled

_delivery_order_status_cancelled_

closed

_delivery_order_status_cancelled_

Fcom - Linio

Estado del canal

Estado Multivende

pending _delivery_order_status_pending_
processing _delivery_order_status_pending_
ready_to_ship _delivery_order_status_ready_to_ship_
return_waiting_for_approval _delivery_order_status_handling_
return_shipped_by_customer _delivery_order_status_handling_
return_rejected _delivery_order_status_handling_
shipped _delivery_order_status_shipped_
delivered _delivery_order_status_delivered_
returned _delivery_order_status_not_delivered_
canceled _delivery_order_status_cancelled_
failed _delivery_order_status_cancelled_
ReadyToShip _delivery_order_status_ready_to_ship_
PackadByMarketplace _delivery_order_status_handling_
Shipped _delivery_order_status_shipped_
Cancelled _delivery_order_status_cancelled_

Jumpseller

Estado del canal

Estado Multivende

requested _delivery_order_status_handling_
failed _delivery_order_status_cancelled_
pickup_available _delivery_order_status_delivered_
delivered _delivery_order_status_delivered_
procesado _delivery_order_status_delivered_

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información

Seguridad

Ver los artículos
Certificación ISO 27001: Sistema de Gestión de Seguridad de la Información

Certificación ISO 27001: Sistema de Gestión de Seguridad de la Información

Multivende ha obtenido la certificación ISO 27001, la norma internacional que garantiza las mejores prácticas en gestión de la seguridad de la información. Esta certificación reconoce nuestro compromiso con la protección de los datos y la gestión de la seguridad en todos nuestros procesos.

La ISO 27001 se centra en identificar y gestionar los riesgos relacionados con la información, estableciendo un marco robusto para proteger la confidencialidad, integridad y disponibilidad de los datos. Con esta certificación, aseguramos que nuestros sistemas y procedimientos cumplen con los más altos estándares de seguridad, brindando confianza tanto a nuestros clientes como a nuestros socios comerciales.

Nuestro equipo trabaja continuamente para mantener estos estándares, implementando políticas y controles que garantizan la seguridad en cada etapa de nuestro trabajo.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
Privacidad e Integridad de los Datos

Todas las interacciones con la API de Multivende deben realizarse usando https.

Será responsabilidad de Multivende actualizar el certificado correspondiente cuando este vaya a expirar.

 Será responsabilidad de quién consuma la API realizar todas las llamadas utilizando https con la versión de TLS> = 1.2. Para detalles del certificado se puede usar openssl en el terminal: 

echo | openssl s_client -showcerts -servername app.multivende.com -connect 
app.multivende.com:443 2>/dev/null | openssl x509 -inform pem -noout –text

 

¿Cuál es el algoritmo de cifrado que utilizamos?

Los algoritmos de cifrado que utilizamos son los siguientes: 

Transport Layer Security (TLS) el cual es un protocolo criptográfico que protege las comunicaciones por Internet y Secure Hash Algorithm (SHA).

  • TLS 1.2
  • TLS 1.3  
  • SHA-256

¿Utilizamos Server Name Indication (SNI)?

Si, dado que Cloudflare utiliza SNI por defecto.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Rangos de IPs en Multivende

Se entrega información sobre los rangos de IPs utilizados por Multivende.

Multivende opera sobre instancias de Amazon con la IP estática 3.15.93.102 la cual puedes registrar en el white list de IP's dentro de tu sistema. 

 

Multivende notificará sobre cambios en la región en la que se encuentre operando a todos quienes estén consumiendo sus servicios.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
Recomendaciones a nivel de seguridad para las integraciones

Encriptación de datos:

Ventajas del uso de una IP estática a nivel de seguridad:

  • Identificación confiable: Una IP estática te permite identificar de manera consistente a tu contraparte porque siempre tendrá la misma dirección IP. Esto puede facilitar la implementación de controles de acceso basados en IP (por ejemplo, listas blancas).
  • Mayor control sobre la seguridad de la red: Como puedes predecir de dónde vendrán las peticiones, es posible configurar firewalls y reglas específicas para esa IP, lo que añade una capa adicional de seguridad.
  • Riesgo de exposición: Si alguien malintencionado descubre esa IP estática, podría intentar atacarla directamente. Sin embargo, si la comunicación está protegida por HTTPS, el cifrado de la conexión protegerá los datos en tránsito.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 

Más información

Preguntas Frecuentes

Ver los artículos
¿Eres un Partner de Multivende? : Sigue nuestras recomendaciones para realizar integraciones vía API.

En este artículo, te compartimos algunas recomendaciones para realizar tu integración vía API con Multivende.

Si debes crear una integración porque formas parte de nuestro Developers Partners Program o si ya te encuentras trabajando en una integración para un merchant de Multivende, debes seguir las siguientes recomendaciones para que puedas brindar la mejor experiencia de trabajo al merchant y para que tus procesos también sean más optimizados.

Desarrollo de integraciones como Partner de Multivende

Si eres miembro de nuestro Developers Partners Program como desarrollador de integraciones con Multivende, debes tomar en cuenta las siguientes recomendaciones:

Consideraciones como desarrollador:

  • Debes asegurarte de que tu equipo de desarrollo asista al onboarding de TI, ya que en este se dejará configurada la cuenta test del merchant para las pruebas en ambiente QA de la integración.

  • Como integrador debes asistir a las reuniones semanales pautadas durante el proyecto de integración.

  • Te pedimos que seas muy claro en las funcionalidades que cubre tu integración, las cuáles debes notificarnos en el Go Live y dejar definido si es factible realizar algún desarrollo customizado que el merchant requiera.

Consideraciones de parte de Multivende:

  • Nuestro equipo de API hará seguimiento para confirmar la finalización del proyecto, es importante que des respuesta a nuestros emails y realizar una reunión para validar que la integración finalizó con éxito.
  • Recuerda que ante cualquier duda o inconveniente en la conexión con nuestro servicio de integraciones, puedes consultarnos a través del correo electrónico api@multivende.com.

Desarrollo de integraciones para clientes

Si ya te encuentras desarrollado una integración específica para un merchant de Multivende, debes tomar en cuenta las siguientes recomendaciones

Consideraciones como desarrollador:

  • Una vez cerrado tu acuerdo comercial, mantén en todo momento la comunicación, es importante que vayas dando estatus de los avances de la integración y asistir a todas a las reuniones pautadas.
    Recuerda que si requieres apoyo del equipo de API de Multivende puedes avisarnos y sumarnos a la comunicación.
  • Debes ser claro en las funcionalidades que cubre tu integración y deja definido si es factible realizar algún desarrollo customizado que el merchant requiera.
  • Debes llenar el formulario de integraciones en conjunto con el merchant cuando el equipo de Onboarding lo solicite para definir el alcance de la integración previo al kickoff.
  • Como integrador, debes asistir a las reuniones semanales pautadas durante el proyecto de integración.

  • Debes solicitar al merchant directamente los accesos a sus cuentas productivas en Multivende y gestionar las pruebas y recursos necesarios para validar la integración.

  • Debes asegurarte de que tu equipo de desarrollo asista al onboarding de TI donde se deja configurada la cuenta test de merchant para las pruebas en ambiente QA de la integración. 
  • Como integrador, debes garantizar que la integración cumpla con las necesidades del merchant.

Consideraciones de parte de Multivende:

  • Multivende es responsable de realizar el kickoff inicial del proyecto para un merchant en conjunto. Como integrador, debes asistir a esta reunión con los miembros de tu equipo de TI que realizará la integración, ya que en el kickoff se debe dejar claro el alcance del proyecto.

  • Nuestro equipo de API hará seguimiento para confirmar la finalización del proyecto, es importante que des respuesta a nuestros emails y realizar una reunión para validar que la integración finalizó con éxito.

  • Recuerda que ante cualquier duda o inconveniente en la conexión con nuestro servicio de integraciones puedes consultarnos a través del correo electrónico api@multivende.com.

¡Manténte atento a las comunicaciones API!

Te aconsejamos estar atento a las comunicaciones de nuestro equipo de desarrollo ante cualquier comunicación que enviemos referente a la actualización en nuestra API, esto con el fin de garantizar que tu desarrollo no se vea afectado ante algún cambio.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
¿Dónde puedo ver mi Client ID y Client Secret?

El Client ID y Client Secret de la aplicación son necesarios para realizar cualquier consulta vía API.

Debes ingresar en tu cuenta previamente creada realizando login a través de:

Tanto el Client ID como el Client Secret los puedes encontrar ingresando a tu lista de aplicaciones.

Haz click en el botón de acciones como se muestra en la siguiente imagen:

Al darle click al botón de acciones podrás editar los datos de tu aplicación, además, en la parte superior del formulario encontrarás el Client ID y el Client Secret resaltado en color azul.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Dónde puedo ver el Merchant ID de mi cuenta?

El Merchant ID es necesario para todas las consultas a través de la API. A continuación, podrás aprender a consultarlo desde la interfaz.

Para consultar tu ID de comerciante, debes seguir los pasos a continuación:

1.- Debes hacer clic en el ícono del lápiz que aparece al lado del nombre de la cuenta. Este enlace te llevará a visualizar/editar los datos de la cuenta.

 

2.- Toma de la URL el ID, este es el identificador de la cuenta (Merchant_id).

 

 

¡Listo! Ya obtuviste tu Merchant ID.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 
Más información
¿Dónde puedo ver los ID de los recursos en la plataforma?

A continuación aprenderás a consultar los diferentes ID de los recursos desde la interfaz de la plataforma Multivende.

Para facilitar la visibilidad entre los ID entregados vía API y la plataforma, en la URL de Multivende puedes verificar el ID del ítem seleccionado.

Por ejemplo, al seleccionar "editar" una bodega la URL será:

https://app.multivende.com/stores-and-warehouses/XXXXXXXX-3639-4c28-9e1c-XXXXXXXXXXXX/edit

Donde el ID correspondiente a la bodega es: XXXXXXXX-3639-4c28-9e1c-XXXXXXXXXXXX.

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

Más información
¿Cómo identifico el Marketplace Connection Id para un canal de venta via API?

El MarketplaceConnectionId es el identificador único de una conexión con un marketplace o canal de venta de la cuenta de un merchant en Multivende.

Puedes consultar la información de este Id para las conexiones de las cuentas de un merchant mediante el endpoint Get Marketplace connections  , la api retornará un array con todas las conexiones disponibles en la cuenta del merchant:

{
"entries": [
{
"_name": "Mercadolibre",
"_id": "a58xxxe-1fb6-4bd2-80xx-1b795xxxa39a",
"name": null,
"country": "cl",
"pictureUrl": "https://s3.amazonaws.com/im-shared/mercadolibre.png",
"provider": "mercadolibre",
"allowPickUpInStore": null
}
],
"pagination": {
"offset": 0,
"limit": 50,
"total_pages": 1,
"current_page": 1,
"next_page": 0,
"previous_page": 0,
"total_items": 1
}
}

En el request de la solicitud se debe identificar el canal de venta al que estamos consultando las conexiones.

Marketplace

mercadolibre

linio

dafiti

ripley

paris

fcom

amazon

walmart

coppel

Online Store:

vtex

magento

shopify

prestashop

wocommerce

jumpseller

bigcommerce

 

Si tienes dudas o necesitas asistencia, puedes escalar un ticket a través de este enlace y nuestro equipo estará encantado de ayudarte.

Equipo Integraciones API Multivende

 

 

 

Más información
¿Cómo crear un ticket para contactar al Equipo de Integraciones vía API?

En caso de que necesites asistencia con la integración de nuestra API, nuestro equipo de Integraciones vía API está disponible para brindarte el soporte que necesitas. A continuación, te explicamos cómo crear un ticket de manera rápida y sencilla para que puedas ponerte en contacto con ellos.

 

Paso 1: Accede a la Plataforma de Soporte

Lo primero que debes hacer es ingresar a la plataforma de soporte o al sistema de tickets de Multivende. Este acceso se encuentra en la sección de Soporte o Ayuda de nuestro sitio web o dentro de la misma aplicación.

  • Desde la web: Dirígete a la página de soporte, encontrarás la opción "Enviar una solicitud"

 

  • Desde la aplicación: Si estás trabajando en nuestra plataforma, busca la opción "Crear ticket de ayuda" en el menú principal.

 

Paso 2: Selecciona la Categoría Correcta

Una vez que hayas ingresado al sistema de soporte, deberás elegir la categoría adecuada para tu solicitud. En este caso, selecciona "Necesito crear un ticket de soporte para integraciones API" que te llevará directamente al formulario de tickets relacionado con este tema.

 

Paso 3: Completa el Formulario de Ticket

El siguiente paso es completar el formulario con los detalles de tu solicitud. Asegúrate de proporcionar la mayor cantidad de información posible para que el equipo de Integraciones pueda ayudarte de manera eficiente.

Los campos más comunes en el formulario incluyen:

  • Correo electrónico: Escribe el correo en donde te enviaremos la confirmación de la creación de tu solicitud y en donde podrás realizar el seguimiento.
  • Nombre y Apellido: De la persona que está creando la solicitud.
  • Asunto del ticket: Escribe un resumen breve y claro de tu solicitud o problema.
  • Nombre de la empresa: Nombre de la empresa que realiza la integración más el nombre del equipo integrador.
  • Sistema que estás integrando: Indicados el sistema, ya sea ERP, OMS, etc...
  • Descripción detallada: Explica detalladamente el problema que estás enfrentando, la duda que tienes o el tipo de asistencia que necesitas. Incluye cualquier error o mensaje que hayas recibido, así como el contexto de tu integración (por ejemplo, versión de la API, pasos que seguiste, etc.).
  • Información adicional: Podrás adjuntar archivos como capturas de pantalla, logs de errores, ejemplos de código, etc. Estos detalles ayudarán al equipo a entender mejor el problema.

Paso 4: Enviar el Ticket

Una vez que hayas completado el formulario y revisado toda la información, haz clic en el botón de Enviar para crear el ticket. Esto enviará tu solicitud directamente al equipo de Integraciones vía API.

Paso 5: Espera la Confirmación y Respuesta

Después de enviar el ticket, recibirás un correo de confirmación con el número de seguimiento del ticket. El equipo de Integraciones comenzará a trabajar en tu solicitud y se pondrá en contacto contigo para proporcionarte una solución o más detalles si fuera necesario.

  • Tiempo de respuesta: El tiempo de respuesta puede variar dependiendo de la complejidad de la solicitud, pero el equipo de Integraciones se compromete a responder lo antes posible.

Paso 6: Cerrar el Ticket

Una vez que se haya resuelto tu solicitud y estés satisfecho con la solución, se procederá a cerrar el ticket. Si en algún momento tienes más preguntas o problemas adicionales, puedes abrir un nuevo ticket en cualquier momento.

 


Consejos para Crear un Ticket Eficaz

  • Sé claro y preciso: Cuanto más detallada sea la información que proporciones, más fácil será para el equipo de Integraciones ayudarte.
  • Incluye ejemplos y código: Si estás enfrentando un problema técnico, incluir fragmentos de código, logs o capturas de pantalla puede ayudar a que se resuelva más rápidamente.
  • Prioriza la solicitud: Si el problema es urgente, asegúrate de marcarlo con la prioridad más alta para que el equipo pueda darle atención inmediata.

 

Equipo de integraciones API Multivende.

 

 

 

 

 

Más información