Saltar al contenido principal

Ventas

  • Registro de ventas desde Multivende hacia tu sistema

    Conoce las herramientas de Multivende para registrar tus ventas desde la plataforma a 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).

    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 -g '{{base_url}}/api/m/{{merchant_id}}/checkouts/light/p1?_updated_at_from=2020-03-18%2018%3A30&_updated_at_to=2020-03-18%2020%3A30' \
    --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"
        }
      ],
      "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.

    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"
        }
      ]
    }
    

     

    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

     

     

     

    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"
      }
    ]
    
     
    ℹ️ 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" --> "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"

    • Boleta:
    {
      "InvoiceRequired: "false",
    }
    
    • Factura:
    { 
    "InvoiceRequired: "false",
    }

    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".

    • 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

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

    Conoce cómo cargar documentos tributarios a través de la API de Multivende.

     
    Subir documentos electrónicos a las ventas

    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: 

    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.

     

     

    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 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

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

    Descubre cómo cargar una venta en Multivende paso a paso en este artículo.

     
    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"
    }
    

     

     

    Equipo Integraciones API Multivende

     
    Más información
  • Cómo administrar atributos personalizados de ventas via API

    Conoce cómo configurar atributos personalizados a una venta a través de la 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