Veri*factu QR & Fingerprint Satellite for Spain
AEAT-compliant Veri*factu QR codes and SHA-256 record fingerprint (huella) chains, generated inside your own Odoo database
What this module does
Spain's anti-fraud invoicing law (Real Decreto 1007/2023) and its technical order (Orden HAC/1177/2024) require every invoice issued by a certified billing system (SIF) to carry a Veri*factu QR code and to be anchored to a tamper-evident SHA-256 fingerprint chain (huella). This satellite module produces both, exactly to the published specification, directly on your posted customer invoices. It is a pure format and fingerprint generator: it builds the QR payload, the record XML and the hash chain so you can print compliant invoices and transmit the records to the AEAT cotejo / remision endpoint with your own credentials (BYOK).
Veri*factu QR code
Generates the AEAT verification QR for each invoice, encoding the cotejo URL with
the nif, numserie, fecha and
importe parameters at error-correction level M. Production and
pre-production (test) base URLs are selectable per company.
SHA-256 huella chain
Computes the record fingerprint precisely as defined in article 13: the
name=value&... concatenation, UTF-8 encoding, SHA-256, and a
64-character uppercase hex output. Each record chains onto the previous
Huella, building an unbroken integrity chain validated against the
official AEAT example vectors.
RegistroAlta & RegistroAnulacion
Builds the canonical billing-record XML in the AEAT SuministroInformacion namespace: invoice identity, issuer, invoice type (F1/F2/F3/R1-R5), VAT breakdown (Desglose), totals, the chaining block (Encadenamiento) and the SistemaInformatico identification. Cancellations generate a chained RegistroAnulacion.
NIF / NIE / CIF validation
Validates the issuer and counterparty Spanish tax numbers with the real check algorithms: the DNI/NIF mod-23 control letter, the NIE prefix substitution, and the CIF odd/even weighting control character. Malformed identifiers are blocked before a record is fingerprinted.
Feature summary
| Capability | Detail |
|---|---|
| QR code | AEAT cotejo URL, ECC level M, prod / test endpoints |
| Fingerprint | SHA-256 huella per Orden HAC/1177/2024 art. 13, 64-char uppercase hex |
| Chaining | Encadenamiento with PrimerRegistro and RegistroAnterior linkage |
| Records | RegistroAlta and RegistroAnulacion XML (SuministroInformacion) |
| Validation | NIF/NIE/CIF check digits, VAT totals, ISO-8601 timestamp, IVA rates |
| Chain register | Persisted, searchable record list with integrity verification |
| Batch | Range generator that builds the chain in document order |
| Boundary | BYOK — you transmit to the AEAT with your own credentials |
How it works
- Enable Veri*factu on the company and set the issuer NIF (or rely on the company VAT).
- Post a customer invoice — it is flagged "To Generate".
- Click Generate Veri*factu to validate, fingerprint, build the record XML and render the QR.
- The record is added to the searchable chain and the company chain head advances.
- Print the QR on the invoice and transmit the record to the AEAT with your own credentials.
Scope & disclosure
This module generates the Veri*factu format and fingerprint only. It does not transmit data to the AEAT on your behalf and does not act as a certified third party: submission to the AEAT cotejo / remision service is performed by you, with your own credentials. All data, identifiers and fingerprints remain inside your Odoo database. Authority: Agencia Estatal de Administracion Tributaria (AEAT), Real Decreto 1007/2023 and Orden HAC/1177/2024.
Screenshots
Generate Batch
Records
Update date: 2026-07-02