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

# Crear un local de retiro

> Crea un local desde donde la flota de Justo retira paquetes de [última milla](/docs/admin/last-mile/introduction): una bodega, una tienda o un centro de distribución. El local solo pide despachos (no vende por e-commerce) y sus despachos se facturan a tu cuenta. Justo ubica la dirección si no envías coordenadas. El nombre y el externalId no se pueden repetir (`storeAlreadyExists`). Una autorización limitada a algunos locales no puede crear locales. El local parte abierto siempre: configura su horario de atención con PATCH /ecommerce/stores/{storeId}/schedule, y las cotizaciones solo prometen retiros dentro de ese horario.

Crea un local desde donde la flota de Justo retira los paquetes de [última milla](https://docs.getjusto.com/docs/admin/last-mile/introduction.md): una bodega, una tienda o un centro de distribución. El local solo pide despachos (no vende por e-commerce) y sus despachos se facturan a tu cuenta.

Envía un `name` y un `externalId` únicos en tu cuenta (si se repiten, responde `storeAlreadyExists`). El `externalId` te permite usar tu propio identificador como `storeId` en el resto de la API.

La dirección acepta los mismos formatos que el destino de una cotización: en una línea, por campos o con coordenadas. Si no envías coordenadas, Justo ubica la dirección. Activa `acceptsCar` si desde el local salen paquetes que no caben en una moto: permite que Justo envíe un repartidor en auto. Sin él, esos paquetes no se pueden cotizar (`vehicleNotAvailable`).

La respuesta tiene el mismo formato que [Obtener un local](https://docs.getjusto.com/docs/ecommerce/endpoints/stores/get-store.md). Revisa las coordenadas de `address` para confirmar que el local quedó bien ubicado.

Una autorización limitada a algunos locales no puede crear locales (`noPermissions`).


## OpenAPI

````yaml post /ecommerce/stores
openapi: 3.1.0
info:
  title: Justo API
  version: 3.0.0
servers:
  - url: https://api.service.getjusto.com/v3
    description: Servidor de producción
security: []
paths:
  /ecommerce/stores:
    post:
      summary: Crear un local de retiro
      description: >-
        Crea un local desde donde la flota de Justo retira paquetes de [última
        milla](/docs/admin/last-mile/introduction): una bodega, una tienda o un
        centro de distribución. El local solo pide despachos (no vende por
        e-commerce) y sus despachos se facturan a tu cuenta. Justo ubica la
        dirección si no envías coordenadas. El nombre y el externalId no se
        pueden repetir (`storeAlreadyExists`). Una autorización limitada a
        algunos locales no puede crear locales. El local parte abierto siempre:
        configura su horario de atención con PATCH
        /ecommerce/stores/{storeId}/schedule, y las cotizaciones solo prometen
        retiros dentro de ese horario.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/apiStoreInput'
      responses:
        '200':
          description: Respuesta exitosa
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    $ref: '#/components/schemas/apiStore'
        '400':
          description: Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: 'false'
                  error:
                    type: object
                    properties:
                      error:
                        type: string
                        example: error
                      message:
                        type: string
                        example: The request has an error
components:
  schemas:
    apiStoreInput:
      type: object
      additionalProperties: false
      properties:
        name:
          type: string
          description: Nombre del local. Único en tu cuenta.
        externalId:
          type: string
          description: >-
            Tu identificador del local. Sirve como storeId en el resto de la
            API.
        phone:
          type: string
          description: Teléfono de contacto para el repartidor.
        acceptsCar:
          type: boolean
          description: >-
            Permite que Justo envíe un repartidor en auto a este local. Actívalo
            si despachas paquetes que no caben en una moto: sin él, esos
            paquetes no se pueden cotizar (`vehicleNotAvailable`). Por defecto
            false.
        address:
          $ref: '#/components/schemas/apiLastMileAddressInput'
      example:
        name: Bodega Providencia
        externalId: bodega-providencia
        phone: '+56222222222'
        acceptsCar: true
        address:
          line: Av. Providencia 1234, Providencia
          countryCode: CL
    apiStore:
      type: object
      description: Local de una marca.
      properties:
        _id:
          type: string
          description: ID Justo del local.
        websiteId:
          type: string
          description: ID de la marca a la que pertenece el local.
        name:
          type: string
          description: Nombre del local.
          example: Providencia
        acceptDelivery:
          type: boolean
          description: Indica si el local acepta pedidos con despacho.
        acceptServe:
          type: boolean
          description: Indica si el local acepta pedidos para servir en mesa.
        acceptGo:
          type: boolean
          description: Indica si el local acepta pedidos para retiro.
        currentPreparationDuration:
          type: number
          description: Tiempo actual de preparación en minutos.
        currentDeliveryDuration:
          type: number
          description: Tiempo actual estimado de despacho en minutos.
        phone:
          type: string
          description: Teléfono del local.
        address:
          $ref: '#/components/schemas/apiStoreAddress'
        externalId:
          type: string
          description: ID externo del local configurado por la marca.
        timezone:
          type: string
          description: Zona horaria IANA del local.
          example: America/Lima
        schedule:
          $ref: '#/components/schemas/apiStoreSchedule'
    apiLastMileAddressInput:
      type: object
      description: >-
        Dirección. Puedes mandarla en una sola línea (`line`, por ejemplo "Av.
        Providencia 1234, depto 501, Providencia") o por campos. Las coordenadas
        son opcionales: si no vienen, Justo ubica la dirección. Si no la puede
        ubicar con certeza, la cotización responde `addressNotFound`.
      required:
        - countryCode
      additionalProperties: false
      properties:
        line:
          type: string
          description: 'Dirección completa en una línea: calle, número, unidad y comuna.'
        streetAddress:
          type: string
          description: Calle y número. Obligatorio si no envías `line`.
        extendedAddress:
          type: string
          description: Departamento, oficina, piso o block.
        locality:
          type: string
          description: Comuna, localidad o municipio.
        region:
          type: string
          description: Región, estado o departamento.
        postalCode:
          type: string
          description: Código postal.
        countryCode:
          type: string
          description: País en ISO 3166-1 alfa-2 (CL, CO, MX, PE…).
        location:
          type: object
          required:
            - lat
            - lng
          additionalProperties: false
          properties:
            lat:
              type: number
              description: Latitud.
              example: -33.4290115
            lng:
              type: number
              description: Longitud.
              example: -70.6211027
          description: Coordenadas, si ya las tienes. Se usan tal cual, sin geocodificar.
      example:
        line: Av. Apoquindo 4500, Las Condes
        countryCode: CL
    apiStoreAddress:
      type: object
      description: Dirección del local.
      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.
        addressSecondary:
          type: string
          description: Comuna, ciudad o referencia secundaria de la dirección.
        streetAddress:
          type: string
          description: Calle y número normalizados.
        extendedAddress:
          type: string
          description: Información complementaria normalizada.
        locality:
          type: string
          description: Comuna o localidad.
        region:
          type: string
          description: Región o estado.
        postalCode:
          type: string
          description: Código postal.
        countryCode:
          type: string
          description: Código de país ISO 3166-1 alpha-2.
        countryName:
          type: string
          description: Nombre del país.
        location:
          type: object
          description: Coordenadas geográficas del local.
          properties:
            lat:
              type: number
              description: Latitud.
              example: -33.4489
            lng:
              type: number
              description: Longitud.
              example: -70.6693
    apiStoreSchedule:
      type: object
      description: Horario de atención del local.
      properties:
        closedUntilDate:
          type: string
          example: '2020-01-01T00:00:00.000Z'
          format: date-time
          description: >-
            Fecha hasta la que el local está cerrado temporalmente. Si es null,
            no hay cierre temporal activo.
        availableAtPeriods:
          type: boolean
          description: >-
            Si es false, el local atiende todo el día y no se aplican
            openPeriods ni specialPeriods. Si es true, atiende sólo en esos
            bloques; si openPeriods está vacío, atiende todo el día en los días
            sin horario especial.
        openPeriods:
          type: array
          description: Bloques horarios semanales en que el local atiende.
          items:
            $ref: '#/components/schemas/apiStoreSchedulePeriod'
        specialPeriods:
          type: array
          description: Horarios especiales por fecha, como feriados con horario reducido.
          items:
            $ref: '#/components/schemas/apiStoreSpecialPeriod'
        closedDays:
          type: array
          description: >-
            Días completos en que el local está cerrado, guardados como el
            inicio del día en la zona horaria del local.
          items:
            type: string
            format: date-time
        timezone:
          type: string
          description: Zona horaria IANA usada para interpretar el horario.
    apiStoreSchedulePeriod:
      type: object
      description: Bloque horario semanal de atención del local.
      required:
        - daysOfWeek
        - fromMinute
        - toMinute
      properties:
        daysOfWeek:
          type: array
          description: >-
            Días de la semana en que aplica el bloque: 1 es lunes y 7 es
            domingo.
          items:
            type: integer
            minimum: 1
            maximum: 7
          example:
            - 1
            - 2
            - 3
            - 4
            - 5
        fromMinute:
          type: integer
          minimum: 0
          maximum: 1440
          description: Minuto del día en que comienza el bloque. 600 son las 10:00.
        toMinute:
          type: integer
          minimum: 0
          maximum: 1440
          description: >-
            Minuto del día en que termina el bloque, mayor que fromMinute. 1440
            son las 24:00. Para un horario que cruza la medianoche usa dos
            bloques.
    apiStoreSpecialPeriod:
      type: object
      description: >-
        Horario especial para fechas concretas. En esas fechas reemplaza el
        horario semanal; si una fecha tiene varios bloques, el local atiende en
        todos ellos.
      required:
        - days
        - fromMinute
        - toMinute
      properties:
        days:
          type: array
          description: Fechas en que aplica el horario especial.
          items:
            type: string
            description: >-
              Día calendario en la zona horaria del local. Al escribir se acepta
              YYYY-MM-DD o una fecha ISO 8601; se guarda como el inicio de ese
              día en la zona horaria del local.
            example: '2026-12-25'
        fromMinute:
          type: integer
          minimum: 0
          maximum: 1440
          description: Minuto del día en que comienza el bloque.
        toMinute:
          type: integer
          minimum: 0
          maximum: 1440
          description: Minuto del día en que termina el bloque, mayor que fromMinute.

````

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