The mandatory QR code on invoices: what it is and what it contains
One of the most visible novelties of Spain's anti-fraud regulation is the obligation to include a QR code on every invoice issued by a computerised billing system. It is the element the customer sees and scans, serving a verification and transparency function.
What the invoice QR code is
The QR code is a graphic representation that encodes the essential data of the billing record associated with that invoice. It is generated automatically by the software in line with the technical specifications published by the Spanish Tax Agency.
What information it contains
The QR encodes, among others, the data that uniquely identify the invoice:
- The issuer's tax ID (NIF).
- The invoice number and series.
- The date of issue.
- The total amount.
- A reference allowing it to be matched with the billing record.
It contains no sensitive data or the full transaction detail, only the elements needed to verify authenticity.
Its purpose
The QR code pursues two goals:
- Customer verification: in Verifactu systems, the recipient can scan the QR and check the invoice at the AEAT electronic office, confirming it has actually been reported.
- Control and traceability: it makes it easy for the authority to check invoices on any medium, paper or electronic.
The legend on Verifactu invoices
Invoices issued by a Verifactu system carry, next to the QR, the legend "Invoice verifiable at the AEAT electronic office" or "VERI*FACTU". Its presence tells the customer the record has been sent to the tax authority.
Conclusion
The QR code turns every invoice into a verifiable, transparent document. It is not decoration: it is a legal requirement whose correct generation depends on the software. Invoseal embeds the QR in line with AEAT specifications on all your invoices, with the corresponding legend when you operate in Verifactu mode.
Want to sort it out today?
InvoSeal complies with RD 1007/2023 in VeriFactu and Non-VeriFactu mode from day one. Statement of Responsibility published.
Try InvoSeal →