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

# Obtener registro de facturación

> Obtener información sobre un registro de facturación.
> Este endpoint **no hace consulta a Veri*Factu**; los datos se devuelven directamente desde nuestra base de datos.




## OpenAPI

````yaml /api-reference/openapi/openapi.yaml get /api/invoices/{invoiceId}
openapi: 3.0.0
info:
  title: Kubifactu API
  description: API para el procesamiento y gestión de facturas de Veri*Factu
  version: 1.0.0
  contact:
    email: soporte@kubifactu.com
    name: Soporte KubiFACTU
    url: https://apidocs.kubifactu.com
servers:
  - url: https://api.kubifactu.com
    description: Servidor de producción
  - url: https://devapi.kubifactu.com
    description: Servidor de pruebas
security: []
paths:
  /api/invoices/{invoiceId}:
    get:
      summary: Obtener registro de facturación
      description: >
        Obtener información sobre un registro de facturación.

        > Este endpoint **no hace consulta a Veri*Factu**; los datos se
        devuelven directamente desde nuestra base de datos.
      operationId: getInvoiceRecord
      parameters:
        - name: invoiceId
          in: path
          description: >
            ID de la factura. Este ID se obtiene en la respuesta a las altas de
            registros de facturación o puede usarse el identificador único de la
            factura **dentro del sistema del cliente** si en la creación del
            registro de facturación se hizo uso del campo `client_invoice_id`.
            El ID también se puede obtener desde el panel web, accediendo a la
            factura en el campo **ID DE KUBIFACTU**.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Datos de la factura.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateInvoiceRecordResponse'
        '403':
          description: No autorizado. La API-KEY proporcionada no es válida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedApiKeyErrorResponse'
        '500':
          description: Error interno del servidor.
      security:
        - client_api_key: []
components:
  schemas:
    CreateInvoiceRecordResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              format: uuid
              description: >
                Identificador (ID) de la factura en el sistema de **KubiFACTU**.
                Se utiliza para hacer referencia al registro de facturación
                desde otros endpoints como, por ejemplo, el de anulación de
                facturas.
            record_type:
              $ref: '#/components/schemas/record_type'
            request_id:
              type: string
              description: >-
                Identificador de la petición como referencia para el soporte
                técnico.
              example: 2cc8ef846029ec69613711ad1d85f6dfebf16ffb
            sif_id:
              type: string
              description: ID del SIF utilizado para la creación del registro.
              format: uuid
              example: 0995C42C-6708-44FB-BFBF-B363A5FE873E
            fiscal_year:
              type: integer
              description: Año fiscal de la factura.
            full_invoice_number:
              type: string
              description: Número de la factura registrada.
            issue_date:
              type: string
              format: date
              example: '2026-09-15'
              description: Fecha de expedición del registro de facturación.
            created_at:
              type: string
              format: date-time
              example: '2026-09-15T07:35:24.992854Z'
              description: Fecha y hora de creación de la factura en nuestro sistema.
            fingerprint:
              nullable: true
              type: string
              description: Huella SHA-256 del registro de facturación registrado.
            csv:
              nullable: true
              type: string
              description: >
                Código Seguro de Verificación (CSV) que la AEAT emite en la
                respuesta a la remisión. Acredita la remisión, no cada registro
                individual.


                **Un `csv` vacío (`null`) no significa que el registro no esté
                acreditado.** La AEAT no devuelve el CSV en consultas
                posteriores, por lo que un registro aceptado puede no tenerlo;
                por ejemplo, cuando el resultado del envío no llegó (timeout o
                respuesta ilegible) y se confirmó después con una consulta de
                estado. Para saber si un registro está acreditado, usa
                `vf_record_registration_status`, no la presencia del `csv`.


                En los envíos diferidos por lote, todos los registros del mismo
                envío comparten el mismo CSV, también los rechazados. Solo se
                omite si la AEAT rechaza todos los registros del envío.


                Un reenvío no borra un CSV ya guardado cuando la nueva respuesta
                no incluye uno. Un CSV nuevo sustituye al anterior. [Leer más en
                la FAQ](/faq).
            vf_post_status:
              $ref: '#/components/schemas/vf_post_status'
            vf_record_registration_status:
              $ref: '#/components/schemas/vf_record_registration_status'
            has_warnings:
              type: boolean
              description: Indica si el registro contiene errores que deban ser subsanados.
              example: false
            vf_error_descriptions:
              nullable: true
              type: string
              description: >-
                Cadena con la descripción de los errores devueltos por
                Veri*Factu.
            next_request_waiting_time:
              type: integer
              description: >-
                Tiempo que se debe esperar en segundos para que la empresa
                cliente pueda enviar una nueva petición.
            next_request_datetime:
              type: string
              format: date-time
              example: '1977-04-22T06:00:00Z'
              description: >-
                Fecha y hora en la que la empresa cliente pueda enviar una nueva
                petición en formato ISO-8601 (ej.- 1977-04-22T06:00:00Z) con
                zona horaria UTC.
            qr_value:
              type: string
              nullable: true
              format: uri
              description: >-
                URL que debe mostrarse en el QR de las facturas procesadas con
                Veri*Factu. Esta URL sirve para que el receptor de la factura
                pueda validar que esta ha sido correctamente enviada a
                Veri*Factu. Este campo será `null` cuando Veri*Factu rechace el
                registro de facturación.
            qr_image_url:
              type: string
              nullable: true
              format: uri
              description: >-
                URL para descargar la imagen PNG del QR generado por KubiFACTU
                mediante el endpoint [Descargar imagen QR del registro de
                facturación](/openapi-reference/descargar-imagen-qr-del-registro-de-facturación).
                La petición debe incluir el header `X-Qbikode-ClientApiKey`.
                Este campo será `null` cuando Veri*Factu rechace el registro de
                facturación o no aplique mostrar QR.
            xml_url:
              type: string
              nullable: true
              format: uri
              description: >-
                URL para descargar el XML del registro de facturación enviado a
                Veri*Factu mediante el endpoint [Descargar XML del registro de
                facturación](/openapi-reference/descargar-xml-del-registro-de-facturación).
                La petición debe incluir el header `X-Qbikode-ClientApiKey`.
                Este campo será `null` cuando el XML aún no esté disponible, por
                ejemplo en registros de facturación en diferido pendientes de
                procesar.
            vf_response_body:
              type: string
              nullable: true
              format: byte
              description: >-
                Cuerpo de la respuesta de Veri*Factu en formato Base64. Contiene
                el XML completo devuelto por la AEAT tras el envío del registro
                de facturación. Este campo será `null` para facturas en diferido
                que aún no han sido procesadas o cuando no se haya recibido
                respuesta de Veri*Factu.
    UnauthorizedApiKeyErrorResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            error:
              type: object
              properties:
                code:
                  type: string
                  description: Código de error que indica el tipo de problema.
                  example: E-UNAUTH-APIKEY
                message:
                  type: string
                  description: Mensaje detallado del error.
                  example: >-
                    No client with API-KEY
                    '5tVySMGJOpq8HfMgIX28Qz6kF0dFOoq37x55PLZcWsGeGeYkNgJyAcRTlFJ5NbVoDRm8qtCywEoiN3A9JkBanMBXYmxiqR3BItxgxx'
                    was found.
                http_code:
                  type: integer
                  description: Código HTTP asociado al error.
                  example: 403
                errors:
                  type: object
                  nullable: true
                  description: >
                    Detalles adicionales del error. Puede ser `null` si no hay
                    información específica.
                  example: null
                details:
                  type: object
                  properties:
                    request_id:
                      type: string
                      description: Identificador único de la solicitud para rastreo.
                      example: 2cc8ef846029ec69613711ad1d85f6dfebf16ffb
    record_type:
      type: string
      description: |
        Tipo de registro de facturación:

        - `creation`: Se trata de un registro de alta.
        - `cancellation`: Se trata de un registro de anulación.
      enum:
        - creation
        - cancellation
    vf_post_status:
      nullable: true
      type: string
      description: >
        Este campo indica si la factura ha sido enviada a Veri*Factu, pero no
        indica si el registro ha sido aceptado.

        Los valores posibles son:


        - `success`: Se ha realizado el envío a Veri*Factu.

        - `failure`: Ha fallado el envío a Veri*Factu o Veri*Factu ha respondido
        con un error que se resuelve reenviando el mismo registro. Un timeout
        identificable se combina con `vf_record_registration_status = unknown`:
        no demuestra que la AEAT no haya recibido el registro y no activa por sí
        solo la conciliación obligatoria.
      enum:
        - success
        - failure
    vf_record_registration_status:
      nullable: true
      type: string
      description: >
        Valores posibles para el campo `vf_record_registration_status`, que
        indican el estado del registro en Veri*Factu.


        - `success`: El registro ha sido correctamente registrado en Veri*Factu.

        - `accepted_with_errors`: El registro ha sido registrado en Veri*Factu,
        pero tiene **errores que deben ser subsanados**.

        - `failed`: El registro tiene errores no aceptables y ha sido
        **rechazado** por Veri*Factu. Incluye los errores SOAP causados por el
        NIF o el nombre del obligado a emitir o del representante.

        - `not_registered`: No se ha encontrado el registro en Veri*Factu.

        - `cancelled`: El registro está anulado.

        - `unknown`: Se desconoce el estado del registro. Puede acompañar a
        `vf_post_status = failure` tras un timeout identificable. Si el envío
        está en `success`, exige conciliación antes del reenvío manual.
      enum:
        - success
        - accepted_with_errors
        - failed
        - not_registered
        - cancelled
        - unknown
  securitySchemes:
    client_api_key:
      type: apiKey
      name: X-Qbikode-ClientApiKey
      in: header
      description: >
        API-KEY de la empresa que hace la petición. Este dato se puede consultar
        en el panel web, accediendo a la sección _Empresas_ y accediendo a la
        ficha de la empresa en.

````

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