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.
Invoice in the QR
€241.40
Format correct
| Issuer tax ID | 89890001K |
| Series and number | 12345678&G33 |
| Issue date | 01/01/2024 |
| System | VERI*FACTU (record sent to the AEAT) |
| Environment | AEAT 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
| Parameter | Content | Format |
|---|---|---|
| nif | Issuer tax ID | 9 characters |
| numserie | Invoice series and number | up to 60 printable characters |
| fecha | Issue date | DD-MM-YYYY |
| importe | Invoice total | up 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 |
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.