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

# Entrega sin pedido actualizada

Este webhook se envía cuando una entrega sin pedido cambia de estado (asignada, en retiro, en camino, entregada o cancelada) o cuando cambia la información del repartidor. El objeto `data.delivery` tiene el mismo formato que [Obtener una entrega](https://docs.getjusto.com/docs/admin/delivery/get.md).

Las entregas creadas desde una cotización de [última milla](https://docs.getjusto.com/docs/admin/last-mile/introduction.md) traen `lastMileQuoteId`, el `id` de la cotización que aceptaste. Úsalo junto con `externalId` para cruzar el evento con el envío en tu sistema. `storeId` es el local desde donde sale el paquete, el mismo de la cotización.

```json theme={null}
{
  "type": "deliveries.delivery.updated",
  "websiteId": "website-id",
  "storeId": "Xb7kQ2mN9pL4tR8sW",
  "date": "2026-11-03T13:16:00.000Z",
  "eventId": "event-id",
  "data": {
    "delivery": {
      "_id": "delivery-id",
      "status": "active",
      "externalId": "FL-000123",
      "lastMileQuoteId": "lmq-6f3a91c2d4e8b7a1",
      "trackingURL": "https://...",
      "driverInformation": {
        "type": "moto",
        "name": "Peter",
        "phone": "+56999999999"
      }
    },
    "occurredAt": "2026-11-03T13:15:58.412Z"
  }
}
```

Si el repartidor no pudo entregar el paquete (por ejemplo, porque no logró contactar al cliente), `status` llega como `Dispatch not completed` y `uncompletedReason` trae el motivo.

Los eventos de una misma entrega pueden llegar desordenados: por ejemplo, al cancelar puede llegar primero `canceled` y después un `pending` anterior. Guarda el `occurredAt` del último evento que procesaste para cada entrega y descarta los que traigan uno más antiguo. No uses `date` para esto: es el momento en que se envió el webhook, no el del cambio de estado.

Para conocer la última ubicación del repartidor, consulta la entrega con [Obtener una entrega](https://docs.getjusto.com/docs/admin/delivery/get.md). Para validar que el webhook viene de Justo, revisa la [autenticación de webhooks](https://docs.getjusto.com/docs/main/authentication.md).


## OpenAPI

````yaml post /deliveries.delivery.updated
openapi: 3.1.0
info:
  title: Justo API Webhooks
  version: 3.0.0
servers: []
security: []
paths:
  /deliveries.delivery.updated:
    post:
      summary: Entrega sin pedido actualizada
      requestBody:
        description: Webhook Payload
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  description: El tipo de webhook.
                  type: string
                  enum:
                    - deliveries.delivery.updated
                  const: deliveries.delivery.updated
                data:
                  type: object
                  description: >-
                    Se envía cuando una entrega sin pedido cambia de estado
                    (asignada, en retiro, en camino, entregada o cancelada) o
                    cuando cambia la información del repartidor. Las entregas
                    creadas desde una cotización de última milla traen
                    `lastMileQuoteId`. Dos eventos de la misma entrega pueden
                    llegar desordenados (por ejemplo, `pending` y `canceled` al
                    cancelar): quédate con el de `occurredAt` más reciente.
                  properties:
                    delivery:
                      $ref: '#/components/schemas/apiDeliveryWithoutOrder'
                    occurredAt:
                      type: string
                      format: date-time
                      description: >-
                        Momento en que Justo registró este estado de la entrega.
                        Úsalo para ordenar los eventos de una misma entrega y
                        descartar los que lleguen atrasados.
                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:
    apiDeliveryWithoutOrder:
      type: object
      description: >-
        Entrega de Justo Delivery creada sin un pedido de Justo Ecommerce
        asociado. Se usa para despachos manuales o integraciones externas que
        necesitan logística fuera del checkout de Justo.
      properties:
        _id:
          type: string
          description: ID Justo de la entrega.
        websiteId:
          type: string
          description: ID de la marca autorizada.
        storeId:
          type: string
          description: ID Justo del local que solicita la entrega.
        orderId:
          type: string
          description: Siempre null para entregas sin pedido.
        partner:
          type: string
          description: Partner logístico usado para la entrega.
        status:
          type: string
          description: Estado actual de la entrega.
          enum:
            - active
            - canceled
            - done
            - error
            - pending
            - scheduled
            - delivering
            - waiting
            - unconfirmed
        specialCode:
          type: string
          description: Código corto de entrega especial.
        externalId:
          type: string
          description: Identificador externo opcional enviado por la integración.
        price:
          type: number
          description: Precio del despacho con impuestos, sin propina.
        priceWithoutTax:
          type: number
          description: Precio sin impuestos.
        tipAmount:
          type: number
          description: Propina registrada para el repartidor, en moneda del local.
        receiveProofImage:
          type:
            - string
            - 'null'
          description: >-
            URL de la imagen de evidencia del retiro. Null si no hay una imagen
            registrada.
          format: uri
        deliverProofImage:
          type:
            - string
            - 'null'
          description: >-
            URL de la imagen de evidencia de la entrega. Null si no hay una
            imagen registrada.
          format: uri
        isCash:
          type: boolean
          description: Indica si el repartidor debe cobrar efectivo.
        isRoundTrip:
          type: boolean
          description: Indica si el repartidor debe volver al origen.
        instructions:
          type: string
          description: Instrucciones operativas para el repartidor.
        fromName:
          type: string
          description: Nombre de contacto en origen.
        toName:
          type: string
          description: Nombre de contacto en destino.
        fromPlaceId:
          type: string
          description: Place ID de origen.
        toPlaceId:
          type: string
          description: Place ID de destino.
        fromAddressLine2:
          type: string
          description: Complemento de dirección de origen.
        toAddressLine2:
          type: string
          description: Complemento de dirección de destino.
        fromLocation:
          $ref: '#/components/schemas/apiDeliveryLocation'
        toLocation:
          $ref: '#/components/schemas/apiDeliveryLocation'
        location:
          type:
            - object
            - 'null'
          description: >-
            Última ubicación del repartidor. Disponible al consultar el detalle
            mientras está en retiro, en camino o en espera; null en los demás
            estados.
          required:
            - lat
            - lng
          properties:
            lat:
              type: number
              description: Latitud del repartidor.
            lng:
              type: number
              description: Longitud del repartidor.
            updatedAt:
              type: string
              example: '2020-01-01T00:00:00.000Z'
              format: date-time
              description: Fecha del reporte GPS; no es la hora de consulta.
        driverInformation:
          type:
            - object
            - 'null'
          description: Información del repartidor asignado, si está disponible.
          properties:
            name:
              type: string
              description: Nombre del repartidor.
            code:
              type: string
              description: Código del repartidor.
            type:
              type: string
              description: Tipo de vehículo.
        driverPassword:
          type: string
          description: Código de verificación del repartidor, si aplica.
        trackingURL:
          type: string
          description: URL de tracking público de la entrega.
        requiresDeliveryVerificationCode:
          type: string
          description: >-
            Código de entrega que el destinatario debe decirle al repartidor
            para que pueda cerrar la entrega. Las entregas de última milla
            siempre lo traen: entrégaselo a tu cliente.
        lastMileQuoteId:
          type: string
          description: >-
            ID de la cotización de última milla desde la que se creó la entrega
            (POST /last-mile/deliveries).
        createdAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de creación.
        forDate:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha programada de la entrega.
        canceledAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de cancelación.
        completedAt:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: Fecha de término.
    apiDeliveryLocation:
      type: object
      description: Punto de origen o destino de una entrega sin pedido.
      properties:
        address:
          type: string
          description: Dirección principal.
        addressSecondary:
          type: string
          description: Comuna, ciudad o referencia secundaria.
        placeId:
          type: string
          description: ID del lugar.
        streetAddress:
          type: string
          description: Calle y número.
        extendedAddress:
          type: string
          description: Departamento, oficina o referencia.
        contactPhone:
          type: string
          description: Teléfono de contacto del punto.
        contactName:
          type: string
          description: Nombre de contacto del punto.
        lat:
          type: number
          description: Latitud.
        lng:
          type: number
          description: Longitud.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.