VeriFactu AEAT SOAP / XML Firma XAdES Flutter & Spring Boot
La implementación del reglamento VeriFactu (normativa de la Agencia Tributaria al amparo de la Ley 11/2021 de medidas de prevención del fraude fiscal y el Real Decreto 1007/2023) exige que los sistemas informáticos de facturación garanticen la inalterabilidad, trazabilidad, legibilidad y conservación de todos los registros de ventas. El objetivo fundamental es erradicar el denominado "software de doble uso" o contabilidades paralelas.
Técnicamente, enviar una factura a la AEAT no se limita a transmitir una estructura de datos JSON. Es un ejercicio de precisión burocrática comparable a enviar una carta certificada donde el envoltorio o sobre (el encabezado SOAP Header respaldado por la norma WS-Security) debe construirse con exactitud matemática. Si la canonización de la firma digital X.509 o la jerarquía de etiquetas difiere por un solo carácter de la especificación oficial, los servidores de la AEAT rechazarán la petición en la capa de transporte antes de llegar a leer el cuerpo del mensaje (SOAP Body).
SOAP 1.1 / 1.2 sobre HTTPS mTLS con validación de esquema WSDL estricto.
Encabezado WS-Security firmado mediante certificado digital X.509 de emisor.
Flutter y Dart carecen de motor nativo para serializar y firmar WS-Security.
Al evaluar el desarrollo del software Novapay para terminales punto de venta (TPV) en Android, iOS y Windows, analizamos el esfuerzo requerido para implementar la pila criptográfica VeriFactu de forma nativa frente a delegarla en un servidor intermedio.
Distribución del esfuerzo de desarrollo en clientes ligeros. Como se observa, la construcción y canonización del sobre de seguridad representa más del 65% de la carga técnica total.
Comparativa de riesgos y mantenibilidad entre intentar empaquetar WS-Security en el cliente Dart vs. desacoplar la firma en un Middleware especializado en Spring Boot.
El sistema se diseñó utilizando un patrón de arquitectura desacoplada. La aplicación TPV en Flutter envía una petición HTTP/REST ligera con los datos de la venta en formato JSON. El backend Spring Boot valida el DTO, recupera el hash criptográfico de la factura anterior, genera la nueva huella SHA-256 encadenada, aplica la firma digital X.509 utilizando el almacén de claves (KeyStore) de la empresa y realiza la transmisión SOAP con los servidores de la Agencia Tributaria.
En caso de requerir una ejecución cliente pura ("Hard Mode" sin servidor intermedio), se investigó la compatibilidad y viabilidad de las librerías del ecosistema Dart/Pub.dev para emular la pila SOAP en dispositivos móviles y de escritorio.
La normativa VeriFactu establece un conjunto estandarizado de servicios web definidos por archivos WSDL. En el flujo operativo habitual de un TPV Novapay, cada tipo de evento en caja activa una llamada a la operación correspondiente:
| Servicio (WSDL) | Operación | Función Operativa TPV / Novapay |
|---|---|---|
SuministroFacturas |
AltaFactu | Envío e inscripción inmediata del registro de facturación de expedición al completar un cobro de venta. |
SuministroFacturas |
AnulacionFactu | Registro de anulación o corrección de facturas emitidas por error o devolución de mercadería. |
Consultas |
ConsultaLRFacturas | Auditoría y cotejo periódico entre la base de datos local del negocio y los libros de la AEAT. |
Verificacion |
Veri*Factu | Validación externa de la huella digital y el código QR impreso en el ticket o factura recibida por el cliente. |
Cada petición transmitida debe incrustar la marca temporal de envío y el bloque ds:Signature. El encadenamiento se garantiza introduciendo la huella SHA-256 de la factura inmediatamente anterior como parámetro de entrada obligatorio del registro actual.
Experimente la rigidez del protocolo WS-Security. Haga clic en las etiquetas para construir la jerarquía del encabezado SOAP. El validador simula la verificación que ejecutan los servidores de la Agencia Tributaria.
Configure el encabezado en el orden jerárquico estricto exigido por la AEAT.