> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getjusto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Estado de pedido actualizado

Este webhook se envía cuando cambia el estado de un pedido o cuando ocurre un evento importante del despacho asociado.

## Cambios de estado del pedido

Cuando cambia el estado operacional de la orden, `previousOrderStatus` y `newOrderStatus` vienen con valores distintos.

```json theme={null}
{
  "type": "ecommerce.order.status.updated",
  "data": {
    "previousOrderStatus": "waiting",
    "newOrderStatus": "preparing",
    "order": {
      "_id": "order-id",
      "orderStatus": "preparing"
    }
  }
}
```

## Eventos importantes del despacho

Cuando el evento se origina por un cambio importante del despacho, `previousOrderStatus` y `newOrderStatus` vienen con el mismo valor y el payload incluye `delivery`.

Justo envía estos eventos de despacho cuando:

* cambia el estado del despacho;
* el repartidor llega cerca del local;
* el repartidor llega cerca del cliente.

No se envía un webhook por cada cambio de ubicación del repartidor.

```json theme={null}
{
  "type": "ecommerce.order.status.updated",
  "data": {
    "previousOrderStatus": "preparing",
    "newOrderStatus": "preparing",
    "order": {
      "_id": "order-id",
      "orderStatus": "preparing"
    },
    "delivery": {
      "_id": "delivery-id",
      "status": "active",
      "nearStoreAt": "2026-05-28T15:30:00.000Z",
      "estimatedArrivalAtStoreAt": "2026-05-28T15:35:00.000Z",
      "driverInformation": {
        "type": "moto",
        "phone": "+56999999999",
        "name": "Peter",
        "image": "https://example.com/driver.png"
      }
    }
  }
}
```

### Información del repartidor

Cuando hay un repartidor asignado y el proveedor de despacho entrega sus datos, Justo envía la información en `data.delivery.driverInformation`.

| Campo   | Significado                                        |
| ------- | -------------------------------------------------- |
| `type`  | Tipo de vehículo o repartidor, por ejemplo `moto`. |
| `phone` | Teléfono del repartidor, si está disponible.       |
| `name`  | Nombre del repartidor, si está disponible.         |
| `image` | URL de la foto del repartidor, si está disponible. |

El objeto puede venir ausente si todavía no hay repartidor asignado o si el proveedor de despacho no entrega esa información. Algunos proveedores pueden enviar campos adicionales, como `code` o `categoryId`.

Para sincronizar una orden, usa siempre `data.order._id`. Si necesitas el estado del despacho o datos del repartidor, revisa `data.delivery` cuando venga presente.


## OpenAPI

````yaml post /ecommerce.order.status.updated
openapi: 3.1.0
info:
  title: Justo API Webhooks
  version: 3.0.0
servers: []
security: []
paths:
  /ecommerce.order.status.updated:
    post:
      summary: Estado de pedido actualizado
      requestBody:
        description: Webhook Payload
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  description: El tipo de webhook.
                  type: string
                  enum:
                    - ecommerce.order.status.updated
                  const: ecommerce.order.status.updated
                data:
                  $ref: '#/components/schemas/apiOrderStatusUpdatedWebhookData'
                websiteId:
                  type: string
                  description: ID de la marca.
                storeId:
                  type: string
                  description: ID del local.
                date:
                  type: string
                  example: '2020-01-01T00:00:00.000Z'
                  format: date-time
                  description: Fecha en que se generó el evento.
                eventId:
                  type: string
                  description: ID único del evento.
      responses:
        '200':
          description: OK
components:
  schemas:
    apiOrderStatusUpdatedWebhookData:
      type: object
      description: >-
        Datos del webhook de actualización de pedido. Si previousOrderStatus y
        newOrderStatus son iguales, el evento corresponde a un cambio importante
        del despacho asociado.
      properties:
        order:
          $ref: '#/components/schemas/apiOrder'
        delivery:
          $ref: '#/components/schemas/apiOrderDelivery'
          description: >-
            Despacho actualizado. Se incluye cuando el evento se origina por un
            cambio importante del despacho, como cambio de estado o llegada del
            repartidor cerca del local o cliente.
        previousOrderStatus:
          type: string
          description: Estado anterior del pedido.
          enum:
            - pending
            - waiting
            - preparing
            - delivering
            - done
            - cancelled
        newOrderStatus:
          type: string
          description: Nuevo estado del pedido.
          enum:
            - pending
            - waiting
            - preparing
            - delivering
            - done
            - cancelled
    apiOrder:
      type: object
      description: Pedido de ecommerce.
      properties:
        _id:
          type: string
          description: ID del pedido.
          example: ord-123
        orderStatus:
          type: string
          description: Estado operacional del pedido.
          enum:
            - pending
            - waiting
            - preparing
            - delivering
            - done
            - cancelled
        paymentStatus:
          type: string
          description: Estado del pago del pedido.
          enum:
            - pending
            - done
            - error
            - blocked
            - inReview
            - waitingForAdditionalPayment
        isScheduled:
          type: boolean
          description: Indica si el pedido es programado.
        isConfirmed:
          type: boolean
          description: Indica si el pedido programado fue confirmado.
        websiteId:
          type: string
          description: ID de la marca.
        storeId:
          type: string
          description: ID del local.
        code:
          type: string
          description: Código único del pedido en Justo.
          example: '123'
        fullCode:
          type: string
          description: Código del pedido con el correlativo diario de la marca.
          example: C#123
        userId:
          type: string
          description: ID del usuario que creó el pedido.
        createdAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de creación del pedido.
        address:
          $ref: '#/components/schemas/apiOrderAddress'
        menuId:
          type: string
          description: ID del menú desde el que se creó el pedido.
        deliveryType:
          type: string
          description: Tipo de entrega del pedido.
          enum:
            - delivery
            - go
            - serve
        deliverAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha en que el pedido debe ser entregado o retirado.
        timeText:
          type: string
          description: Texto legible con la ventana estimada de entrega.
        paymentType:
          type: string
          description: Medio de pago seleccionado.
        paymentTypeLabel:
          type: string
          description: Nombre legible del medio de pago.
        paymentTypeIsIntegration:
          type: boolean
          description: Indica si el medio de pago viene de una integración.
        tipAmount:
          type: number
          description: Monto de propina.
        amountToPay:
          type: number
          description: Monto total a pagar por el cliente, incluyendo propina.
        deliveryFee:
          type: number
          description: Precio del despacho cobrado al cliente.
        deliveryFeeWithoutDiscount:
          type: number
          description: >-
            Precio original del despacho antes de descuentos aplicados sobre el
            costo de entrega. Es un campo opcional de compatibilidad y solo se
            informa para integraciones legacy específicas.
        serviceFee:
          type: number
          description: Cargo de servicio cobrado al cliente.
        itemsPrice:
          type: number
          description: Precio de los productos, sin propina ni despacho.
        totalPrice:
          type: number
          description: Monto del pedido sin propina.
        baseItemsPrice:
          type: number
          description: >-
            Precio original de los productos antes de descuentos de producto,
            promociones, cupón, puntos o Justo Coins. Corresponde a la suma de
            amount * baseUnitPrice de los items.
        baseTotalPrice:
          type: number
          description: >-
            Total original del pedido antes de descuentos, sin propina. Se
            calcula como baseItemsPrice + deliveryFee + serviceFee, usando el
            deliveryFee ya neto si el cupón descontó el despacho.
        itemsPriceBeforeDiscountsAfterProductDiscount:
          type: number
          description: >-
            Precio de los productos después de descuentos propios del producto o
            promociones de producto, pero antes de cupón, puntos, Justo Coins y
            otros descuentos posteriores.
        totalPriceBeforeDiscountsAfterProductDiscount:
          type: number
          description: >-
            Total del pedido después de descuentos propios del producto o
            promociones de producto, pero antes de cupón, puntos, Justo Coins y
            otros descuentos posteriores. Se calcula como
            itemsPriceBeforeDiscountsAfterProductDiscount + deliveryFee +
            serviceFee.
        discountedAmountAfterProductDiscount:
          type: number
          description: >-
            Monto descontado después de aplicar descuentos propios del producto
            o promociones de producto y antes de separar quién financia el
            descuento. Se calcula como
            totalPriceBeforeDiscountsAfterProductDiscount - totalPrice e incluye
            descuentos posteriores como cupón, puntos de la marca y Justo Coins.
        justoCoinsDiscount:
          type: number
          description: >-
            Monto descontado usando Justo Coins. Se limita al precio disponible
            del carrito después de cupón y otros descuentos aplicables, para
            evitar descontar más que el saldo pagable.
        websiteCoinsDiscount:
          type: number
          description: >-
            Monto descontado usando puntos o coins del programa de fidelidad de
            la marca. Se limita al precio disponible del carrito después de
            cupón, Justo Coins y otros descuentos aplicables.
        totalDiscount:
          type: number
          description: >-
            Monto total descontado del pedido frente al precio base. Es un campo
            derivado y se calcula como baseTotalPrice - totalPrice.
        amountFinancedByWebsite:
          type: number
          description: >-
            Parte del descuento total financiada por la marca. Se calcula desde
            discountedAmountAfterProductDiscount restando la parte financiada
            por Justo.
        amountFinancedByJusto:
          type: number
          description: >-
            Parte del descuento total financiada por Justo. Incluye Justo Coins
            y la porción del cupón financiada por Justo cuando aplica.
        expectedPreparationDuration:
          type: number
          description: Tiempo estimado de preparación en minutos.
        deliveryDuration:
          type: number
          description: Tiempo estimado de despacho en minutos.
        cashAmount:
          type: number
          description: Monto que el cliente declara pagar si el medio de pago es efectivo.
        source:
          type: string
          description: Origen del pedido.
        buyerName:
          type: string
          description: Nombre del cliente.
        phone:
          type: string
          description: Teléfono del cliente.
        email:
          type: string
          description: Email del cliente.
        couponId:
          type: string
          description: ID del cupón usado.
        couponName:
          type: string
          description: Nombre del cupón usado.
        couponCode:
          type: string
          description: Código del cupón usado.
        couponExternalId:
          type: string
          description: ID externo del cupón usado, si el cupón lo tiene configurado.
        couponDiscount:
          type: number
          description: >-
            Monto descontado por cupón. Puede incluir descuento sobre productos
            y, según el tipo de cupón, descuento sobre el despacho.
        couponPercentageOff:
          type: number
          description: >-
            Porcentaje de descuento configurado en el cupón, cuando el cupón es
            porcentual.
        couponType:
          type: string
          description: Tipo de cupón usado para calcular el descuento.
        promotionDiscount:
          type: number
          description: >-
            Monto total descontado por promociones aplicadas a productos del
            pedido. Se calcula sumando items[].promotionDiscount.
        promotionIds:
          type: array
          description: IDs únicos de las promociones aplicadas a los items del pedido.
          items:
            type: string
        flagColor:
          type: string
          description: Color de la bandera del pedido en POS.
        items:
          type: array
          description: Detalle de los productos vendidos en el pedido.
          items:
            $ref: '#/components/schemas/apiOrderItem'
        transaction:
          $ref: '#/components/schemas/apiOrderTransaction'
        deliveries:
          type: array
          description: Despachos asociados al pedido.
          items:
            $ref: '#/components/schemas/apiOrderDelivery'
        orderParams:
          type: object
          description: Parámetros adicionales del pedido.
          additionalProperties: true
        hasManagedDelivery:
          type: boolean
          description: Indica si el despacho es gestionado por Justo.
        gift:
          type: object
          description: Información de regalo, si el pedido fue marcado como regalo.
          additionalProperties: true
        billing:
          type: object
          description: Información de facturación del cliente.
          additionalProperties: true
        cancellationInfo:
          type: object
          description: Información de cancelación del pedido.
          additionalProperties: true
        deliveryZoneName:
          type: string
          description: Nombre de la zona de despacho aplicada al pedido.
    apiOrderDelivery:
      type: object
      description: Información de un despacho asociado al pedido.
      properties:
        _id:
          type: string
          description: ID del despacho.
        price:
          type: number
          description: Precio del despacho.
          example: 2500
        status:
          type: string
          description: Estado del despacho.
          enum:
            - active
            - canceled
            - cancelled
            - done
            - error
            - pending
            - scheduled
            - delivering
            - waiting
            - unconfirmed
        placeName:
          type: string
          description: Nombre del lugar de destino.
        isCash:
          type: boolean
          description: Indica si el despacho se paga en efectivo.
        instructions:
          type: string
          description: Instrucciones para el despacho.
        driverPassword:
          type: string
          description: Código que debe presentar el repartidor al retirar el pedido.
          example: '5366'
        fromLocation:
          type: object
          description: Coordenadas geográficas.
          properties:
            lat:
              type: number
              description: Latitud.
              example: -33.4489
            lng:
              type: number
              description: Longitud.
              example: -70.6693
        toLocation:
          type: object
          description: Coordenadas geográficas.
          properties:
            lat:
              type: number
              description: Latitud.
              example: -33.4489
            lng:
              type: number
              description: Longitud.
              example: -70.6693
        trackingURL:
          type: string
          description: URL de seguimiento del despacho.
        orderId:
          type: string
          description: ID del pedido asociado al despacho.
        activatesAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha en que se activa el despacho.
        createdAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de creación del despacho.
        forDate:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha objetivo del despacho.
        nearStoreAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha en que el repartidor llegó cerca del local.
        pickupAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de retiro del pedido.
        nearClientAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha en que el repartidor llegó cerca del cliente.
        completedAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha en que se completó el despacho.
        canceledAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de cancelación del despacho.
        deliveryExpectedAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha estimada de entrega.
        estimatedArrivalAtStoreAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha estimada de llegada del driver al local.
        driverReceivedAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha en que el driver recibió el pedido, si aplica.
        driverInformation:
          type: object
          description: Información del driver asignado, si está disponible.
          additionalProperties: true
        deliveryInformation:
          type: object
          description: Información adicional del despacho, si está disponible.
          additionalProperties: true
        externalId:
          type: string
          description: ID externo del despacho, si existe.
        specialCode:
          type: string
          description: Código externo o especial del despacho, si existe.
    apiOrderAddress:
      type: object
      description: Dirección de entrega del pedido.
      properties:
        _id:
          type: string
          description: ID de la dirección.
        placeId:
          type: string
          description: ID del lugar asociado a la dirección.
        address:
          type: string
          description: Dirección principal en formato legacy.
          example: Av. Apoquindo 3000
        addressLine2:
          type: string
          description: Departamento, oficina u otra información complementaria.
          example: Depto 1201
        addressSecondary:
          type: string
          description: Comuna, ciudad o referencia secundaria de la dirección.
        location:
          type: object
          description: Coordenadas geográficas.
          properties:
            lat:
              type: number
              description: Latitud.
              example: -33.4489
            lng:
              type: number
              description: Longitud.
              example: -70.6693
    apiOrderItem:
      type: object
      description: Producto vendido dentro del pedido.
      properties:
        _id:
          type: string
          description: ID del item del pedido.
        product:
          type: object
          description: Producto asociado al item.
          properties:
            _id:
              type: string
              description: ID Justo del producto.
            name:
              type: string
              description: Nombre del producto.
              example: Hamburguesa
            externalId:
              type: string
              description: ID externo del producto configurado por la marca.
            metadata:
              type: object
              description: Metadata del producto escrita por API v3.
              additionalProperties: true
            priceMetadata:
              type: object
              description: Metadata del precio/disponibilidad escrita por API v3.
              additionalProperties: true
        unitPrice:
          type: number
          description: Precio unitario con descuento, sin incluir descuento de cupón.
          example: 5990
        baseUnitPrice:
          type: number
          description: Precio unitario original antes de descuentos.
          example: 5990
        productPrice:
          type: number
          description: Precio del producto con descuento.
          example: 5990
        baseProductPrice:
          type: number
          description: Precio original del producto antes de descuentos.
          example: 5990
        amount:
          type: number
          description: Cantidad de este producto en el pedido.
          example: 2
        comment:
          type: string
          description: Instrucciones adicionales para este producto.
        description:
          type: string
          description: Resumen en texto de los modificadores e instrucciones del item.
          example: 'Bebida: Coca Zero - Comentario: "Sin cebolla"'
        promotionId:
          type: string
          description: ID de la promoción aplicada al item.
        promotionDiscount:
          type: number
          description: Monto descontado por promoción en el item.
        promotionType:
          type: string
          description: Tipo de promoción aplicada al item.
        promotionLabel:
          type: string
          description: Etiqueta visible de la promoción aplicada al item.
        modifiers:
          type: array
          description: Modificadores seleccionados para el item.
          items:
            $ref: '#/components/schemas/apiOrderItemModifier'
    apiOrderTransaction:
      type: object
      description: Transacción de pago asociada al pedido.
      properties:
        _id:
          type: string
          description: ID de la transacción.
        totalPrice:
          type: number
          description: Monto total de la transacción.
        paymentType:
          type: string
          description: Medio de pago usado en la transacción.
        cardType:
          type: string
          description: Tipo de tarjeta usada, si aplica.
        cardLast4:
          type: string
          description: Últimos cuatro dígitos de la tarjeta, si aplica.
        status:
          type: string
          description: Estado de la transacción.
    apiOrderItemModifier:
      type: object
      description: Modificador seleccionado para un item del pedido.
      properties:
        modifierId:
          type: string
          description: ID Justo del modificador.
        externalId:
          type: string
          description: ID externo del modificador configurado por la marca.
        name:
          type: string
          description: Nombre del modificador.
          example: Agregados
        shortName:
          type: string
          description: Nombre corto del modificador.
        metadata:
          type: object
          description: Metadata del modificador escrita por API v3.
          additionalProperties: true
        description:
          type: string
          description: Resumen en texto de las opciones seleccionadas.
        countById:
          type: object
          description: Cantidad seleccionada por ID Justo de opción.
          additionalProperties:
            type: number
        countByExternalId:
          type: object
          description: Cantidad seleccionada por ID externo de opción.
          additionalProperties:
            type: number
        options:
          type: array
          description: Opciones seleccionadas para este modificador.
          items:
            type: object
            properties:
              optionId:
                type: string
                description: ID Justo de la opción.
              name:
                type: string
                description: Nombre de la opción.
                example: Queso
              price:
                type: number
                description: Precio pagado por la opción.
                example: 1000
              externalId:
                type: string
                description: ID externo de la opción configurado por la marca.
              metadata:
                type: object
                description: Metadata de la opción escrita por API v3.
                additionalProperties: true
              priceMetadata:
                type: object
                description: Metadata del precio/disponibilidad escrita por API v3.
                additionalProperties: true

````