El sistema VeriFactu supone uno de los cambios más significativos en la gestión de la facturación en España en los últimos años. Para los desarrolladores de software de gestión, ERP, CRM o cualquier solución que incluya módulos de facturación, entender en profundidad los requisitos técnicos de VeriFactu no es opcional: es una obligación. Esta guía recoge los aspectos clave que todo equipo de desarrollo debe conocer antes de afrontar la integración.
Qué deben saber los desarrolladores sobre VeriFactu
VeriFactu es el sistema de verificación de facturas regulado por el Real Decreto 1007/2023, que desarrolla el Reglamento de facturación y establece los requisitos que deben cumplir los sistemas informáticos de facturación (SIF) utilizados por empresas y autónomos en España. Su objetivo es garantizar la integridad, conservación e inalterabilidad de los registros de facturación, y permitir a la Agencia Tributaria verificar su autenticidad.
Para los desarrolladores, VeriFactu implica comprender dos grandes conceptos:
- Sistemas VERI*FACTU: aquellos que envían automáticamente cada registro de facturación a la AEAT en el momento de su generación, de forma que el contribuyente queda eximido de otras obligaciones adicionales de remisión.
- Sistemas no VERI*FACTU con requisitos equivalentes: aquellos que no envían en tiempo real a la AEAT, pero deben cumplir igualmente con los requisitos de integridad, encadenamiento e inalterabilidad, y conservar los registros para ponerlos a disposición de la Administración cuando se requieran.
Es fundamental que el equipo de desarrollo entienda desde el principio cuál de los dos modelos va a implementar, ya que las implicaciones técnicas y de arquitectura son distintas en cada caso.
Requisitos técnicos del sistema
La normativa establece una serie de requisitos técnicos que los sistemas informáticos de facturación deben cumplir de forma obligatoria. A continuación se detallan los más relevantes desde el punto de vista del desarrollo:
Generación de la huella o hash del registro
Cada registro de facturación debe llevar asociada una huella o hash que garantice su integridad. Este hash se calcula aplicando el algoritmo SHA-256 sobre un conjunto de campos definidos por la normativa, en un orden y formato concreto. Cualquier alteración posterior del registro invalidaría el hash, lo que permite detectar manipulaciones.
Encadenamiento de registros
Uno de los pilares técnicos de VeriFactu es el encadenamiento. El hash de cada registro de facturación debe incorporar el hash del registro inmediatamente anterior, creando así una cadena de registros que hace prácticamente imposible modificar un registro sin que ello afecte a todos los posteriores. Este mecanismo es similar en concepto al utilizado en las cadenas de bloques (blockchain), aunque con una implementación propia y específica definida por la AEAT.
Registro de alta y anulación
El sistema debe contemplar dos tipos principales de registros:
- Registro de alta: se genera al emitir una factura y contiene todos los datos relevantes de la misma.
- Registro de anulación: se genera cuando una factura previamente registrada debe ser anulada, haciendo referencia al registro original.
Ambos tipos de registro tienen campos obligatorios específicos definidos en la documentación técnica publicada por la AEAT.
Formato y estructura de los registros
Los registros deben generarse en formato XML, siguiendo el esquema XSD publicado por la Agencia Tributaria. Este esquema define con exactitud los campos obligatorios, opcionales, sus tipos de datos, longitudes máximas y las reglas de validación. Trabajar contra el esquema XSD oficial es imprescindible para garantizar que los registros generados son conformes con la normativa.
Firma electrónica
Los registros enviados a la AEAT en el modelo VERI*FACTU deben ir firmados electrónicamente mediante un certificado reconocido. Es importante planificar cómo se gestionará el ciclo de vida de estos certificados en el software, especialmente en entornos donde el sistema genera facturas de forma desatendida o automatizada.
Comunicación con la AEAT
Para los sistemas que opten por la modalidad VERI*FACTU, la comunicación con la sede electrónica de la AEAT se realiza mediante servicios web (web services) basados en SOAP, con los WSDL publicados oficialmente. La AEAT dispone de un entorno de pruebas (preproducción) donde los desarrolladores pueden validar sus implementaciones antes de pasar a producción.
Cómo integrar VeriFactu en software
La integración de VeriFactu en una aplicación existente o en un nuevo desarrollo requiere un enfoque estructurado. Estos son los pasos habituales que debe seguir un equipo de desarrollo:
- Análisis de la normativa y documentación técnica: antes de escribir una sola línea de código, es imprescindible leer en detalle el Real Decreto 1007/2023 y la documentación técnica publicada por la AEAT, que incluye los esquemas XSD, los manuales de usuario del servicio web y los documentos de preguntas frecuentes.
- Diseño del modelo de datos: el esquema de base de datos debe adaptarse para almacenar todos los campos exigidos por la normativa, incluyendo el hash de cada registro y el hash del registro anterior. Este encadenamiento debe estar integrado en la lógica de negocio de la aplicación.
- Implementación del cálculo del hash: se debe implementar el algoritmo de generación del hash SHA-256 respetando estrictamente el orden y formato de campos definido en la documentación técnica. Un error en este punto afectará a toda la cadena de registros.
- Generación y validación del XML: el módulo de facturación debe generar el XML de cada registro conforme al esquema XSD oficial. Es recomendable implementar una validación interna contra dicho esquema antes de intentar cualquier envío a la AEAT.
- Integración con el servicio web de la AEAT: en el caso de sistemas VERI*FACTU, hay que implementar el cliente del servicio web SOAP de la AEAT, gestionar las respuestas (tanto aceptaciones como rechazos o errores) y establecer mecanismos de reintento y control de errores.
- Pruebas en el entorno de preproducción: la AEAT pone a disposición un entorno de pruebas. Todas las pruebas de integración deben realizarse en este entorno antes de activar el sistema en producción.
Buenas prácticas de desarrollo
Más allá de los requisitos normativos estrictos, existen una serie de buenas prácticas que los equipos de desarrollo deben tener en cuenta para construir un sistema robusto, mantenible y preparado para posibles cambios normativos futuros:
Separar la lógica de VeriFactu del resto del sistema
Es aconsejable encapsular toda la lógica relacionada con VeriFactu (generación del hash, construcción del XML, comunicación con la AEAT) en módulos o capas separadas. Esto facilita el mantenimiento, la realización de pruebas unitarias y la adaptación a futuros cambios normativos sin necesidad de tocar el núcleo del sistema.
Implementar un sistema robusto de gestión de errores
La comunicación con los servicios web de la AEAT puede fallar por múltiples razones: problemas de conectividad, certificados caducados, rechazos por errores de validación, etc. El sistema debe ser capaz de gestionar estos escenarios, registrar los errores de forma detallada y, cuando sea posible, reintentar el envío de forma automática y controlada.
Auditoría y trazabilidad completa
Guarda un log detallado de todos los registros generados, los envíos realizados a la AEAT, las respuestas recibidas y cualquier incidencia. Esta trazabilidad es fundamental tanto para la resolución de problemas como para poder responder ante requerimientos de la Administración.
Gestión del ciclo de vida de los certificados
Implementa alertas que avisen con antelación suficiente de la caducidad de los certificados utilizados para la firma electrónica. Un certificado caducado en producción puede paralizar la facturación de tus clientes.
Pruebas automatizadas
Desarrolla una suite de pruebas automatizadas que cubra los casos más relevantes: generación correcta del hash, encadenamiento entre registros, validación del XML contra el esquema XSD, y gestión de respuestas de la AEAT. Estas pruebas serán especialmente valiosas cada vez que se actualice la normativa o la documentación técnica.
Documentación interna del módulo
Documenta con detalle la implementación, especialmente las partes más sensibles como el cálculo del hash. Esto es fundamental para facilitar el mantenimiento futuro y para que cualquier nuevo miembro del equipo pueda entender el sistema sin tener que descifrar el código.
Conclusión
Para los desarrolladores de software de facturación, VeriFactu representa un reto técnico significativo pero perfectamente abordable si se afronta con rigor y planificación. La clave está en leer y comprender la documentación técnica oficial de la AEAT antes de comenzar el desarrollo, diseñar una arquitectura que aísle la lógica de VeriFactu del resto del sistema, y dedicar el tiempo necesario a las pruebas en el entorno de preproducción.
El incumplimiento de los requisitos del sistema puede acarrear consecuencias graves para los usuarios finales del software, por lo que la responsabilidad del desarrollador en este ámbito es alta. Mantente actualizado con los cambios en la documentación técnica que la AEAT va publicando, y consulta fuentes especializadas como Verifactu.com para estar al día de las novedades normativas y técnicas que afectan a tu desarrollo.