ERP, SaaS y software de gestión

VeriFactu para ERP y SaaS: conecta tu software con la AEAT

Ya gestionas clientes, impuestos y numeración. Solo te falta hablar con la AEAT, y eso es una llamada a la API. Esto es lo que cubre y los casos que conviene tener claros.

Qué te toca a ti y qué te quitas de encima

Tu ERP sigue siendo el sistema principal: conserva sus clientes, líneas, precios y numeración, y decide cuándo se emite cada factura. KubiFACTU se ocupa de la parte de VeriFactu:

  • Genera el registro de facturación y su huella.
  • Lo encadena con el anterior de la misma empresa y SIF.
  • Lo envía a la AEAT y te devuelve el estado.
  • Genera el XML del registro y el QR de cotejo.

Tú envías la factura en JSON y guardas la respuesta. Al cliente le entregas la factura con el QR y la frase «Factura verificable en la sede electrónica de la AEAT» o «VERI*FACTU», con un QR de entre 30×30 y 40×40 milímetros.

Los tipos de factura que cubre

Altas, subsanaciones y anulaciones. En las altas, todos los tipos que aparecen en la documentación:

  • Factura ordinaria (F1), también en diferido.
  • Factura simplificada (F2) y factura en sustitución de simplificada (F3).
  • Rectificativa por sustitución y por diferencias (R1).
  • Factura a una empresa de la UE o de fuera de la UE.

Cada una está con su JSON en los ejemplos de la API.

Rectificar, subsanar o anular

Qué procedimiento usar depende del error, y la documentación lo separa con claridad:

  • Un error previsto en el Reglamento de Obligaciones de Facturación (RD 1619/2012) se corrige con una factura rectificativa, por sustitución o por diferencias.
  • Un registro rechazado por la AEAT se subsana con correction_key S y previous_rejection_key X. Puedes mantener el resto de campos o corregir los que lo necesiten.
  • Un registro aceptado con errores se subsana con correction_key S, sin previous_rejection_key, corrigiendo los campos que lo necesiten. Es un registro independiente del de alta.
  • Una anulación solo es posible si la factura entera no debía haberse emitido y ningún procedimiento del reglamento lo resuelve. Las facturas de operaciones reales no se anulan: se rectifican.

La subsanación solo se usa cuando la AEAT ha rechazado o aceptado con errores el registro de forma explícita. Si el envío falla por un problema técnico de conexión, no se subsana: se reenvía el mismo registro sin regenerarlo.

Facturas con muchas líneas, retenciones y suplidos

Dos detalles que suelen sorprender a un ERP:

  • Límite de 12 líneas por factura. Los conceptos se agrupan por condición fiscal completa: el tipo impositivo, el régimen (vat_tax_regime_key o igic_tax_regime_key) y el recargo de equivalencia si aplica. No basta con agrupar por tipo de IVA: dos líneas al 21 % con regímenes distintos son dos agrupaciones.
  • La retención de IRPF, los suplidos o la retención por garantía decenal no forman parte del registro. No afectan a la base, a la cuota ni al importe total. Alteran el total a pagar, pero no el importe total de la factura, que es el que aparece en el QR. Si los incluyes en la factura, conviene mostrar los dos importes diferenciados.

Si tu software factura por muchas empresas

Es el caso de los SaaS y del software vertical, como clínicas, academias, talleres o comercios. Funciona así:

  • Das de alta a cada empresa cliente por API o desde el panel, y cada una tiene su API-KEY.
  • Los registros se encadenan por separado para cada empresa y SIF. Un SIF puede procesar registros de varias empresas, y una empresa puede tener varios.
  • Puedes gestionar los SIF y subir los documentos de autorización de cada empresa por API.
  • Puedes consultar las operaciones de una empresa en un año y un mes, para saber cuánto usa.
  • La tarifa crece por tramos de CIFs, y cuenta como CIF cada empresa habilitada que tiene al menos una operación. Está en precios, con el tramo gratuito.

Del entorno de pruebas a producción

  • Con nuestro certificado de colaborador social de la AEAT, no necesitas un certificado por cliente: cada cliente firma el otorgamiento de representación, adjunta una copia de su documento identificativo y nos lo remite.
  • Si prefieres tu propio certificado, debes ser colaborador social y obtener de tus clientes una autorización equivalente con tus datos.
  • La documentación recomienda ofrecer a tus clientes una declaración responsable de cumplimiento.
  • Producción empieza de cero: las API-KEY y los SIF son nuevos y no se conserva nada del entorno de pruebas.

El detalle está en paso a producción. Para las fechas, mira los plazos de VeriFactu. Si algunos de tus clientes tributan en Araba, Bizkaia o Gipuzkoa, ese caso lo cubre KubiBAI: TicketBAI para ERP y SaaS.

Ejemplos

Dos casos que un ERP acaba encontrando

Una rectificativa por sustitución y la subsanación de un registro que la AEAT rechazó.

Rectificativa por sustitución (R1, S)

La factura 2026-000008 tenía una base de 200,00 € y 42,00 € de IVA. La nueva la rectifica y la sustituye con una base de 100,00 € y 21,00 € de IVA.

  • invoice_type_key con el valor R1: factura rectificativa por error fundado en derecho y artículo 80 Uno, Dos y Seis de la LIVA.
  • rectificative_type_key con el valor S: sustitución.
  • rectified_tax_base y rectified_tax_quota recogen la base y la cuota de la factura original.
  • rectified_invoices identifica la factura rectificada.
Ver este ejemplo en la documentación (abre en nueva pestaña)
POST /api/invoices
{  "sif_id": "9db0bca1-187e-4cf4-b87c-96f2044008d7",  "invoice_type_key": "R1",  "sender_data": {    "company_name": "Empresa emisora de ejemplo",    "tax_id_number": "J27290840"  },  "recipients": [    {      "company_name": "Empresa receptora de ejemplo",      "tax_id_number": "B99014037"    }  ],  "full_invoice_number": "2026-000014",  "fiscal_year": 2026,  "issue_date": "2026-01-03",  "operation_description": "Factura rectificativa.",  "rectificative_type_key": "S",  "rectified_tax_base": 200.00,  "rectified_tax_quota": 42.00,  "rectified_invoices": [    {      "tax_id_number": "J27290840",      "full_invoice_number": "2026-000008",      "issue_date": "2026-01-02"    }  ],  "total_quota": 21.00,  "total_amount": 121.00,  "tax_breakdown": [    {      "tax_type_key": "01",      "vat_tax_regime_key": "01",      "operation_type_key": "S1",      "tax_base": 100.00,      "tax_rate": 21.00,      "tax_quota": 21.00    }  ]}

Subsanación con un registro previo rechazado

Para subsanar un registro que se rechazó antes, por rechazo de VeriFactu o por problemas técnicos en el envío.

  • correction_key con el valor S, como en cualquier subsanación.
  • previous_rejection_key con el valor X: indica que el registro anterior fue rechazado.
  • El resto de campos del registro pueden mantenerse idénticos al original.
Ver este ejemplo en la documentación (abre en nueva pestaña)
POST /api/invoices
{  "sif_id": "9db0bca1-187e-4cf4-b87c-96f2044008d7",  "invoice_type_key": "F1",  "correction_key": "S",  "previous_rejection_key": "X",  "sender_data": {    "company_name": "Empresa emisora de ejemplo",    "tax_id_number": "J27290840"  },  "recipients": [    {      "company_name": "Empresa receptora de ejemplo",      "tax_id_number": "B99014037"    }  ],  "full_invoice_number": "2026-000018",  "fiscal_year": 2026,  "issue_date": "2026-01-03",  "operation_description": "Factura ordinaria por entrega de mercancías.",  "total_quota": 21.00,  "total_amount": 121.00,  "tax_breakdown": [    {      "tax_type_key": "01",      "vat_tax_regime_key": "01",      "operation_type_key": "S1",      "tax_base": 100.00,      "tax_rate": 21.00,      "tax_quota": 21.00    }  ]}

Dudas habituales

Preguntas sobre VeriFactu en ERP y SaaS

¿Tengo que cambiar la numeración de mis facturas?

No. Tu ERP sigue siendo el sistema principal y conserva sus clientes, líneas, precios y numeración. Envías el número de cada factura en la petición y KubiFACTU se ocupa del registro de facturación.

¿Cuántas líneas admite una factura?

Hasta 12. Los conceptos se agrupan por condición fiscal completa: tipo impositivo, régimen y recargo de equivalencia si aplica. Dos líneas al mismo tipo con regímenes distintos son dos agrupaciones.

¿Cómo trato la retención de IRPF o los suplidos?

No forman parte del registro de facturación: no afectan a la base, a la cuota ni al importe total, que es el que aparece en el QR. Alteran el total a pagar, así que conviene mostrar ambos importes diferenciados en la factura.

¿Cuándo rectifico, cuándo subsano y cuándo anulo?

Si el error está previsto en el Reglamento de Obligaciones de Facturación, se emite una factura rectificativa. Si la AEAT rechaza un registro o lo acepta con errores, se emite una subsanación. La anulación solo es posible si la factura entera no debía haberse emitido y ningún procedimiento del reglamento lo resuelve.

¿Necesito un certificado digital por cada empresa cliente?

No. KubiFACTU firma como colaborador social de la AEAT y cada cliente firma el otorgamiento de representación. Si eres colaborador social, también puedes usar tu propio certificado.

¿Qué pasa con los datos del entorno de pruebas al pasar a producción?

Producción empieza de cero: las API-KEY y los SIF son nuevos y no se conservan los datos del entorno de pruebas. Tu integración se queda igual; cambias la URL base y usas las API-KEY de producción.

¿Cuánto cuesta para un SaaS con muchas empresas cliente?

La tarifa es una cuota mensual por tramos de CIFs y de operaciones, y es pública. Cuenta como CIF cada empresa cliente habilitada que ha registrado al menos una operación. Hay un tramo gratuito de hasta 10 CIFs y 50 operaciones al mes.

Empieza hoy

Envía tu primer registro a VeriFactu

Regístrate en el entorno de pruebas, sigue el inicio rápido y envía tu primer registro. Cuando todo encaje, das de alta producción.