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

# Enviar registro de facturación

> Generación de un nuevo registro de facturación.



## OpenAPI

````yaml /api-reference/openapi/openapi-kubibai.yaml post /api/invoicing/invoices
openapi: 3.0.0
info:
  title: Kubifactu API
  description: >-
    API para el procesamiento y gestión de facturas de Veri*Factu para
    peticiones hechas desde KubiBAI (TicketBAI). Estos endpoints alternativos
    tratan de ofrecer una estructura similar a la utilizada en KubiBAI.
  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/invoicing/invoices:
    post:
      summary: Enviar registro de facturación
      description: Generación de un nuevo registro de facturación.
      operationId: createInvoiceRecord
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInvoiceRecordRequest'
      responses:
        '200':
          description: Factura enviada con éxito.
          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'
        '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:
    CreateInvoiceRecordRequest:
      type: object
      properties:
        callback_url:
          type: string
          format: url
          description: >
            Sólo aplicable a [registros de facturación en
            diferido](/basic-concepts#registros-de-facturación-diferidos) o
            reenvíos de regitros de facturación. URL a la que se llamará con el
            resultado de la AEAT al procesamiento del registro de facturación.


            Se hará una petición POST a esta URL y se enviarán un array en
            formato JSON con los datos de las facturas procesadas cuyos ítems
            contendrán los siguientes campos:


            - `id`: `string`. Identificador de KubiFACTU para el registro de
            facturación.

            - `record_type`: `string (creation|cancellation)`. Tipo de registro
            de facturación.

            - `sif_id`: `string`. ID del SIF utilizado para la creación del
            registro.

            - `sender_company_name`: `string`. Nombre de la empresa emisira.

            - `sender_tax_id_number`: `string`. CIF/NIF de la empresa emisora.

            - `full_invoice_number`: `string`. Número de factura.

            - `fingerprint`: `string`. Huella del registro de facturación.

            - `vf_post_status`: `string`. Ver valores posibles en la
            documentación del campo `vf_post_status` de la respuesta de envío de
            registros de facturación.

            - `vf_record_registration_status`: `string`. Ver valores posibles en
            la documentación del campo `vf_record_registration_status` de la
            respuesta de envío de registros de facturación.

            - `has_warnings`: `bool`. Indica si el registro contiene errores que
            deban ser subsanados.

            - `vf_error_descriptions`: `string|null`. Cadena con la descripción
            de los errores devueltos por Veri*Factu.

            - `vf_response_body`: `string|null`. 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.

            - `xml_url`: `string|null`. 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-kubibai-reference/descargar-xml-del-registro-de-facturación).
            Será `null` si el XML aún no está disponible.

            - `qr_value`: `string|null`. URL del código QR para validación de la
            factura en Veri*Factu. Será `null` si el registro fue rechazado o no
            aplica mostrar QR.

            - `qr_image_url`: `string|null`. URL para descargar la imagen PNG
            del código QR generado por KubiFACTU mediante el endpoint [Descargar
            imagen QR del registro de
            facturación](/openapi-kubibai-reference/descargar-imagen-qr-del-registro-de-facturación).
            Será `null` si el registro fue rechazado o no aplica mostrar QR.
          example: https://www.tuempresa.com/kubifactu/callback
        sif_id:
          type: string
          format: uuid
          description: >
            ID del SIF que se quiere utilizar para el envío de la factura. Los
            SIFs se pueden registrar en el panel web de KubiFACTU.


            Un SIF puede procesar registros de facturación de diferentes
            empresas.


            Una empresa puede tener uno o varios SIFs. Por ejemplo, una empresa
            con varias tiendas puede operar con un SIF por cada establecimiento,
            de forma que el encadenamiento/trazabilidad de las facturas se trate
            por separado.
          example: 9db0bca1-187e-4cf4-b87c-96f2044008d7
        sender_data:
          type: object
          description: Información referente al emisor de la factura.
          required:
            - sender_full_name
            - sender_id_card_number
          properties:
            sender_full_name:
              type: string
              description: Nombre de la empresa emisora.
            sender_id_card_number:
              type: string
              description: NIF/CIF de la empresa emisora.
        recipients:
          type: array
          description: >-
            Información de los receptores de la factura. Obligatorio para
            facturas ordinarias.
          items:
            type: object
            required:
              - full_name
            properties:
              full_name:
                type: string
                description: Nombre de la empresa receptora.
              tax_id_number:
                type: string
                description: >
                  NIF/CIF de la empresa receptora. Este campo es obligatorio si
                  el receptor es nacional y se identifica mediante CIF/NIF.
              other_id_country_code:
                $ref: '#/components/schemas/other_country_code'
              other_id_type:
                $ref: '#/components/schemas/other_tax_id_type_key'
              other_id_card_id:
                type: string
                description: >
                  Número de identificación en el país de residencia del
                  destinatario de la operación de la factura expedida. Ejemplo:
                  `L74JF44L2` para una empresa de `DE`.
        invoice_data:
          type: object
          description: Datos del registro de facturación.
          properties:
            invoice_type_key:
              $ref: '#/components/schemas/invoice_type_key'
            fiscal_year:
              type: integer
              description: >
                Ejercicio fiscal en el que se emite la factura. Aunque este dato
                no se envía a la AEAT, se utiliza junto con el `sif_id` para
                verificar que no se están duplicando los números de factura.
              example: 2025
            series_code:
              type: string
              description: >
                Serie de la factura emitida. Sólo puedo contener caracteres
                ASCII del 32 a 126 (caracteres imprimibles).

                Ejemplo: `2025`.
              example: '2025'
            invoice_number:
              type: string
              description: >
                Nº Factura que identifica a la factura emitida. Sólo puedo
                contener caracteres ASCII del 32 a 126 (caracteres imprimibles).

                Ejemplo: `00021`.
              example: '00021'
            invoice_datetime:
              type: string
              format: date
              description: >
                Fecha de expedición de la factura en formato `yyyy-mm-dd
                hh:mm:ss`. Ejemplo: `2025-02-26 12:35:44`.


                No puede ser una fecha futura.
              example: '2025-02-26 12:35:44'
            operation_date:
              type: string
              format: date
              description: >
                Fecha en la que se ha realizado la operación, siempre que sea
                diferente a la fecha de expedición. Determina el ejercicio y
                periodo fiscal al que pertenece la operación."


                Formato `yyyy-mm-dd`.
              example: '2025-02-26'
            description:
              type: string
              description: |
                Descripción del objeto de la factura.
            representative_company_name:
              type: string
              description: >
                Nombre/razón social del representante del obligado tributario.

                A rellenar solo en caso de que el registro de facturación
                remitido haya sido generado por un representante/asesor del
                obligado tributario.
            representative_tax_id_number:
              type: string
              description: >
                NIF del representante del obligado tributario.

                A rellenar solo en caso de que el registro de facturación
                remitido haya sido generado por un representante/asesor del
                obligado tributario.
            previous_rejection_key:
              $ref: '#/components/schemas/previous_rejection_key'
            correction_key:
              $ref: '#/components/schemas/correction_key'
            is_simplified:
              type: boolean
              description: >
                Indica si es una factura simplificada Articulo 7.2 Y 7.3 RD
                1619/2012.


                Si no se informa este campo se entenderá que tiene valor `N`.


                Sólo se podrá rellenar con `true` si `invoice_type_key` es `F1`,
                `F3`, `R1`, `R2`, `R3` o `R4`.
              example: false
            without_recipient_identification_key:
              $ref: '#/components/schemas/without_recipient_identification_key'
            macrodata_key:
              $ref: '#/components/schemas/macrodata_key'
            coupon_key:
              $ref: '#/components/schemas/coupon_key'
            invoicing_agreement_registration_number:
              type: string
              description: >
                Número de registro obtenido al enviar la autorización en materia
                de facturación o de libros registro a que se refiere la
                disposición adicional primera del Real Decreto que aprueba el
                Reglamento.
            sif_agreement_id:
              type: string
              description: >
                Identificación del acuerdo (resolución) a que se refiere el
                artículo 5 del Reglamento.
            issued_by_third_party_or_recipient_key:
              type: string
              description: >
                Identificador que especifica si la factura ha sido expedida
                materialmente por un tercero o por el destinatario
                (contraparte).


                - Si es igual a `T` (tercero), el bloque `third_party_data` será
                de cumplimentación obligatoria.

                - Si es igual a `D` (destinatario), el bloque `recipients` será
                de cumplimentación obligatoria.


                - `T`: Tercero

                - `D`: Destinatario
              enum:
                - T
                - D
            third_party_data:
              type: object
              description: Información del tercero que expide la factura.
              required:
                - company_name
              properties:
                company_name:
                  type: string
                  description: Nombre de la empresa del tercero que expide la factura.
                tax_id_number:
                  type: string
                  description: >
                    NIF/CIF de la empresa. Este campo es obligatorio si el
                    tercero que expide la factura es nacional y se identifica
                    mediante CIF/NIF
                other_country_code:
                  $ref: '#/components/schemas/other_country_code'
                other_tax_id_type_key:
                  $ref: '#/components/schemas/other_tax_id_type_key'
                other_tax_id_number:
                  type: string
                  description: >
                    Número de identificación, en el país de residencia del
                    tercero que expide la factura. Ejemplo: `L74JF44L2` para una
                    empresa de `DE`.
            rectificative_type_code:
              $ref: '#/components/schemas/rectificative_type_key'
            rectified_base_amount:
              type: number
              format: integer
              description: >
                Base imponible rectificada.

                Valor en céntimos con decimales. Ejemplo: Para 254.36€ el valor
                debería ser `24536`.
              example: 2500.55
            rectified_quota:
              type: number
              format: integer
              description: >
                Cuota de impuesto rectificada.

                Valor en céntimos con decimales. Ejemplo: Para 254.36€ el valor
                debería ser `24536`.
              example: 42.3
            rectified_equalization_tax_quota:
              type: number
              format: decimal
              description: >
                Cuota de recargo de equivalencia rectificada.

                Valor en céntimos con decimales. Ejemplo: Para 5.2€ el valor
                debería ser `520`.
              example: 5.2
            replaced_rectified_invoices:
              type: array
              description: |
                Lista de facturas que se están rectificando.
              items:
                type: object
                required:
                  - tax_id_number
                  - full_invoice_number
                  - invoice_date
                properties:
                  tax_id_number:
                    type: string
                    description: >
                      NIF/CIF de la empresa emisora de la factura que quiere
                      rectificar.
                  full_invoice_number:
                    type: string
                    description: >
                      Serie+Nº Factura que identifica a la factura que se quiere
                      rectificar.

                      Ejemplo: `2025-00001`.
                  invoice_date:
                    type: string
                    format: date
                    description: >
                      Fecha de expedición de la factura que se quiere rectificar
                      en formato `yyyy-mm-dd`.

                      Ejemplo: `2025-02-26`.
                    example: '2025-02-26'
            substituted_invoices:
              type: array
              description: >
                Lista de facturas que se quieren sustituir.


                Sólo podrá incluirse esta agrupación cuando el campo
                `invoice_type_key` sea `F3`.
              items:
                type: object
                required:
                  - tax_id_number
                  - full_invoice_number
                  - invoice_date
                properties:
                  tax_id_number:
                    type: string
                    description: >
                      NIF/CIF de la empresa emisora de la factura que quiere
                      rectificar.
                  full_invoice_number:
                    type: string
                    description: >
                      Serie+Nº Factura que identifica a la factura que se quiere
                      rectificar.

                      Ejemplo: `2025-00001`.
                  invoice_date:
                    type: string
                    format: date
                    description: >
                      Fecha de expedición de la factura que se quiere rectificar
                      en formato `yyyy-mm-dd`.

                      Ejemplo: `2025-02-26`.
                    example: '2025-02-26'
            lines:
              type: array
              description: >
                Desglose de la factura con la lista de los conceptos facturados
                **agrupados por condición fiscal completa**. El número máximo de
                líneas es de 12.


                El desglose debe agruparse por condición fiscal completa:
                `tax_rate` + `vat_tax_regime_key` o `igic_tax_regime_key` +
                `equalization_tax_rate` (si aplica). Esta agrupación responde a
                la condición fiscal de la operación, y no puede realizarse
                únicamente por tipo impositivo.


                A modo de ejemplo, indicar lo siguiente:


                ### Caso 1: Factura con todas las líneas al 21%

                Si las líneas al 21% se acogen a regímenes diferentes, deben
                generarse múltiples agrupaciones en el desglose, cada una con su
                combinación única de `tax_rate` + `vat_tax_regime_key` o
                `igic_tax_regime_key` + `equalization_tax_rate` (si aplica).


                Ejemplo válido:

                - Línea 1: 21%, régimen general

                - Línea 2: 21%, régimen criterio de caja


                El desglose debe contener dos entradas distintas, ambas con tipo
                21%, pero con claves de régimen diferentes.


                ### Caso 2: Factura con líneas al 21% y al 10%


                Se pueden informar más de una clave de régimen por cada tipo
                impositivo, siempre que existan líneas que lo justifiquen.


                Ejemplo válido:

                - Línea 1: 21%, régimen general

                - Línea 2: 21%, régimen especial agencias

                - Línea 3: 10%, régimen general


                El desglose incluirá tres agrupaciones:

                1. 21% + régimen general

                2. 21% + régimen especial agencias

                3. 10% + régimen general
              items:
                type: object
                required:
                  - tax_type_key
                  - vat_tax_regime_key
                  - igic_tax_regime_key
                  - operation_type_key
                  - tax_base
                properties:
                  tax_type_key:
                    $ref: '#/components/schemas/tax_type_key'
                  vat_tax_regime_key:
                    $ref: '#/components/schemas/vat_tax_regime_key'
                  igic_tax_regime_key:
                    $ref: '#/components/schemas/igic_tax_regime_key'
                  operation_type_key:
                    $ref: '#/components/schemas/operation_type_key'
                  exemption_cause_key:
                    $ref: '#/components/schemas/exemption_cause_key'
                  tax_base:
                    type: number
                    format: decimal
                    description: >
                      Magnitud dineraria sobre la que se aplica el tipo
                      impositivo/importe no sujeto.

                      Valor con 12 dígitos en la parte entera y 2 decimales.
                      Ejemplo: `200.00`.
                    example: 200
                  tax_base_at_cost:
                    type: number
                    format: decimal
                    description: >
                      Magnitud dineraria sobre la que se aplica el tipo
                      impositivo en **régimen especial de grupos nivel
                      avanzado**.

                      Valor con 12 dígitos en la parte entera y 2 decimales.
                      Ejemplo: `100.00`.
                  tax_rate:
                    type: number
                    format: decimal
                    description: >
                      Porcentaje aplicado sobre la base imponible para calcular
                      la cuota.

                      Valor con 3 dígitos en la parte entera y 2 decimales.
                      Ejemplo: `21.00`.
                    example: 21
                  tax_quota:
                    type: number
                    format: decimal
                    description: >
                      Cuota resultante de aplicar a la base imponible el tipo
                      impositivo.

                      Valor con 12 dígitos en la parte entera y 2 decimales.
                      Ejemplo: `42.00`.
                    example: 42
                  equalization_tax_rate:
                    type: number
                    format: decimal
                    description: >
                      Tipo de recargo de equivalencia asociado en función del
                      impuesto y tipo impositivo.

                      Valor con 3 dígitos en la parte entera y 2 decimales.
                      Ejemplo: `5.20`.
                    example: 5.2
                  equalization_tax_quota:
                    type: number
                    format: decimal
                    description: >
                      Cuota resultante de aplicar a la base imponible el tipo de
                      recargo de equivalencia.

                      Valor con 12 dígitos en la parte entera y 2 decimales.
                      Ejemplo: `10.40`.
                    example: 10.4
            total_quota:
              type: number
              format: integer
              description: >
                Importe total de la cuota (sumatorio de la cuota repercutida y
                cuota de recargo de equivalencia) de la factura.

                Valor en céntimos con decimales. Ejemplo: Para 254.36€ el valor
                debería ser `25436`.
            total_amount:
              type: number
              format: integer
              description: >
                Importe total de la factura. Ʃ(`tax_base` + `tax_quota` +
                `equalization_tax_quota`) de todas las líneas de detalle de
                desglose (agrupación `lines`).

                Valor en céntimos con decimales. Ejemplo: Para 254.36€ el valor
                debería ser `25436`.
          required:
            - invoice_type_key
            - fiscal_year
            - series_code
            - invoice_number
            - invoice_datetime
            - description
            - lines
            - total_quota
            - total_amount
      required:
        - sif_id
        - sender_data
        - invoice_data
    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.
            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.
            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-kubibai-reference/descargar-imagen-qr-del-registro-de-facturación).
            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-kubibai-reference/descargar-xml-del-registro-de-facturación).
            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
    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
    other_country_code:
      type: string
      description: >
        Código del país en formato [ISO 3166-1
        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2). Sólo es necesario
        rellenarlo **si el sujeto no es nacional**. El código de país debe ser
        `ES` si `other_tax_id_type_key` es `07 (no censado)`. Ejemplo: `DE`
    other_tax_id_type_key:
      type: string
      description: >
        Clave para identificar el tipo de documento del receptor de la factura.
        Los valores posibles son:


        - `02`: **NIF-IVA**: Número de Identificación Fiscal para IVA.

        - `03`: **Pasaporte**: Documento oficial que acredita la identidad y
        nacionalidad del portador.

        - `04`: **Documento oficial de identificación expedido por el país o
        territorio de residencia**.

        - `05`: **Certificado de residencia**: Documento que acredita la
        residencia fiscal.

        - `06`: **Otro documento probatorio**: Documento adicional que sirve
        como prueba de identidad.

        - `07`: **No censado**: El receptor no está registrado en el censo
        fiscal.
      enum:
        - '02'
        - '03'
        - '04'
        - '05'
        - '06'
        - '07'
    invoice_type_key:
      type: string
      description: >
        Especificación del tipo de factura: factura completa, factura
        simplificada, factura emitida en sustitución de facturas simplificadas o
        factura rectificativa.

        - `F1`: Factura (art. 6, 7.2 y 7.3 del RD 1619/2012).

        - `F2`: Factura Simplificada y Facturas sin identificación del
        destinatario art. 6.1.d) RD 1619/2012.

        - `F3`: Factura emitida en sustitución de facturas simplificadas
        facturadas y declaradas.

        - `R1`: Factura Rectificativa (Error fundado en derecho y Art. 80 Uno
        Dos y Seis LIVA)

        - `R2`: Factura Rectificativa (Art. 80.3)

        - `R3`: Factura Rectificativa (Art. 80.4)

        - `R4`: Factura Rectificativa (Resto)

        - `R5`: Factura Rectificativa en facturas simplificadas
      example: F1
      enum:
        - F1
        - F2
        - F3
        - R1
        - R2
        - R3
        - R4
        - R5
    previous_rejection_key:
      type: string
      description: >
        Indica si el registro que se envía corresponde a una subsanación de un
        envío anterior **_rechazado_** por la AEAT.


        Este campo **solo debe utilizarse cuando la AEAT haya rechazado
        explícitamente el registro** y lo haya indicado en su respuesta.


        Un rechazo **no debe confundirse con un error técnico en el envío**
        (timeout, error de red, fallo del servicio, ausencia de respuesta, error
        SOAP, etc.) que tendrá el campo `vf_post_status = failure`. En esos
        casos **el registro no se considera rechazado**, y debe **reenviarse
        exactamente igual**, **sin modificar datos** y **sin informar**
        `correction_key` ni `previous_rejection_key`. [Ver más información al
        respecto](/faq#¿qué-debo-hacer-si-no-puedo-enviar-un-registro-porque-veri-factu-tiene-problemas-técnicos-de-conexión).


        - `X`: El registro se reenvía porque el envío anterior fue
        **rechazado**. Solo puede informarse cuando `correction_key = S`. Se
        utiliza para **subsanar un rechazo**, modificando los datos necesarios.

        - `N`: No, se trata de un alta normal/inicial.
      enum:
        - X
        - 'N'
    correction_key:
      type: string
      description: >
        Indicador que especifica que se trata de una subsanación de un registro
        de facturación de alta previamente generado y exitente en la AEAT. El
        contenido de este nuevo registro de facturación es el correcto y el que
        deberá tenerse en cuenta. Si no se informa este campo, se entenderá que
        tiene valor `N` (alta normal/inicial). [Ver más información al
        respecto](/faq#¿qué-debo-hacer-cuando-veri-factu-“acepta-con-errores”-una-de-mis-facturas).


        - `S`: Sí, se trata de una subsanación de un registro de facturación
        anterior que existe en la AEAT.

        - `N`: No, se trata de un alta normal/inicial.
      enum:
        - S
        - 'N'
    without_recipient_identification_key:
      type: string
      description: >
        Factura sin identificación del destinatario según el artículo 6.1.d del
        RD 1619/2012.


        Si no se informa este campo, se entenderá que tiene valor `"N"`.


        Sólo se podrá rellenar con `"S"` si `invoice_type_key` es `F2` o `R5`.


        - `S`: Sí

        - `N`: No
      enum:
        - S
        - 'N'
    macrodata_key:
      type: string
      description: >
        Identificador que especifica aquellas facturas con base o importe >=
        |100.000.000,00| (valor absoluto).


        Si no se informa este campo, se entenderá que tiene valor `"N"`.


        Sólo se podrá rellenar con `"S"` si `invoice_type_key` es `F2` o `R5`.


        - `S`: Sí

        - `N`: No
      enum:
        - S
        - 'N'
    coupon_key:
      type: string
      description: >
        Identificador que especifica si tiene minoración de la base imponible
        por la concesión de cupones, bonificaciones o descuentos cuando solo se
        expide el original de la factura.

        Si no se informa este campo, se entenderá que tiene valor `"N"`.


        Sólo se podrá rellenar con `"S"` si `invoice_type_key` es `R5` o `R1`.
      enum:
        - S
        - 'N'
      example: 'N'
    rectificative_type_key:
      type: string
      description: >
        Campo que identifica si el tipo de factura rectificativa es por
        **sustitución** o por **diferencias**.


        - `S`: Por sustitución.

        - `I`: Por diferencias.
      enum:
        - S
        - I
    tax_type_key:
      type: string
      description: >
        Impuesto de aplicación. Los valores posibles son:


        - `01`: Impuesto sobre el Valor Añadido (IVA).

        - `02`: Impuesto sobre la Producción, los Servicios y la Importación
        (IPSI) de Ceuta y Melilla.

        - `03`: Impuesto General Indirecto Canario (IGIC).

        - `05`: Otros.
      enum:
        - '01'
        - '02'
        - '03'
        - '05'
    vat_tax_regime_key:
      type: string
      description: >
        Clave que identificará el tipo de régimen del impuesto o una operación
        con trascendencia tributaria en el contexto del IVA. Este campo no debe
        incluirse si se está incluyendo `igic_tax_regime_key` o `tax_type_key`
        tiene un valor diferente de `01`. Los valores posibles son:


        - `01`: Operación de régimen general.

        - `02`: Exportación.

        - `03`: Operaciones a las que se aplique el régimen especial de bienes
        usados, objetos de arte, antigüedades y objetos de colección.

        - `04`: Régimen especial del oro de inversión.

        - `05`: Régimen especial de las agencias de viajes.

        - `06`: Régimen especial grupo de entidades en IVA (Nivel Avanzado).

        - `07`: Régimen especial del criterio de caja.

        - `08`: Operaciones sujetas al IPSI / IGIC (Impuesto sobre la
        Producción, los Servicios y la Importación / Impuesto General Indirecto
        Canario).

        - `09`: Facturación de las prestaciones de servicios de agencias de
        viaje que actúan como mediadoras en nombre y por cuenta ajena (D.A.4ª
        RD1619/2012).

        - `10`: Cobros por cuenta de terceros de honorarios profesionales o de
        derechos derivados de la propiedad industrial, de autor u otros por
        cuenta de sus socios, asociados o colegiados efectuados por sociedades,
        asociaciones, colegios profesionales u otras entidades que realicen
        estas funciones de cobro.

        - `11`: Operaciones de arrendamiento de local de negocio.

        - `14`: Factura con IVA pendiente de devengo en certificaciones de obra
        cuyo destinatario sea una Administración Pública.

        - `15`: Factura con IVA pendiente de devengo en operaciones de tracto
        sucesivo.

        - `17`: Operación acogida a alguno de los regímenes previstos en el
        Capítulo XI del Título IX (OSS e IOSS).

        - `18`: Recargo de equivalencia.

        - `19`: Operaciones de actividades incluidas en el Régimen Especial de
        Agricultura, Ganadería y Pesca (REAGYP).

        - `20`: Régimen simplificado.
      enum:
        - '01'
        - '02'
        - '03'
        - '04'
        - '05'
        - '06'
        - '07'
        - '08'
        - '09'
        - '10'
        - '11'
        - '14'
        - '15'
        - '17'
        - '18'
        - '19'
        - '20'
    igic_tax_regime_key:
      type: string
      description: >
        Clave que identificará el tipo de régimen del impuesto o una operación
        con trascendencia tributaria en el contexto del IGIC. Este campo no debe
        incluirse se se está incluyendo `vat_tax_regime_key`. Los valores
        posibles son:


        - `01`: Operación de régimen general.

        - `02`: Exportación.

        - `03`: Operaciones a las que se aplique el régimen especial de bienes
        usados, objetos de arte, antigüedades y objetos de colección.

        - `04`: Régimen especial del oro de inversión.

        - `05`: Régimen especial de las agencias de viajes.

        - `06`: Régimen especial grupo de entidades en IGIC (Nivel Avanzado).

        - `07`: Régimen especial del criterio de caja.

        - `08`: Operaciones sujetas al IPSI / IVA (Impuesto sobre la Producción,
        los Servicios y la Importación / Impuesto sobre el Valor Añadido).

        - `09`: Facturación de las prestaciones de servicios de agencias de
        viaje que actúan como mediadoras en nombre y por cuenta ajena (D.A.4ª
        RD1619/2012).

        - `10`: Cobros por cuenta de terceros de honorarios profesionales o de
        derechos derivados de la propiedad industrial, de autor u otros por
        cuenta de sus socios, asociados o colegiados efectuados por sociedades,
        asociaciones, colegios profesionales u otras entidades que realicen
        estas funciones de cobro.

        - `11`: Operaciones de arrendamiento de local de negocio.

        - `14`: Factura con IGIC pendiente de devengo en certificaciones de obra
        cuyo destinatario sea una Administración Pública.

        - `15`: Factura con IGIC pendiente de devengo en operaciones de tracto
        sucesivo.

        - `17`: Régimen especial de comerciante minorista.

        - `18`: Régimen especial del pequeño empresario o profesional.

        - `19`: Operaciones interiores exentas por aplicación artículo 25 Ley
        19/1994.
      enum:
        - '01'
        - '02'
        - '03'
        - '04'
        - '05'
        - '06'
        - '07'
        - '08'
        - '09'
        - '10'
        - '11'
        - '14'
        - '15'
        - '17'
        - '18'
        - '19'
    operation_type_key:
      type: string
      description: >
        Código que identifica el tipo de operación según su sujeción o exención
        tributaria. Los valores posibles son:


        - `S1`: Operación Sujeta y No exenta - Sin inversión del sujeto pasivo.

        - `S2`: Operación Sujeta y No exenta - Con Inversión del sujeto pasivo.

        - `N1`: Operación No Sujeta artículo 7, 14, otros.

        - `N2`: Operación No Sujeta por Reglas de localización.
      enum:
        - S1
        - S2
        - N1
        - N2
    exemption_cause_key:
      type: string
      description: |
        Causa de la exención. Los valores posibles son:

        - `E1`: Exenta por el artículo 20.
        - `E2`: Exenta por el artículo 21.
        - `E3`: Exenta por el artículo 22.
        - `E4`: Exenta por los artículos 23 y 24.
        - `E5`: Exenta por el artículo 25.
        - `E6`: Exenta por otros.
      enum:
        - E1
        - E2
        - E3
        - E4
        - E5
        - E6
    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.
      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 cuestión.

````