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

# Consultar empresa

> Consulta una empresa (emisor) de la cuenta por su id. Sólo devuelve empresas de la cuenta autenticada: el id de una empresa de otra cuenta responde 404, igual que un id inexistente. Con include_certificados=true incluye el detalle de los CSD activos (lista vacía si el emisor todavía no tiene ninguno).



## OpenAPI

````yaml /openapi.json get /empresas/{id}
openapi: 3.1.0
info:
  description: API de timbrado CFDI 4.0 de Palenca.
  title: Ipsofactura API
  version: v1
servers:
  - description: Producción
    url: https://api.ipsofactura.com
  - description: Sandbox (pruebas, sin validez fiscal)
    url: https://sandbox.api.ipsofactura.com
security:
  - apiKeyAuth: []
tags:
  - description: Timbrado, complemento de pago, cancelación y descarga de CFDIs.
    name: CFDI
  - description: Alta y consulta de empresas emisoras.
    name: Empresas
  - description: Administración del Certificado de Sello Digital (CSD).
    name: Certificados
  - description: >-
      Suscripciones de webhooks: notificaciones de timbrado, cancelación y
      pagos.
    name: Webhooks
paths:
  /empresas/{id}:
    get:
      tags:
        - Empresas
      summary: Consultar empresa
      description: >-
        Consulta una empresa (emisor) de la cuenta por su id. Sólo devuelve
        empresas de la cuenta autenticada: el id de una empresa de otra cuenta
        responde 404, igual que un id inexistente. Con include_certificados=true
        incluye el detalle de los CSD activos (lista vacía si el emisor todavía
        no tiene ninguno).
      operationId: get
      parameters:
        - description: Id de la empresa
          example: a1b2c3d4-1234-4abc-8def-1234567890ab
          in: path
          name: id
          required: true
          schema:
            format: uuid
            type: string
        - description: Incluye los CSD activos del emisor
          example: false
          in: query
          name: include_certificados
          required: false
          schema:
            default: false
            type: boolean
      responses:
        '200':
          content:
            application/json:
              example:
                codigo_postal: '06000'
                curp: null
                es_activo: true
                fecha_actualizacion: '2026-08-28T12:00:00Z'
                fecha_creacion: '2026-08-28T12:00:00Z'
                id: a1b2c3d4-1234-4abc-8def-1234567890ab
                nombre_empresa: Escuela Kemper Urgate
                nombre_fiscal: ESCUELA KEMPER URGATE
                regimen_fiscal: '601'
                rfc: EKU9003173C9
                tipo_persona: moral
              schema:
                $ref: '#/components/schemas/EmpresaDetailResponse'
          description: Empresa encontrada
        '400':
          content:
            application/json:
              example:
                code: INVALID_UUID_FORMAT
                message: >-
                  UUID 'not-a-uuid' no tiene el formato correcto (debe ser UUID
                  v4 válido con formato: 8-4-4-4-12 caracteres hexadecimales)
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: El id no es un UUID válido
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            API key faltante o inválida (AUTHENTICATION_REQUIRED /
            INVALID_API_KEY)
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            La cuenta está suspendida (ACCOUNT_SUSPENDED). Un recurso de otra
            cuenta NO responde 403: responde 404, igual que uno que no existe.
        '404':
          content:
            application/json:
              example:
                code: EMPRESA_NOT_FOUND
                message: La empresa no existe
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: La empresa no existe en la cuenta
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            Límite de requests por minuto excedido (RATE_LIMIT_EXCEEDED). Ver
            headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
            y Retry-After.
components:
  schemas:
    EmpresaDetailResponse:
      properties:
        certificados:
          description: >-
            Sólo presente con include_certificados=true. Lista vacía si el
            emisor no tiene CSD activo.
          items:
            $ref: '#/components/schemas/CertificadoItemResponse'
          type: array
        codigo_postal:
          example: '06000'
          type: string
        curp:
          description: CURP del emisor. Siempre null para personas morales.
          example: null
          type: string
        es_activo:
          example: true
          type: boolean
        fecha_actualizacion:
          example: '2026-08-28T12:00:00Z'
          type: string
        fecha_creacion:
          example: '2026-08-28T12:00:00Z'
          type: string
        id:
          example: a1b2c3d4-1234-4abc-8def-1234567890ab
          format: uuid
          type: string
        nombre_empresa:
          example: Escuela Kemper Urgate
          type: string
        nombre_fiscal:
          example: ESCUELA KEMPER URGATE
          type: string
        regimen_fiscal:
          enum:
            - '601'
            - '603'
            - '605'
            - '606'
            - '607'
            - '608'
            - '609'
            - '610'
            - '611'
            - '612'
            - '614'
            - '615'
            - '616'
            - '620'
            - '621'
            - '622'
            - '623'
            - '624'
            - '625'
            - '626'
            - '628'
            - '629'
            - '630'
          example: 601
          type: string
        rfc:
          example: EKU9003173C9
          type: string
        tipo_persona:
          enum:
            - fisica
            - moral
          example: moral
          type: string
      type: object
    ErrorResponse:
      properties:
        code:
          description: >-
            Código de error de ipsofactura. Estable y cerrado (catálogo
            ErrorCode), pero deliberadamente grueso: TODO rechazo de validación
            del SAT llega como VALIDATION_ERROR. Úsalo para decidir el flujo
            general (reintentar, autenticar de nuevo, corregir el comprobante).
          example: VALIDATION_ERROR
          type: string
        id:
          type: string
        idempotencyKey:
          type: string
        message:
          description: >-
            Descripción legible del error, en texto libre. NO la parsees: cuando
            el rechazo viene del SAT, este texto lo redacta el PAC, cambia entre
            proveedores y puede cambiar sin previo aviso. Para ramificar por
            regla del SAT usa sat_code; para ramificar por tipo de error usa
            code. El mensaje es para mostrarlo o registrarlo.
          example: >-
            CFDI40147: El RFC del receptor no se encuentra en la lista de
            contribuyentes inscritos no cancelados del SAT
          type: string
        retryAfter:
          format: int32
          type: integer
        sat_code:
          description: >-
            Código de validación del SAT (CFDIxxxxx) del rechazo. Presente SÓLO
            cuando el comprobante fue rechazado por el SAT a través de un PAC;
            ausente en errores propios de ipsofactura (validación local,
            autenticación, rate limit, servicio no disponible). Es específico
            donde `code` es genérico: `code` te dice que hubo un rechazo de
            validación, `sat_code` te dice cuál regla se incumplió. También se
            omite si el PAC no devolvió ningún código: nunca se inventa uno.
          example: CFDI40147
          type: string
    CertificadoItemResponse:
      properties:
        estado:
          type: string
        fecha_creacion:
          type: string
        fecha_fin:
          type: string
        id:
          format: uuid
          type: string
        numero_certificado:
          type: string
      type: object
  securitySchemes:
    apiKeyAuth:
      description: API key emitida por Ipsofactura, enviada en el header x-api.
      in: header
      name: x-api
      type: apiKey

````