España — Verifactu
Zentto dispone de una primera fase técnica para Verifactu: genera el XML del registro, la huella SHA-256 encadenada y la URL de validación QR. La firma XAdES y el envío SOAP a la AEAT todavía no están implementados; por tanto, esta versión no debe presentarse como integración oficial completa.
Estado de la implementación
Sección titulada «Estado de la implementación»| Capacidad | Estado actual |
|---|---|
| Generar XML del registro | Disponible en POST /v1/fiscal/generators/verifactu |
| Calcular huella SHA-256 | Disponible en verifactu-xml.generator.ts |
| Construir URL QR de AEAT | Disponible para pruebas o producción según el parámetro de entorno |
| Firma XAdES con certificado X.509 | Pendiente |
| Envío SOAP a AEAT | Pendiente; el plugin responde NOT_IMPLEMENTED |
| SII | No existe una integración SII verificable en el módulo fiscal actual |
Real Decreto 1007/2023
Sección titulada «Real Decreto 1007/2023»Este decreto establece que todos los software de facturación en España deben cumplir con requisitos que garanticen la integridad, conservación, accesibilidad, legibilidad, trazabilidad e inalterabilidad de los registros de facturación.
Requisitos principales
Sección titulada «Requisitos principales»- Registro de facturación: cada factura genera un registro inmutable.
- Encadenamiento hash: cada registro incluye un hash que lo vincula con el anterior.
- Código QR: cada factura incluye un QR con datos verificables.
- Envío a la AEAT: requisito del modo correspondiente; la conexión SOAP aún está pendiente en Zentto.
- No manipulación: el software no puede permitir la alteración de registros.
Encadenamiento hash (hash chaining)
Sección titulada «Encadenamiento hash (hash chaining)»El generador actual calcula la huella con los campos canónicos de la factura, el hash anterior y la fecha/hora del registro:
Hash(N) = SHA-256(campos_canónicos_N + Hash(N-1) + timestamp_N)Cada registro de facturación incluye:
| Campo | Descripción |
|---|---|
| NIF emisor | Identificación fiscal del emisor |
| Número factura | Número único del documento |
| Fecha expedición | Fecha de emisión |
| Tipo factura | Completa, simplificada, rectificativa |
| Base imponible | Importe antes de impuesto |
| Cuota IVA | Impuesto calculado |
| Hash anterior | Hash del registro previo en la cadena |
| Hash actual | SHA-256 calculado |
Código QR
Sección titulada «Código QR»La URL QR generada por verifactu-xml.generator.ts contiene:
- URL de verificación en la AEAT.
- NIF del emisor.
- Número y serie de factura.
- Fecha de expedición.
- Importe total.
El generador devuelve la URL de validación que debe convertirse en QR dentro del documento final. La existencia de esa URL no implica que el registro haya sido firmado o enviado: esas dos etapas siguen pendientes.
SII (Suministro Inmediato de Información)
Sección titulada «SII (Suministro Inmediato de Información)»El SII es un flujo diferente de Verifactu. La API actual no contiene un cliente SII verificable, por lo que no se documenta como capacidad disponible. Antes de ofrecerlo se necesitarían, como mínimo:
- generación de los libros y XML exigidos por el servicio;
- firma con el certificado de la empresa;
- transporte, reintentos y registro de respuestas de la AEAT;
- pruebas contra el entorno oficial correspondiente.
Tasas de IVA en España
Sección titulada «Tasas de IVA en España»| Tipo | Tasa | Aplicación |
|---|---|---|
| General | 21% | Productos y servicios estándar |
| Reducido | 10% | Alimentos, transporte, hostelería |
| Superreducido | 4% | Pan, leche, libros, medicamentos |
| Exento | 0% | Servicios médicos, educación, seguros |
Tipos de factura
Sección titulada «Tipos de factura»| Tipo | Código | Uso |
|---|---|---|
| Factura completa | F1 | Factura estándar |
| Factura simplificada | F2 | Ticket (hasta 400 EUR) |
| Factura rectificativa por sustitución | R1 | Corrección |
| Factura rectificativa por diferencias | R5 | Ajuste parcial |
Configuración
Sección titulada «Configuración»La configuración fiscal de la API admite país ES, moneda EUR, activación
de Verifactu, modo manual o auto y endpoint AEAT. El valor predeterminado
es manual y apunta al endpoint de pruebas. Aunque se seleccione auto, el
plugin de envío continúa devolviendo NOT_IMPLEMENTED; no hay evidencia en el
frontend actual de una pantalla completa para cargar certificados o series.