When it is mandatory
Under the text in force today, Real Decreto-ley 15/2025 (a royal decree-law) postponed the obligation for the second time: taxpayers under the Impuesto sobre Sociedades (corporate income tax) must have their system adapted before 1 January 2027, and everyone else (self-employed people paying IRPF, the personal income tax; entities under the income attribution regime; and non-residents with a permanent establishment) before 1 July 2027. The first postponement was made by Real Decreto 254/2025.
On 5 October 2026, the Ministerio de Hacienda announced that it will postpone it until October 2028, so that it coincides with the e-invoicing obligation for companies with a turnover of up to 8 million euros a year. As of 19 October 2026 this change is not yet in the BOE (Spain’s official gazette): until it is published there, the 2027 dates are the ones that apply.
The postponements have only moved the deadline: the technical requirements are the same. Hacienda has, however, announced that it will later review the scope and some technical aspects to fit them with the new European obligations, and that the guarantees of integrity, preservation and traceability will remain.
Invoicing programs sold on the market had to be adapted from 29 July 2025, nine months after Orden HAC/1177/2024 (the ministerial order with the technical specifications) came into force.
Who is out of scope
- Anyone who keeps their VAT record books through the Suministro Inmediato de Información (SII, the immediate supply of VAT information), whether because they must or because they chose to.
- Anyone taxed under the foral rules of the Basque Country or Navarre for direct taxation. The Basque Country has TicketBAI, which in Bizkaia is part of Batuz.
- Anyone who uses no program to invoice: the regulation covers computerised systems, not handwritten invoices.
- Entities exempt from the Impuesto sobre Sociedades under article 9.1 of the corporate tax law, and some specific transactions listed in article 4 of the regulation.
The two modes
VERI*FACTU: the program sends each invoicing record to the Agencia Tributaria at the moment the invoice is issued. It only needs to calculate the record’s fingerprint (the hash) and chain it to the previous one: there is no need to sign the records or keep an event log. The invoice carries a QR code and the words “VERI*FACTU” or “Factura verificable en la sede electrónica de la AEAT” (invoice verifiable on the AEAT’s online office).
NO VERI*FACTU: the program does not send the records at that moment, but in return it must sign them electronically, keep an event log and store them so that they cannot be altered. The invoice also carries the QR code.
If you choose VERI*FACTU, you stay with it until 31 December of that year.
What a program that issues invoices must do
- Generate a record of each invoice at the moment it is issued, or just before, and another one when an invoice is cancelled.
- Chain each record to the previous one with a fingerprint, so that the trail can be followed from the first to the last.
- Guarantee the integrity, preservation, accessibility, legibility, traceability and unalterability of the records.
- Put on the invoice the QR code that allows it to be checked.
- Be able to send the records to the Agencia Tributaria and, in NO VERI*FACTU mode, sign them and keep the event log.
- Carry the producer’s statement of compliance, visible inside the program, for every version.
Who signs the statement of compliance
The statement of compliance (declaración responsable) is signed by the producer of the system: the person or company that manufactures or develops it (article 13 of the regulation). It is a self-certification, with no external certification and no prior registration. It must be in writing, visible inside the program for every version and available to the customer when they acquire it. Orden HAC/1177/2024 sets out what it must contain: the name and version of the system, who produces it, whether it works only in VERI*FACTU mode, and the date and place.
For extensions and custom developments, the Agencia Tributaria says that if the company builds them with its own staff, or with contracted staff who depend on it, the company itself is the producer; if it commissions them as a product from another company, it is that other company that must certify them. It is worth putting this in writing in the proposal.
Penalties apply to both: article 201 bis of the Ley General Tributaria (the General Tax Act) provides for them for whoever produces or sells a system that does not comply, and for whoever has one that is not certified or has been altered.
Two routes for custom software
If your custom software issues invoices, it is an invoicing system. There are two routes:
- The custom program issues the invoices and complies with the regulation: the records, the chaining, the QR code, the submission or the signature, and the statement of compliance of whoever produces it.
- The custom program does not issue invoices: it prepares the data (the customer, the lines, the amounts) and passes it via API to an invoicing program that is already adapted, which issues the invoice and keeps its record. Holded, a3factura, a3ERP, Sage 50 and Sage 200, for example, say on their websites that they are adapted, and publish the statement of compliance there or show it inside the program.
For many SMEs, the second route is the simpler one: the invoicing program already handles compliance, and the custom software does the work that is yours alone.
How to decide
- If you already have an adapted invoicing program and your gestoría (the firm that handles your accounts and taxes) works with it, connect the custom software to it instead of building another one.
- If invoices come out of a process on their own (monthly fees, orders, bookings), check that the invoicing program has an API that can handle that volume.
- If invoicing is the heart of the product and no program does it the way you need, custom software can do it, but then it must comply with the whole regulation and someone must sign the statement of compliance for every version.
- If you are unsure about the mode, VERI*FACTU asks less of the program in exchange for sending each record at the moment.