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

# Crear Empresa

> Registra una nueva empresa en el sistema



## OpenAPI

````yaml /openapi.yaml post /enterprises
openapi: 3.0.3
info:
  title: Zynvo API
  description: API para gestión de comprobantes fiscales electrónicos y empresas en Uruguay
  version: 1.0.0
  contact:
    name: Zynvo Support
    url: https://zynvo.uy
    email: support@zynvo.uy
servers:
  - url: https://api.zynvo.uy/v1
    description: API de Producción (usa el header X-Sandbox-Mode para sandbox)
security:
  - apiKeyAuth: []
    bearerAuth: []
tags:
  - name: Autenticación
    description: Generación de tokens de acceso
  - name: Empresas
    description: Gestión de empresas
  - name: Clientes
    description: Gestión de clientes
  - name: Comprobantes
    description: Gestión de CFEs (Comprobantes Fiscales Electrónicos)
  - name: Certificados
    description: Gestión de certificados digitales
  - name: CAEs
    description: Gestión de CAEs (Códigos de Autorización Electrónica)
  - name: Utilidades
    description: Endpoints auxiliares para consultas a DGI
paths:
  /enterprises:
    post:
      tags:
        - Empresas
      summary: Crear Empresa
      description: Registra una nueva empresa en el sistema
      operationId: registerEnterprise
      parameters:
        - $ref: '#/components/parameters/SandboxModeHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - rut
                - legal_name
                - department_name
                - locality_name
                - street_name
                - branch
                - is_new_enterprise
              properties:
                rut:
                  type: string
                  description: RUT de la empresa (sin puntos ni guiones)
                  example: '123456789'
                legal_name:
                  type: string
                  description: Razón social de la empresa
                  example: Empresa Ejemplo S.A.
                trade_name:
                  type: string
                  description: Nombre comercial o de fantasía
                  example: Ejemplo
                department_name:
                  type: string
                  description: Departamento de la dirección fiscal
                  example: Montevideo
                locality_name:
                  type: string
                  description: Localidad de la dirección fiscal
                  example: Montevideo
                street_name:
                  type: string
                  description: Calle y número de la dirección fiscal
                  example: Av. 18 de Julio 1234
                phone_number:
                  type: string
                  description: Número de teléfono de contacto
                  example: +598 99 123 456
                branch:
                  type: integer
                  description: Número de sucursal
                  example: 1
                is_new_enterprise:
                  type: boolean
                  description: >-
                    Indica si es una empresa nueva que está comenzando
                    operaciones
                  example: false
      responses:
        '201':
          description: Empresa creada exitosamente
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Enterprise'
        '400':
          $ref: '#/components/responses/BadRequest'
        '409':
          $ref: '#/components/responses/Conflict'
components:
  parameters:
    SandboxModeHeader:
      name: X-Sandbox-Mode
      in: header
      required: true
      description: |
        Define el entorno de ejecución de la API.

        **Valores:**
        - `"true"` - Modo sandbox: Usa datos de prueba aislados
        - `"false"` - Modo producción: Usa datos reales
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
      example: 'true'
  schemas:
    Enterprise:
      type: object
      properties:
        rut:
          type: string
          description: RUT de la empresa
          example: '123456789'
        legal_name:
          type: string
          description: Razón social de la empresa
          example: Empresa Ejemplo S.A.
        trade_name:
          type: string
          description: Nombre comercial o de fantasía
          example: Ejemplo
        street_name:
          type: string
          description: Dirección fiscal
          example: Av. 18 de Julio 1234
        role:
          type: string
          description: Rol del usuario actual en la empresa
          example: admin
        status:
          type: string
          description: Estado de la empresa
          enum:
            - PENDING
            - READY
          example: READY
        is_new_enterprise:
          type: boolean
          description: Indica si es una empresa nueva
          example: false
        is_authorized_issuer:
          type: boolean
          description: Indica si la empresa está autorizada para emitir CFEs
          example: true
        scheduled_ready_date:
          type: string
          format: date-time
          nullable: true
          description: Fecha programada para que la empresa esté lista
        certificate:
          $ref: '#/components/schemas/Certificate'
        caes:
          type: array
          description: Lista de CAEs
          items:
            $ref: '#/components/schemas/CAE'
        plan_metadata:
          type: object
          properties:
            plan_id:
              type: string
              example: basic
            frequency_id:
              type: string
              example: monthly
        efactura_metadata:
          type: object
          properties:
            status:
              type: string
              enum:
                - USER_PENDING
                - USER_CREATED
              example: USER_CREATED
            login_status:
              type: string
              example: OK
            permissions:
              type: array
              items:
                type: string
              example:
                - EMIT_CFE
            missing_perms:
              type: array
              items:
                type: string
              example: []
    Certificate:
      type: object
      properties:
        status:
          type: string
          description: Estado del certificado
          enum:
            - OK
            - EXPIRED
          example: OK
        subject:
          type: string
          description: Sujeto del certificado
          example: TORRES PAREDES PEDRO
        emission_date:
          type: string
          format: date
          description: Fecha de emisión
          example: '2025-10-28'
        expiration_date:
          type: string
          format: date
          description: Fecha de expiración
          example: '2026-10-28'
    CAE:
      type: object
      properties:
        authorization_number:
          type: string
          description: Número de autorización del CAE
          example: '90232272471'
        issuer_ruc:
          type: string
          description: RUT del emisor
          example: '219517920011'
        cfe_type:
          type: string
          description: Tipo de CFE autorizado
          example: ETICKET
        cfe_type_code:
          type: string
          description: Código del tipo de CFE
          example: '101'
        cfe_type_label:
          type: string
          description: Descripción del tipo de CFE
          example: e-Ticket
        series:
          type: string
          description: Serie autorizada
          example: A
        number_start:
          type: integer
          description: Número inicial del rango
          example: 1
        number_end:
          type: integer
          description: Número final del rango
          example: 100
        last_number:
          type: integer
          description: Último número utilizado
          example: 1
        issue_date:
          type: string
          format: date
          description: Fecha de emisión
          example: '2023-12-06'
        expiration_date:
          type: string
          format: date
          description: Fecha de expiración
          example: '2025-12-05'
        status:
          type: string
          description: Estado
          enum:
            - OK
            - EXPIRED
          example: OK
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Código de error
              example: NOT_FOUND
            message:
              type: string
              description: Mensaje de error
              example: No se encontró el recurso solicitado
            details:
              type: object
              description: Detalles adicionales del error
  responses:
    BadRequest:
      description: Solicitud inválida
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_INPUT
              message: Los datos proporcionados no son válidos
    Conflict:
      description: Conflicto
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: ALREADY_EXISTS
              message: El recurso ya existe
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        API Key de Zynvo obtenida desde el dashboard. Requerida en todos los
        endpoints.
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Token JWT obtenido del endpoint /tokens. Se debe enviar en el header
        Authorization como "Bearer {token}"

````