Todas las herramientas

Cotejo · referencia técnica

El código QR de la factura

Qué lleva dentro el QR de una factura Verifactu: las cuatro URL base del servicio de cotejo, los cuatro parámetros obligatorios, las reglas de codificación y los errores que dejan una factura sin poder cotejarse.

En corto. El QR no lleva los datos de la factura: lleva una URL al servicio de cotejo de la AEAT con la información de la factura como parámetros. Quien lo escanea acaba en una página de la sede electrónica que le dice si esa factura le consta a Hacienda.

Son cuatro parámetros obligatorios, y solo esos cuatro: nif, numserie, fecha (DD-MM-AAAA) e importe (con punto decimal, nunca coma).

1. Las cuatro URL base

Cuál te toca depende de si tu sistema emite facturas verificables —es decir, si remite los registros a la AEAT— y del entorno al que apuntes:

SistemaEntornoURL base
VerificableProducciónhttps://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQR
No verificableProducciónhttps://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQRNoVerifactu
VerificablePruebashttps://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR
No verificablePruebashttps://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQRNoVerifactu

No imprimas la URL de pruebas en una factura real

prewww2.aeat.es es el Portal de Pruebas Externas. Es un despiste fácil de cometer al pasar a producción y deja el QR apuntando a un entorno que no es el bueno.

2. Los cuatro parámetros

La URL del QR debe incorporar únicamente estos cuatro, todos obligatorios:

ParámetroFormatoLongitudDescripción
nifNIF9NIF del obligado a expedir la factura
numserieTexto, ASCII 32-126Máx. 60Nº de serie + nº de factura
fechaDD-MM-AAAA10Fecha de expedición
importeDecimal con puntoMáx. 12 + 2Importe total de la factura

Los valores van con URL encoding en UTF-8 y solo admiten caracteres ASCII imprimibles (del 32 al 126).

// La URL del QR. Codifica SIEMPRE los valores: un "&" en el número de serie
// parte la URL si va sin codificar.
const base = "https://www2.agenciatributaria.gob.es/wlpl/TIKE-CONT/ValidarQR";

const params = {
  nif: "89890001K",
  numserie: "12345678&G33",   // el "&" se convertirá en %26
  fecha: "01-09-2024",        // DD-MM-AAAA
  importe: "241.4",           // punto decimal, nunca coma
};

const url = base + "?" + Object.entries(params)
  .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
  .join("&");

// …/ValidarQR?nif=89890001K&numserie=12345678%26G33&fecha=01-09-2024&importe=241.4
→ Valida la URL de tu QR con la herramienta

3. Los errores que más se repiten

Un «&» sin codificar en el número de serie

Es el error que la propia AEAT publica como ejemplo de URL incorrecta. Si el número de serie contiene un & y no se codifica, la URL se parte y aparece un parámetro que no existe. La factura deja de poder cotejarse.

Mal: …&numserie=12345678&G33&fecha=…

Bien: …&numserie=12345678%26G33&fecha=…

Coma decimal en el importe

El separador decimal es el punto: 1210.00, nunca 1210,00. Tampoco lleva símbolo de moneda ni separador de millares.

El parámetro «formato» en el QR

formato=json nunca puede ir en la URL del código QR de la factura: la norma lo prohíbe expresamente. Existe para que el sistema informático que recibe una factura electrónica pueda cotejarla y obtener la respuesta en json, pero no se imprime.

4. El código impreso en la factura

La norma también regula el papel. El código debe medir entre 30×30 y 40×40 mm y usar el nivel M de corrección de errores (ISO/IEC 18004:2015), con al menos 2 mm de margen blanco alrededor de los cuatro lados —se recomiendan 6—. y contraste suficiente con el fondo.

Va al principio de la factura, antes del contenido, y debe ser el primer QR que aparezca si hay más. Si la factura ocupa varias páginas, solo va en la primera.

Encima del código va siempre el texto «QR tributario:», que sirve para distinguirlo de cualquier otro QR de la factura. Y si el sistema emite facturas verificables, justo debajo debe aparecer «VERI*FACTU» o «Factura verificable en la sede electrónica de la AEAT».

5. Fuentes oficiales

Todo lo anterior sale del documento de la AEAT, que es la fuente de verdad. Si algo de esta página lo contradice, mándanos un aviso: tiene razón él.

El marco legal es el Real Decreto 1007/2023 y el capítulo VIII de la Orden HAC/1177/2024.

La otra mitad de la norma es el hash que encadena los registros: la huella de un registro Verifactu.