Código QR de VeriFactu: URL, parámetros, tamaño y texto obligatorio

El QR de una factura VeriFactu no contiene la factura ni la huella. Contiene una dirección web de la AEAT con cuatro datos de la factura, para que el cliente pueda cotejarla en la sede electrónica.

Actualizada el 29 de septiembre de 2026 · Basada en la Orden HAC/1177/2024 y en las especificaciones del QR publicadas por la AEAT.

1. La URL de cotejo

La dirección depende de la modalidad del sistema de facturación y del entorno:

ModalidadEntornoURL base
VERI*FACTUProducciónhttps://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQR
No VERI*FACTUProducciónhttps://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQRNoVerifactu
VERI*FACTUPruebashttps://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR
No VERI*FACTUPruebashttps://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQRNoVerifactu

En una factura real se usa siempre la de producción. La de pruebas sirve mientras desarrollas contra el entorno de pruebas de la AEAT.

2. Los 4 parámetros y su formato

ParámetroContenidoFormato
nifNIF del emisor de la factura9 caracteres, p. ej. 89890001K
numserieSerie y número de la facturaTal cual, codificado para URL
fechaFecha de expediciónDD-MM-AAAA
importeImporte total de la facturaPunto decimal y dos decimales, p. ej. 123.45

Los valores se escriben en UTF-8 y se codifican para URL (percent-encoding). En la práctica, lo que más se nota es la serie: la barra de 12345678/G33 pasa a ser %2F, y los espacios, %20.

Ojo con la diferencia respecto a la huella

En la huella la serie va sin codificar (12345678/G33). En el QR va codificada (12345678%2FG33). Son dos usos distintos del mismo dato.

3. Un ejemplo completo

Para una factura del NIF 89890001K, número 12345678/G33, expedida el 1 de enero de 2024 por 123,45 €:

https://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQR?nif=89890001K&numserie=12345678%2FG33&fecha=01-01-2024&importe=123.45

En JavaScript, con encodeURIComponent (codifica los espacios como %20; URLSearchParams los convertiría en +):

const base = 'https://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQR';
const params = {
  nif: '89890001K',
  numserie: '12345678/G33',
  fecha: '01-01-2024',
  importe: (123.45).toFixed(2),
};
const query = Object.entries(params)
  .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
  .join('&');
const urlQR = `${base}?${query}`;

En PHP, http_build_query($params, '', '&', PHP_QUERY_RFC3986). En Python, urllib.parse.urlencode(params, quote_via=urllib.parse.quote).

Con esa URL, cualquier librería de QR genera la imagen. El validador te muestra la URL y el QR de cualquier registro.

4. Tamaño, corrección de errores y texto

El QR debe figurar en las facturas que expide el sistema, incluidas las simplificadas (tiques).

5. Errores frecuentes

Genera la URL y el QR de tu factura

Introduce los datos en el validador y obtendrás la URL de cotejo, el QR y la huella, con los errores de formato marcados. Todo se calcula en tu navegador.

Abrir el validadorVeriFactu en WooCommerce