Conoce las herramientas de Multivende para registrar tus ventas desde la plataforma a tu sistema.
Ventas
-
Registro de ventas desde Multivende hacia tu sistema
Para registrar las ventas desde Multivende hacia un sistema tenemos a disposición dos herramientas:
- 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.
- 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).
Debes utilizar el endpoint Get checkouts light whit scroll para realizar el sondeo de las órdenes desde Multivende.
En cada solicitud, se debe enviar el MerchantId.De manera opcional, puedes filtrar por MarketplaceConnectionId y obtener las ventas utilizando los campos de fecha:
- UpdatedAt: fecha de última actualización de la orden.
- SoldAt: fecha de venta en el canal de venta.
También debes definir el límite (limit) de resultados a consultar (valor permitido entre 50 y 1000). Este endpoint permite obtener las ventas del merchant paginadas mediante scroll.
ℹ️ Información: El resultado (response) de la llamada al "Get checkouts light whit scroll" no devuelve las ventas ordenadas por fecha.⚠️ Advertencia:
Recuerda que, para un correcto registro de tus ventas, debes ejecutar el polling comenzando desde la última vez en que se ejecutó correctamente.
Por ejemplo, si la última ejecución fue el2025-01-01T02:55:31.000Z, al realizar una nueva solicitud asegúrate de establecer el parámetrofromdesde esa fecha.Ten en cuenta que el rango máximo permitido por consulta es de 2 horas.
Si realizas una consulta con un rango mayor, no solo podrías obtener resultados incompletos, sino que además las consultas serán bloqueadas y se retornará un error.De esta manera, garantizas un registro completo, confiable y dentro de los límites operativos del sistema.
Modos de consulta según funcionalidad a integrar
- Sistemas que intervienen en la operación de la orden. Por ejemplo: generación de etiquetas, documentos tributarios, entre otros.
- _updated_at_from (buscar en fecha de última actualización en Multivende).
- _updated_at_to (buscar hasta la fecha de última actualización en Multivende).
-
_marketplace_connection_id (opcional, filtra por Marketplace).
- Sistemas que no intervienen en la operación de la orden. Por ejemplo: reportería, herramientas de BI.
- _sold_at_from (buscar en Fecha de venta en el mercado).
- _sold_at_to (buscar hasta la fecha de venta en el Marketplace).
- _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 canal de venta 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, puedes utilizar los siguientes formatos:
- YYYY-MM-DD
- YYYY-MM-DDTHH:mm
- YYYY-MM-DDTHH:mm:ss
- YYYY-MM-DD[T]HH:mm:ss.SSS[Z]
Ejemplo:
Si la fecha actual es “2020-03-18 20:30”, el request sería de la siguiente manera:
curl --location -g '{{base_url}}/api/m/{{merchant_id}}/checkouts/light/limit/{{limit}}?_scroll_id={{scroll_id}}&_updated_at_from=2025-01-01T13:43:00.OOOZ&_updated_at_to=2025-01-02T13:490:00.OOOZ'
--header 'Authorization: Bearer {{access_token}}'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" } ], "pagination": { "limit": 50, "scroll_id":XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, "previous_id":XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX } }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.
Campos importantes dentro de la venta:
-
Información general de la venta:
- "_id": identificador de Multivende para la venta.
- "origin": Nombre del canal desde donde se origina la venta.
-
Fechas:
- "soldAt": fecha en que se registró la venta en el canal.
- "createdAt": fecha en que se registró la venta en Multivende.
- "updatedAt": fecha en la venta se actualizó por última vez.
- "courierName": nombre del courier asignado por el canal.
- "shippingMode": modo logístico que informa el canal.
-
"Client" (Información asociada al cliente que realizó la compra):
- "fullName": Nombre completo.
- "name": Nombre.
- "lastName": Apellido
- "comune": Comuna.
- "city": Ciudad.
- "documentType": Tipo de documento.
- "taxId": RUT o DNI.
- "email": Correo electrónico.
- "phoneNumber" Número telefonico.
-
"BillingAddresses" (Dirección de facturación - Se encuentra dentro del "Client")
- "address_1" - "address_2": Direcciones.
- "zipCode": Código Postal.
- "city": Ciudad.
- "country": País.
- "neighborhood": Comuna - Barrio.
- "state": Estado.
-
"CheckoutLink" (Trae la información asociada al canal remoto):
- "externalId": Contiene el "id" del pedido remoto.
- "externalOrderNumber": Contiene el número del pedido remoto.
- "externalCustomerOrderNumber": Contiene el número del pedido remoto que es visible para el cliente final.
-
"externalContent": Contiene la información JSON del pedido remoto externo, que se toma de la API de integración.
⚠️ Importante:
El campo "externalContent" devuelve la información nativa del canal. Por favor, NO tomes los datos de este campo.
De ser necesario, comunicarse previamente con el equipo de Integraciones API Multivende. -
"CheckoutItems"
- Información asociada a los productos que se compraron. Devuelve un array por cada item.
- "CheckoutItems" -> "ProductVersion" -> "code": SKU del item.
- Información asociada a los productos que se compraron. Devuelve un array por cada item.
-
Prices by item: (Estos se encuentran dentro del campo "CheckoutItems")
- "gross": Precio del artículo (sin descuento).
- "count": Cantidad solicitada del SKU.
- "total": Total neto (gross * count).
- "discount": Descuento aplicado al producto.
-
"totalWithDiscount":Total neto menos descuento (total - discount)
Información asociada a los precios totales de la orden
- "total": Importe Total Bruto (Sin descuentos de venta, incluye descuentos por artículo)
- "totalDiscounts": Cantidad total de descuentos
- "totalWithDiscount": Importe Neto Total (Con descuento)
- "totalPayment": Importe Neto Total (Con descuento + envío)
- "DeliveryOrder" -> "cost": Importe Total Envío del pedido (Flete)
-
"CheckoutPayments"
- Información asociada a los pagos y métodos de pagos de la orden.
-
"CheckoutPayments" -> "PaymentMethod": identificar el o los métodos de pagos.
- Más información aquí -> ¿Cómo funcionan los medios de pago?
-
"CheckoutPayments" -> "PaymentMethod": identificar el o los métodos de pagos.
- Información asociada a los pagos y métodos de pagos de la orden.
-
"CheckoutSurcharge"
- CheckoutSurcharges es un arreglo que contiene los recargos aplicados durante el pago cuando el comercio define precios diferenciados según el medio de pago, por ejemplo pagos con WebPay (tarjeta).
{ "CheckoutSurcharges": [ { "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "code": null, "status": "created", "surcharge": 4550, "surchargeType": "value", "detail": null, "createdAt": "2026-02-09T13:20:31.000Z", "updatedAt": "2026-02-09T13:20:31.000Z", "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CheckoutId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CheckoutSurchargeTypeId": null, "CreatedById": null, "UpdatedById": null } ] }ℹ️ Información:
Este registro se genera únicamente en integraciones WooCommerce y refleja el recargo que se aplica al precio base del producto.-
"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.
- Si quieres evitar las actualizaciones masivas que los canales hacen de forma repentina,
puedes agregar una validación que limite "sold_at" a un rango de 1 a 2 meses. - 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).
- 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.
- Para determinar el estado de un despacho, no se debe validar el campo deliveryStatus.
En su lugar, siempre se debe utilizar el campo deliveryOrderStatusId, ya que este contiene los estados normalizados en Multivende de acuerdo con la información proporcionada por el canal de venta.- Puedes encontrar los estados en el siguiente artículo:
- Para toda venta de Kits de Mercado Libre, deberán revisar previamente el artículo:
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.
Response:
{ "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 (...)", "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 (...)", "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" } ] }Flujo de la consulta
Equipo Integraciones API Multivende
-
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" or "person" "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" } ]
ℹ️ Información: 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" --> "externalContent".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"
- Boleta:
{ "InvoiceRequired: "false", }
- Factura:
{
"InvoiceRequired: "true",
}Mercadolibre
Se informa dentro de:
"remote_order_extra_billing_information" → "buyer" → "attributes" → "cust_type"
- Si la orden de compra es una Persona Física (Cliente) llegará de la siguiente manera:
{ "remote_order_billing_information":
{ "buyer":
{ "billing_info":
{ "attributes":
{ "cust_type": "CO"
}
}
}
}
}- Si la orden de compra es una Persona Jurídica (Empresa) llegará de la siguiente manera:
{ "remote_order_billing_information":
{ "buyer":
{ "billing_info":
{ "attributes":
{ "cust_type": "BU"
}
}
}
}
}ℹ️ Información: Cuando una orden es del tipo 'Fulfillment', la facturación es gestionada directamente por MercadoLibre. Por lo tanto, el merchant no debe emitir factura, y en consecuencia, no verás los campos mencionados anteriormente.Paris
Se informa dentro del campo "originInvoiceType".
- Boleta:
{ "originInvoiceType: "boleta, }
- Factura:
{ "originInvoiceType: "factura, }
Ripley
Se informa dentro del campo "has_invoice"
- Boleta:
{ "has_invoice: "false, }
- Factura:
{ "has_invoice: "true", }
Shopify
Se informa dentro de los campos "CheckoutLink" --> "tags"
"tags": [ "FACTURA", ]
VTEX
Se informa dentro del campo "clientProfileData" --> "isCorporate"
{ "isCorporate: true // Factura }
Equipo Integraciones API Multivende
-
¿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.
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:
- Checkout_id (Identificador único de la venta en Multivende).
- ClientId (se obtiene desde el Client en el detalle de la venta consultando el Endpoint Get Checkout).
- id (Número de folio correspondiente al documento a ser cargado).
- Fecha de emisión.
- type (se detalla más adelante).
- provider (se detalla más adelante).
- ElectronicBillingDocumentEmitterId (se detalla más adelante).
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:
- El endpoint Upload file to electronic billing document permite la carga del archivo PDF desde local.
- El endpoint Upload file to electronic billing document base64 permite la carga del archivo 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:
- Delivery_order_id (Id del despacho).
- ClientId (se obtiene del detalle de la venta).
- id (número de folio).
- Fecha de emisión.
- type (se detalla más adelante).
- provider (se detalla más adelante).
- ElectronicBillingDocumentEmitterId (se detalla más adelante).
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
¿Cómo crear el Provider (proveedor)?
Para crear un Provider (proveedor), es necesario escalar la solicitud a través del formulario de Soporte Integraciones API, disponible en el siguiente enlace:
En el formulario se debe incluir la siguiente información:
Sistema DTE
Empresa desarrolladora de la integración
Merchant ID
Una vez recibida la solicitud, Multivende generará el código de proveedor y lo informará de vuelta a través del mismo correo electrónico.
¿Cómo crear un Emisor 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.
Equipo Integraciones API Multivende
-
¿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 siguientes Endpoints que tenemos disponibles 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}}' \
--header 'Content-Type: application/json' \
--data '{
"verificationStatus": "pending",
"authorizationCode": 12345,
"detail": "detail",
"cardNumber": 1234567,
"installments": 12
}'Ejemplo Response:
{
"_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"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": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"CheckoutId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"PaymentMethodId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"PaymentGatewayId": null,
"CurrencyId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}Equipo Integraciones API Multivende
-
¿Cómo se registra una venta de Kit que proviene de MercadoLibre?
Cuando un comprador adquiere un Kit en MercadoLibre, se genera una única venta en Multivende que representa al kit completo, las órdenes tipo kit se registran como una orden normal, ya que no tienen diferencias en la lógica de registro respecto a otras órdenes.
- MercadoLibre genera varias órdenes las cuales agrupa en único pack
Por cada producto del kit, MercadoLibre crea una orden distinta aunque todas pertenezcan a la misma venta en MercadoLibre.
- Multivende toma el pack como única venta
Multivende recibe esas órdenes y las asocia como parte de la misma transacción (checkout) en su sistema, manteniendo como identificador el pack id.
Flujo general para identificar una venta de kit vía API Multivende:
- Leer la venta usando el endpoint de Get Checkout
- Validar si la orden corresponde a un kit mediante el campo "tags"
Tags clave a validar:
- kit
- kit_component
*En "tags" pueden llegar varios valores además de los anteriores.
Si estos tags están presentes, significa que la venta contiene productos asociados a un kit.
3. Si deseas identificar todas los números de las órdenes de Mercadolibre relacionadas al kit lo puedes hacer usando "externalContent" -> "kit_orders"
Este campo contiene un arreglo con la información de cada orden que compone el kit.
Ejemplo de kit_orders:
"kit_orders": [ { "order_id": 200001408888XXXX, "item_id": "MLB595574XXXX", "variation_id": null, "pack_id": 20000103169XXXX, "shipment_id": 4598979XXXX, "parent_item_id": "MLB595731XXXX" }, { "order_id": 20000140888XXXX, "item_id": "MLB595581XXXX", "variation_id": null, "pack_id": 200001031698XXXX, "shipment_id": 4598979XXXX, "parent_item_id": "MLB595731XXXX" }, { "order_id": 200001408888XXXX, "item_id": "MLB595585XXXX", "variation_id": null, "pack_id": 200001031698XXXX, "shipment_id": 4598979XXXX, "parent_item_id": "MLB595731XXXX" } ]Cada objeto dentro de kit_orders representa una orden individual del kit:
Campo Descripción order_id ID de la orden individual del componente item_id ID del producto vendido variation_id ID de la variación (si aplica) pack_id Identificador único del Kit (Pack) shipment_id ID del envío compartido parent_item_id ID del ítem principal del Kit - Todos las órdenes comparten el mismo:
- Pack_id
- shipment_id , ya que se envían juntos
- parent_item_id, identifica el producto principal del Kit
4. Inventario:
Multivende descontará el stock de cada producto individual que compone el kit (no del producto tipo pack).Cualquier duda o consulta adicional referente a este artículo, puedes escribirnos a api@multivende.com.
-
Carga de ventas de canales via API: Tutorial Completo
Para poder registrar una venta se deben cumplir las siguientes condiciones:
- El producto debe estar registrado en Multivende.
- Los "id" deben ser únicos por conexión.
- 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" }
Equipo Integraciones API Multivende
-
¿Cómo validar y actualizar un atributo desde la integración en la venta?
Lo primero es validar el o los sets de atributos personalizados para ventas que el merchant tenga creados esto se puede realizar mediante el endpoint Get Checkout Custom Attribute Sets.
ℹ️ Información:
En caso de no poseer atributos creados puedes seguir el paso a paso explicado en el siguiente artículo: Cómo crear y configurar atributos personalizados para ventas en MultivendeRequest:
{ "entries": [ { "_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "name":"Set_API_Multivende", "position":0 } ], "pagination": { "offset":0, "limit":50, "total_pages":1, "current_page":1, "next_page":0, "previous_page":0, "total_items":1 } }
Una vez obtenido el set de atributos, podrás consultar los atributos que contiene utilizando el endpoint Get Checkouts Custom Attributes, el cual te mostrará todos los atributos personalizados de venta asociados a dicho set.{ "entries": [ { "_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "name":"Atributo_API", "code":"atributo_api", "description":null, "position":0, "tags":null, "status":"created", "createdAt":"2025-11-10T15:37:25.000Z", "updatedAt":"2025-11-10T15:37:25.000Z", "MerchantId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CustomAttributeSetId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CustomAttributeScopeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CustomAttributeTypeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CustomAttributeSpecificityId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CreatedById":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "UpdatedById":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CustomAttributeOptions":[] } ], "pagination":{ "offset":0, "limit":50, "total_pages":1, "current_page":1, "next_page":0, "previous_page":0, "total_items":1 }
}Si deseas editar o asignar un valor a un atributo dentro de una venta, puedes hacerlo a través del endpoint Update Checkout Custom Attribute Values.
En este caso, deberás enviar en el body el CustomAttributeId del atributo que quieres modificar y el CustomAttributeOptionId correspondiente a la opción que deseas asignar.
- Request:
curl--location--requestPUT \'https://app.multivende.com/api/checkouts/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/custom-attributes-values/upsert'\ --header'Content-Type: application/json'\ --header'Authorization: Bearer (TOKEN)'\ --data'{ "CustomAttributeValues": { "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX":"Texto Simple" }}'- Response:
[ { "_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "position":0, "status":"created", "CustomAttributeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "MerchantId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CreatedById":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "UpdatedById":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "CheckoutId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "text":"Texto Simple", "updatedAt":"2025-11-10T15:41:00.000Z", "createdAt":"2025-11-10T15:41:00.000Z" }
]¿Cómo se visualiza el detalle del atributo personalizado en la API?
Para consultar el detalle de los atributos custom asociados a una venta, es importante revisar el detalle de la venta mediante el Get Checkout y consultar el campo:
"CustomAttributeValues"
Este campo corresponde a un arreglo (array) que contiene la información de los atributos personalizados asociados a la transacción.
Dentro de este arreglo se puede encontrar:
El tipo de atributo configurado.
La opción seleccionada específicamente para esa venta.
Información adicional relacionada con el atributo.
Cada objeto dentro de
CustomAttributeValuesrepresenta un atributo personalizado aplicado al checkout.{ "CustomAttributeValues": [ { "_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "name":null, "text":"Y", "number":null, "code":null, "createdAt":"2026-02-13T15:06:22.000Z", "updatedAt":"2026-02-13T15:06:22.000Z", "CustomAttributeId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "CustomAttributeOptionId":null, "CustomAttributeSetId":null, "CheckoutId":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "CreatedById":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "UpdatedById":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "CustomAttribute": { "_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "name":"Estado", "code":"estado", "description":null, "createdAt":"2021-04-27T16:22:14.000Z", "updatedAt":"2021-04-27T16:22:14.000Z", "CustomAttributeSet": { "_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX", "name":"EstadoIntegracion", "description":"Estado Integración" }, "CustomAttributeType": { "_id":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "name":"CUSTOM_ATTRIBUTE_TYPES.Single_line_text.Name", "code":"single_line_text", "description":"CUSTOM_ATTRIBUTE_TYPES.Single_line_text.Description" } }, "CustomAttributeOption":null } ] }