Veri*Factu es el sistema de la Agencia Tributaria que obliga a remitir cada factura con una huella encadenada. Este prototipo implementa el flujo completo de extremo a extremo: cálculo de la huella SHA-256 encadenada, construcción del sobre SOAP, cliente con autenticación mutua por certificado (mTLS), parseo de la respuesta de la AEAT, QR de cotejo, anulaciones y consulta de registros ya presentados.
Veri*Factu es el sistema antifraude de la AEAT (RD 1007/2023) que obliga a los sistemas de facturación a registrar cada factura con una huella encadenada e inalterable y, en modo Veri*Factu, a remitirla a Hacienda en tiempo real. Este prototipo es una integración directa en PHP puro con el servicio web RegFactuSistemaFacturacion de la AEAT, sin librerías de terceros ni pasarelas intermedias: habla por SOAP sobre HTTPS con autenticación mutua (mTLS) usando el certificado digital del obligado, tanto en preproducción (pruebas) como en producción.
El núcleo resuelve las tres piezas que hacen funcionar Veri*Factu: el cálculo de la huella SHA-256 según el algoritmo oficial (orden de campos fijo, resultado en hexadecimal mayúsculas), el encadenamiento de cada factura con la huella de la anterior, y la construcción manual del sobre SOAP con los namespaces del esquema oficial. Además interpreta la respuesta de la AEAT (estado del envío, CSV, errores por registro), genera la URL del QR de cotejo que debe imprimirse en la factura, soporta anulaciones y rectificativas, y permite consultar los registros ya presentados. Una decisión de arquitectura que documenta el propio README: en modo Veri*Factu no hace falta firmar cada registro con XAdES, porque la integridad la garantizan la huella encadenada y el canal autenticado por certificado.
Es un prototipo de referencia, no un SIF certificado. Incluye una interfaz web bloqueada al entorno de pruebas que se comporta como un sistema de facturación real (persiste facturas y auditoría de envíos en SQLite), pensada para entender y validar el flujo antes de dar el salto a producción. El README detalla con honestidad las limitaciones: la validación contra el XSD oficial, los registros de evento, la declaración responsable del fabricante y la robustez (reintentos, idempotencia, concurrencia) quedan como trabajo previo a un uso real.
Genera el registro de alta con su huella encadenada y lo remite a la AEAT en tiempo real. Soporta F1 (completa, exige destinatario) y F2 (simplificada, sin destinatario).
Calcula la huella con el orden de campos exacto que exige la AEAT, en hexadecimal mayúsculas, tanto para altas como para anulaciones.
Cada factura incorpora la huella de la anterior; el eslabón solo avanza si la AEAT acepta el envío, leyendo el último registro válido desde la base de datos (o desde un fichero JSON en los ejemplos de consola).
Construye el sobre SOAP a mano y lo envía con cURL y autenticación mutua usando el .pfx del obligado, extrayendo certificado y clave con OpenSSL. Sin SoapClient ni paquetes externos.
Interpreta el EstadoEnvio, el CSV y los errores por línea mediante XPath con local-name(), inmune a los prefijos de namespace, y detecta SOAP Fault.
Devuelve la URL al servicio ValidarQR de la AEAT (con NIF, número/serie, fecha e importe) lista para codificar en el QR de la factura, más la leyenda VERI*FACTU. No renderiza la imagen: deja ese paso a cualquier codificador de QR.
Genera y envía el registro de anulación, con guardas que impiden anular una factura no registrada o ya anulada.
Soporta facturas rectificativas por sustitución (S, con base y cuota rectificadas) o por diferencias (I), referenciando la factura origen y marcándola como rectificada cuando la AEAT acepta el envío.
Recupera de la AEAT (ConsultaFactuSistemaFacturacion) las facturas ya presentadas por ejercicio y periodo, con datos de presentación (NIF del presentador, fecha, id de petición), estado, huella, NIF de representante y paginación; permite elegir test o producción por ser una operación de solo lectura.
Front controller con vistas para crear, previsualizar, enviar, anular, consultar y revisar el historial; guarda facturas y auditoría de cada envío en SQLite, con token CSRF y entorno bloqueado a preproducción.
Capturas con datos de demostración. Los certificados y datos fiscales reales nunca se publican.
Si algo de esto encaja con un problema real de tu negocio, lo convertimos en una solución mantenible y con control total.
Hablemos de tu proyectoÚltima actualización: 03/07/2026
Recopilamos datos personales únicamente cuando el usuario nos los facilita voluntariamente a través de:
| Dato | Obligatorio | Finalidad |
|---|---|---|
| Nombre | Sí | Identificar al remitente y personalizar la respuesta |
| Empresa | No | Contextualizar la consulta profesional |
| Sí | Responder a la consulta y enviar confirmación de recepción | |
| Servicio de interés | No | Derivar la consulta al área adecuada |
| Mensaje | No | Comprender la necesidad del usuario |
Correo de confirmación: al enviar el formulario de contacto, se envía automáticamente un email de confirmación a la dirección indicada por el usuario, como acuse de recibo de la solicitud.
| Dato | Obligatorio | Finalidad |
|---|---|---|
| Nombre | Sí | Mostrar la autoría del comentario publicado |
| Sí | Verificación interna y notificaciones (no se publica) | |
| Contenido del comentario | Sí | Publicación en la sección de comentarios del artículo |
Los comentarios pueden requerir aprobación del moderador antes de su publicación.
| Tipo de dato | Plazo | Criterio |
|---|---|---|
| Formulario de contacto | 12 meses | Desde la última comunicación |
| Comentarios del blog | Indefinido | Mientras permanezca publicado |
| Datos de clientes | 5-6 años | Obligaciones fiscales |
| Cookies | Variable | Según tipo de cookie |
Transcurridos los plazos, los datos serán eliminados o anonimizados.
De acuerdo con el RGPD y la LOPDGDD, tienes derecho a:
Para ejercer estos derechos: info@joanmedina.es
Puedes reclamar ante la AEPD en www.aepd.es.
En 30 minutos analizo tu empresa y te digo con claridad dónde estás perdiendo tiempo, qué automatizaría primero y qué evitaría. Sin compromiso, sin letra pequeña.
+10 años de experiencia · +200 procesos automatizados
Diagnóstico gratuito — Detecta dónde se pierden horas y qué automatización tiene más retorno
Pedir diagnóstico