VeriFactu y Fiscal

VeriSys por dentro: FSM, cadena SHA-256 y comunicación AEAT en tiempo real

Equipo FactuTPV16 min de lectura
Compartir:
En este artículo

Panorámica: tres máquinas de estados

VeriSys™ se diseñó alrededor de tres máquinas de estados (FSM) independientes pero coordinadas. Cada una resuelve un problema distinto y entre las tres cubren todo el ciclo de vida fiscal de una operación.

  1. FSM de Documento: gobierna el ciclo de vida de la factura desde borrador hasta archivo (incluye rectificativas y anulaciones).
  2. FSM de Registro fiscal: gobierna la relación con la AEAT — pendiente, enviando, aceptado, rechazado, reconciliado.
  3. FSM de Integridad: gobierna la cadena de hashes — verifica que cada registro nuevo encaja con el anterior antes de persistir.

Las tres FSMs corren en paralelo. Una operación de venta dispara transiciones simultáneas en las tres y todas tienen que aceptar la transición — si una falla, la operación entera se aborta.

La cadena SHA-256: integridad por diseño

Cada registro VeriFactu generado por VeriSys lleva un campo HuellaTBAI calculado como:

SHA-256(
  hash_anterior +
  numero_serie +
  fecha_emision +
  importe_total +
  nif_emisor +
  ...
)

El primer registro de la cadena (génesis) usa un hash de relleno definido por la AEAT. El segundo incluye el SHA-256 del primero. El tercero el del segundo. Y así sucesivamente.

Si alguien altera un registro pasado, el hash deja de coincidir con el siguiente y la cadena se rompe. La AEAT detecta el corte automáticamente. VeriSys también: el monitor de integridad en tiempo real recalcula la cadena cada noche y avisa si encuentra discrepancias.

Este monitor no es opcional: viene activo en todas las cuentas de FactuTPV.

Comunicación con la AEAT: SOAP, reintentos y reconciliación

VeriSys habla con los servicios web de la AEAT mediante SOAP 1.1, el protocolo que define la sede electrónica para los registros VeriFactu.

El flujo es:

  1. VeriSys construye el SOAP envelope con el registro firmado.
  2. Lo envía al endpoint https://www[1-7].aeat.es/wlpl/... según el ámbito (real o pruebas).
  3. Espera la respuesta. Si llega Aceptado, marca el registro como confirmado.
  4. Si llega Rechazado, lee el código de error, identifica si es transitorio (reintenta) o permanente (genera subsanación).
  5. Si no llega respuesta en tiempo, programa un reintento con backoff exponencial y reconciliación periódica.

El reconciliador nocturno recorre todos los registros enviados y los contrasta con la AEAT para detectar desajustes (por ejemplo, registros que VeriSys cree enviados pero la AEAT no tiene). Esto cubre el caso de cortes de red durante el envío.

Política de grafos documentales

Una factura puede tener documentos hijos: rectificativas, anulaciones que la cancelan, sustitutivas que la reemplazan. Lo que no puede pasar es que se anule una factura que ya tiene una rectificativa pendiente, o que se rectifique una factura ya anulada.

VeriSys mantiene un grafo dirigido acíclico (DAG) de cada cadena documental. Antes de cualquier operación, el motor analiza el grafo:

  • ¿Tiene la factura documentos hijos? Si sí, los lista al usuario y le pide confirmación.
  • ¿Está ya en estado terminal (anulada, archivada)? Si sí, bloquea la operación.
  • ¿Está pendiente alguna respuesta de la AEAT? Si sí, espera o avisa.

Esta política es lo que evita que un usuario se meta en líos sin querer. Es también lo que más nos ahorra llamadas de soporte: el motor responde por nosotros.

Evidencia de entrega: trazabilidad para inspecciones

El RD 1007/2023 obliga a entregar la factura al cliente, pero no a guardar evidencia de cómo. La inspección sí lo pide.

VeriSys guarda automáticamente la evidencia de cada entrega:

  • Impresión: timestamp, ID de la impresora, hash del PDF impreso.
  • Email: dirección destinatario, message-id, timestamp de aceptación del SMTP.
  • WhatsApp: número destinatario, ID de mensaje, timestamp de entrega.
  • Descarga PDF: timestamp, IP cliente, user-agent.

Toda esta evidencia es exportable a CSV/JSON y firmada con el mismo SHA-256 chain, así que es auditable y no falsificable.

Tests y cobertura: por qué confiamos en producción

VeriSys tiene 832 tests automáticos que se ejecutan en cada commit. Cubren:

  • Todas las transiciones de las 3 FSMs (cobertura 100%).
  • Todas las 18 reglas de la tabla de decisión legal.
  • Casos de error de la AEAT documentados en la Orden HAC/1177/2024.
  • Reconciliación con timeouts simulados, datos corruptos, hashes alterados.
  • Pruebas de carga: 10.000 facturas/hora sin pérdida ni desorden.

Cuando la AEAT publica una nueva versión de las especificaciones, lo primero que hacemos es añadir tests antes de tocar el código. Si los tests pasan en verde, el código está listo para producción.

Esa disciplina es lo que nos permite mantener VeriSys en producción sin un solo error de cumplimiento.

Preguntas frecuentes

¿Puedo ver el código fuente de VeriSys?

El código de VeriSys™ es propietario. Sí publicamos la tabla de decisión legal (formato YAML) y los esquemas de los registros VeriFactu, que son lo único realmente auditable de cara al cumplimiento.

¿Cuánto tiempo se tarda en enviar un registro a la AEAT?

Latencia mediana de 280 ms en horario operativo, p99 de 1.4 s. Cuando la AEAT tiene incidencias, VeriSys reintenta con backoff y reconcilia por la noche. El usuario nunca ve un error directo.

¿Qué ocurre si un registro queda en estado «pendiente» indefinidamente?

El reconciliador nocturno detecta registros pendientes con más de 24 h y abre un ticket interno automático. La factura se marca con un badge en la UI para que el usuario sepa que algo está pendiente.

¿VeriSys es compatible con TicketBAI o SII?

VeriSys™ implementa exclusivamente el régimen VeriFactu del RD 1007/2023. TicketBAI (régimen foral vasco) y SII (régimen IVA inmediato) están fuera del scope actual.

Logo FactuTPV

Equipo FactuTPV

Somos el equipo detrás de FactuTPV, el software TPV con VeriFactu integrado para autónomos, pymes y hostelería en España. Escribimos sobre facturación electrónica, gestión de negocio y las últimas novedades fiscales para ayudarte a estar siempre al día.

Contactar con nosotros →

Sigue leyendo

Artículos relacionados

VeriFactu y Fiscal

Presentamos VeriSys: el motor fiscal propio de FactuTPV

VeriSys™ es la marca con la que llamamos al motor fiscal propio de FactuTPV. Implementa el régimen VeriFactu de la AEAT y va mucho más allá: tabla de decisión legal, máquina de estados, política de grafos y evidencia de entrega auditable.

VeriSysVeriFactumotor fiscal
8 min
Plan gratuito permanente

¿Listo para probarlo?

Empieza gratis con FactuTPV. VeriFactu incluido, sin tarjeta de crédito, sin compromiso.