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

# Listar registros de facturación con filtros

> Obtiene un listado **paginado** de registros de facturación pertenecientes a la empresa autenticada. La información de cada registro de facturación en una **versión reducida** de la que se obtiene en consultas individuales o cuando se crean nuevos registros de facturación.

Además se devuelve una sección `meta` para la gestión de la paginación.

El valor devuelto en `meta.next_page_cursor` sirve para solicitar la siguiente página y `meta.prev_page_cursor` para retroceder. Si `meta.has_more` es `false`, no hay más elementos.




## OpenAPI

````yaml /api-reference/openapi/openapi.yaml get /api/invoices
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:
    get:
      summary: Listar registros de facturación con filtros
      description: >
        Obtiene un listado **paginado** de registros de facturación
        pertenecientes a la empresa autenticada. La información de cada registro
        de facturación en una **versión reducida** de la que se obtiene en
        consultas individuales o cuando se crean nuevos registros de
        facturación.


        Además se devuelve una sección `meta` para la gestión de la paginación.


        El valor devuelto en `meta.next_page_cursor` sirve para solicitar la
        siguiente página y `meta.prev_page_cursor` para retroceder. Si
        `meta.has_more` es `false`, no hay más elementos.
      operationId: listInvoices
      parameters:
        - name: date_from
          in: query
          required: true
          description: >-
            Fecha de inicio del rango de creación de las facturas (incluida).
            Formato `YYYY-MM-DD`.
          schema:
            type: string
            format: date
            example: '2025-01-01'
        - name: date_to
          in: query
          required: true
          description: >-
            Fecha de fin del rango de creación de las facturas (incluida). Debe
            ser igual o posterior a `date_from`.
          schema:
            type: string
            format: date
            example: '2025-01-31'
        - name: sif_id
          in: query
          required: false
          description: >-
            ID del SIF emisor sobre el que se quieren buscar registros de
            facturación.
          schema:
            type: string
            example: A3DEAECE-8698-4E3D-A0A3-A17B523B9703
        - name: vf_post_status
          in: query
          required: false
          description: >
            Filtrar registros de facturación por el estado de envío a
            Veri*Factu.


            Ver valores posibles para `vf_post_status` en la [respuesta de envío
            de registros de
            facturación](/openapi-reference/enviar-registro-de-facturación#response-data-vf-post-status).
          schema:
            type: string
            example: failure
        - name: vf_record_registration_status
          in: query
          required: false
          description: >
            Filtrar registros de facturación por el estado del registro
            reportado por Veri*Factu.


            Ver valores posibles para `vf_record_registration_status` en la
            [respuesta de envío de registros de
            facturación](/openapi-reference/enviar-registro-de-facturación#response-data-vf-record-registration-status).


            **Nota:** Este parámetro se ignora si `with_problems` está presente
            y es `1`.
          schema:
            type: string
            example: accepted_with_errors
        - name: with_problems
          in: query
          required: false
          description: >
            Filtrar registros de facturación con problemas de registro. Cuando
            este parámetro es `1`, se devuelven únicamente los registros cuyo
            `vf_record_registration_status` no es correcto o anulado.


            Este filtro es útil para obtener facturas que requieren atención:
            `failed` (Incorrecto), `accepted_with_errors` (Aceptado con
            Errores), `not_registered` (No Registrado) y `unknown`
            (Desconocido).


            **Este parámetro tiene prioridad sobre
            `vf_record_registration_status`**: si `with_problems=1`, el valor de
            `vf_record_registration_status` será ignorado.
          schema:
            type: boolean
            example: 1
        - name: per_page
          in: query
          required: false
          description: Número de elementos por página (máximo 50). Valor por defecto 50.
          schema:
            type: integer
            minimum: 1
            maximum: 50
            example: 25
        - name: cursor
          in: query
          required: false
          description: >-
            Cursor para la paginación basada en cursor. Use el valor devuelto en
            `meta.next_page_cursor`.
          schema:
            type: string
            example: eyJpZCI6IjE5NzctMDQtMjJUMDY6MDA6MDBaIn0
      responses:
        '200':
          description: Listado paginado de registros de facturación.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListInvoicesResponse'
        '403':
          description: No autorizado. La API-KEY proporcionada no es válida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedApiKeyErrorResponse'
        '422':
          description: Errores de validación.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '500':
          description: Error interno del servidor.
      security:
        - client_api_key: []
components:
  schemas:
    ListInvoicesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceLite'
        meta:
          type: object
          properties:
            per_page:
              type: integer
              description: Número de elementos por página en la respuesta.
              example: 50
            next_page_cursor:
              type: string
              nullable: true
              description: >-
                Cursor para obtener la siguiente página de resultados. Será
                `null` si no hay más páginas.
              example: eyJpZCI6IjE5NzctMDQtMjJUMDY6MDA6MDBaIn0
            prev_page_cursor:
              type: string
              nullable: true
              description: >-
                Cursor para obtener la página anterior de resultados. Puede ser
                `null`.
              example: ffN6eRJ0i2YPRA7C51eYNkLt8HIubpW9RDrFk77
            has_more:
              type: boolean
              description: Indica si hay más resultados para seguir paginando.
              example: true
    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
    ValidationErrorResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            error:
              type: object
              properties:
                message:
                  type: string
                  description: Mensaje general del error.
                  example: The given data was invalid.
                errors:
                  type: object
                  additionalProperties:
                    type: array
                    items:
                      type: string
                  description: >
                    Lista de errores de validación organizados por campo.

                    Cada clave es el nombre del campo asociado al error y
                    contiene un array de mensajes.
                  example:
                    invoice_exists:
                      - >-
                        An invoice already exists with the indicated invoice
                        number and fiscal for the provided SIF. Existing invoice
                        ID: [9db6bb78-6799-4abb-b9a0-22d127c543ed].
                    incorrect_total_quota:
                      - >-
                        The total quota of the invoice does not match the total
                        tax quota and equalization_tax_quota of the lines.
                        Calculated total quota: [26.25].
                    incorrect_total_amount:
                      - >-
                        The total amount of the invoice does not match the total
                        tax base of the lines. Calculated total amount:
                        [151.25].
                details:
                  type: object
                  properties:
                    request_id:
                      type: string
                      format: uuid
                      description: Identificador único de la solicitud para rastreo.
                      example: 9ded9e2c-d59e-4432-a926-652cbcfac365
    InvoiceLite:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Identificador (ID) de la factura en el sistema de KubiFACTU.
        client_invoice_id:
          type: string
          nullable: true
          description: Identificador único de la factura dentro del sistema del cliente.
        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
        fiscal_year:
          type: integer
          description: Año fiscal de la factura.
          example: 2025
        full_invoice_number:
          type: string
          description: Número de la factura registrada.
          example: F23-0000123
        issue_date:
          type: string
          format: date
          example: '2025-09-15'
          description: Fecha de expedición del registro de facturación.
        created_at:
          type: string
          format: date-time
          example: '2025-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 del registro de facturación.
        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.
    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`: No se ha podido hacer el envío a Veri*Factu o Veri*Factu ha
        respondido con un error.
      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.

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

        - `cancelled`: El registro está anulado.

        - `unknown`: Se desconoce el estado del registro.
      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.

````