Verifactu QR reader: check the QR code on a Spanish invoice

Independent, non-governmental site

Drop a photo or screenshot of the QR, scan it with the camera or paste the URL: the reader shows the invoice details and takes you to the official matching page.

The image is read in this browser: it is never uploaded to a server.

Invoice in the QR

€241.40

Format correct

Issuer tax ID89890001K
Series and number12345678&G33
Issue date01/01/2024
SystemVERI*FACTU (record sent to the AEAT)
EnvironmentAEAT test environment (not a real invoice)

Check on the AEAT websiteOpens the official matching page with these data. There the AEAT says whether the invoice is on record.

Official AEAT example, in its test environment

A correctly formatted QR proves nothing by itself: only the AEAT answer says whether the invoice is registered.

Prepared by Radif Partners · Method · Rules read in the BOE and at the AEAT on 25 October 2026

The QR code on invoices from Verifactu-compliant software contains a Spanish Tax Agency web address with four details: the issuer tax ID, the invoice series and number, the issue date as day, month and year, and the total amount with a decimal point. The official AEAT specification, version 0.5.0, sets two addresses depending on the mode: one for VERI*FACTU invoices, whose record has already been sent, and one for non-VERI*FACTU invoices. When you open that address, the Tax Agency website answers whether the invoice is on its records. This reader decodes the QR in your browser, splits out the four details, checks their format and the DNI or NIE check letter, warns if the URL points to the test environment and gives you the link to the official page. A correctly formatted QR proves nothing by itself: the only answer that counts is the one from the AEAT website. Invoices from the Basque Country carry a different QR, the TicketBAI one, which is checked with the relevant provincial treasury.

What the tax QR contains

URL parameters under the AEAT specification, version 0.5.0.
ParameterContentFormat
nifIssuer tax ID9 characters
numserieInvoice series and numberup to 60 printable characters
fechaIssue dateDD-MM-YYYY
importeInvoice totalup to 12 digits and 2 decimals, with a dot

The Tax Agency QR specification defines the code in detail: standard ISO/IEC 18004:2015, error correction level M, printed size between 30 and 40 millimetres a side and a white margin of at least 2 millimetres. The words “QR tributario:” sit above the code. VERI*FACTU invoices also carry the sentence “Factura verificable en la sede electrónica de la AEAT” or, in short form, “VERI*FACTU”. Order HAC/1177/2024 requires the QR on every invoice issued with software, receipts included.

Two addresses, two modes

The first part of the URL says what kind of system issued the invoice. If it ends in ValidarQR, the invoice is VERI*FACTU and its record should already be with the Tax Agency. If it ends in ValidarQRNoVerifactu, the software keeps signed records and the website can only check that the details make sense. When the address starts with prewww2.aeat.es, the QR points to the AEAT test environment: it is for developers and must never appear on a real invoice.

See how the URL changes when you alter the amount of the official example or the mode:

URL encoded in the QR

URL encoded in the QR

Valid

URL (test environment)https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=89890001K&numserie=12345678%26G33&fecha=01-01-2024&importe=241.4
The & in the number%26
Generate a full QR code →

What the reader checks and what it does not

The reader checks the format of the four details, that the date exists, that the amount has at most two decimals and, for DNI and NIE numbers, that the letter matches the digits. It also warns if the URL does not start with https or carries parameters that do not belong in a printed QR. It cannot know whether the invoice is registered or whether the issuer exists: only the AEAT website says so when you open the link.

To see how the QR is built from the inside, the QR generator works the other way round and the hash calculator shows the digest that chains each record. The differences between the two systems are explained in VERI*FACTU or non-VERI*FACTU, and Basque QR codes in TicketBAI.

Common questions

Is the QR photo sent to a server?

No. The image is read inside your browser, with the browser’s own barcode reader where available and otherwise with an open source library downloaded with the page. Only when you click the matching link does the Tax Agency page open with the four QR details, just as if you had scanned it with your phone.

The AEAT says the invoice is not on record: is it fake?

Not necessarily. In non-VERI*FACTU mode the software does not send records, so the website cannot find them and only displays the details. In VERI*FACTU mode sending can be delayed by the system’s flow control. If the invoice is VERI*FACTU and still not on record days later, ask the issuer before deducting the VAT.

Why does the invoice number show %26 in the URL?

Because the specification requires each value to be encoded so that the web address is valid. Some characters have their own meaning in a URL; the & sign, for example, separates parameters. That is why a number like 12345678&G33 is written 12345678%26G33 inside the QR. The reader undoes the encoding and shows the number as it appears on the invoice.

What if the reader cannot find the QR in my image?

Crop the image so the code fills almost the whole frame, with a little white margin around it, and avoid glare and blurry shots. A screenshot of the PDF usually works better than a photo of paper. If it still fails, open the QR with your phone camera, copy the address and paste it into the URL field.

Keep going

Official sources for this page

Prepared by

Publisher of free tools on Spain's Verifactu and e-invoicing rules: eligibility check, QR reader, Facturae creator and timeline, all in your browser

Updated on · Editorial policy · Contact

As of 2026, rules read in the BOE and on the AEAT website on