Uno de los aspectos más técnicos del sistema VeriFactu es el formato en el que se deben enviar los registros de facturación a la Agencia Tributaria. Ese formato es XML, un estándar de intercambio de datos ampliamente utilizado en sistemas tributarios de todo el mundo. Entender cómo está construido este archivo y qué campos son imprescindibles puede ahorrarte problemas a la hora de implementar o validar tu software de facturación.
En este artículo encontrarás una explicación clara de la estructura del XML de VeriFactu, los campos obligatorios según la normativa vigente y un ejemplo completo que te servirá como referencia práctica.
Qué es el XML de VeriFactu
El XML de VeriFactu es el archivo estructurado que los sistemas informáticos de facturación utilizan para comunicar los registros de alta, anulación o subsanación de facturas a la Agencia Tributaria, a través de su servicio web.
El término XML (eXtensible Markup Language) hace referencia a un lenguaje de marcado que organiza la información en etiquetas jerárquicas, lo que permite que diferentes sistemas informáticos lean e interpreten los datos de forma estandarizada. En el contexto de VeriFactu, este archivo recoge todos los datos relevantes de cada factura emitida y los transmite de manera segura y verificable.
Es importante diferenciar dos conceptos que a menudo se confunden:
- El XML de VeriFactu es el mensaje que se envía a la AEAT y que contiene el registro de facturación.
- La factura en sí puede seguir siendo un PDF u otro formato entregado al cliente. El XML es el registro que queda en los sistemas de la Agencia Tributaria.
El Reglamento por el que se regula el sistema VeriFactu, aprobado mediante el Real Decreto 1007/2023, establece las especificaciones técnicas que deben cumplir estos registros, y la AEAT publica de forma periódica documentación técnica actualizada con los esquemas XSD que validan la estructura del XML.
Estructura del XML de facturación en VeriFactu
El XML de VeriFactu sigue una estructura jerárquica bien definida. En el nivel más alto se encuentra el mensaje de comunicación, que puede contener uno o varios registros de facturación agrupados.
De forma simplificada, la estructura principal se organiza en los siguientes bloques:
- Cabecera del mensaje: Identifica al emisor del mensaje, el tipo de comunicación y otros metadatos necesarios para el procesamiento por parte de la AEAT.
- Registros de facturación: Contienen los datos de cada factura incluida en el envío. Dentro de cada registro se distinguen a su vez varios subbloques: identificación de la factura, datos del emisor, datos del destinatario, desglose tributario, encadenamiento y huella digital.
El encadenamiento es uno de los elementos más singulares de VeriFactu. Cada registro incluye una referencia al registro anterior mediante una huella o hash, lo que crea una cadena de registros que garantiza la integridad del historial de facturación y dificulta cualquier manipulación posterior.
Campos obligatorios del XML de VeriFactu
La normativa establece una serie de campos que deben estar presentes en todo registro de alta de factura. A continuación se detallan los principales:
Identificación del sistema y del emisor
- IDSistema: Identificador del sistema informático de facturación, tal como fue registrado en la AEAT.
- NIF del emisor: El número de identificación fiscal del obligado tributario que emite la factura.
- Nombre o razón social del emisor.
Datos de identificación de la factura
- Número de factura: El número o serie y número que identifica de forma única la factura dentro del sistema del emisor.
- Fecha de expedición: La fecha en la que se emite la factura, en formato YYYY-MM-DD.
- Tipo de factura: Indica si se trata de una factura completa, simplificada, rectificativa, etc.
Datos del destinatario
- NIF o identificación del destinatario (cuando sea obligatoria su consignación).
- Nombre o razón social del destinatario.
Desglose de importes y tributación
- Base imponible por cada tipo de IVA aplicado.
- Tipo impositivo aplicado (general, reducido, superreducido, exento, etc.).
- Cuota de IVA resultante.
- Importe total de la factura.
Encadenamiento y huella
- Huella del registro anterior: El hash del registro de facturación inmediatamente anterior, necesario para construir la cadena de integridad.
- Huella del registro actual: Generada a partir de los datos del propio registro según el algoritmo establecido por la AEAT (SHA-256).
- Fecha y hora de generación del registro.
Identificación del software
- Nombre y versión del software de facturación.
- Número de registro del software en la AEAT.
Ejemplo completo de XML de VeriFactu
A continuación se muestra un ejemplo simplificado de la estructura de un registro XML de VeriFactu para una factura de alta. Este ejemplo tiene únicamente fines ilustrativos y no constituye un esquema válido para producción, ya que los esquemas oficiales deben consultarse en la sede electrónica de la AEAT y pueden actualizarse:
Estructura del mensaje de cabecera:
- Elemento raíz: RegFactuSistemaFacturacion
- Subelemento: Cabecera
- ObligadoEmision > NIF: B12345678
- ObligadoEmision > NombreRazon: Empresa Ejemplo S.L.
Estructura del registro de facturación (RegistroAlta):
- IDFactura
- IDEmisorFactura: B12345678
- NumSerieFactura: 2024-001
- FechaExpedicionFactura: 2024-06-15
- NIF: 12345678A
- NombreRazon: Cliente Ejemplo
- TipoImpositivo: 21.00
- BaseImponible: 1000.00
- CuotaRepercutida: 210.00
- PrimerRegistro: S (cuando es el primer registro de la cadena) o bien la huella del registro anterior.
- NombreRazon: Proveedor Software Facturación
- NIF: A98765432
- NombreSistemaInformatico: FacturaPro
- NumeroRegistroSistemaInformatico: AEAT-SF-2024-00123
- Version: 1.0
Es imprescindible que el software de facturación calcule la huella de cada registro siguiendo estrictamente el algoritmo y el orden de campos que especifica la documentación técnica oficial de la AEAT, ya que cualquier desviación provocará errores de validación al realizar el envío.
Errores frecuentes al generar el XML de VeriFactu
Conocer los errores más habituales puede ayudarte a evitarlos durante la implementación o revisión de tu sistema:
- Formato de fecha incorrecto: La AEAT exige un formato específico tanto para las fechas como para los campos de fecha y hora con huso horario.
- Huella mal calculada: Si el orden de los campos o la codificación de caracteres no es exactamente la especificada, la huella resultante será inválida.
- Encadenamiento roto: Si se modifica o elimina un registro anterior, la cadena de huellas queda inconsistente y el sistema detecta la manipulación.
- Campos numéricos con formato incorrecto: Los importes deben respetar el número de decimales y el separador decimal establecidos en el esquema.
- Ausencia de campos obligatorios: Omitir cualquier campo marcado como obligatorio en el esquema XSD provocará el rechazo del mensaje.
Conclusión
El XML de VeriFactu es el corazón técnico del sistema de facturación verificable. Comprender su estructura, los campos que lo componen y el mecanismo de encadenamiento es fundamental tanto para los desarrolladores de software como para los autónomos y pymes que quieran supervisar que su herramienta cumple correctamente con la normativa.
Si utilizas un software homologado, gran parte de este proceso es automático. Sin embargo, conocer el formato te permite detectar posibles errores, comunicarte mejor con tu proveedor tecnológico y asegurarte de que tus registros de facturación son correctos desde el primer envío.
Para consultar los esquemas XSD oficiales y la documentación técnica actualizada, recurre siempre a la sede electrónica de la Agencia Tributaria, ya que es la fuente que prevalece ante cualquier otra en caso de discrepancia.