Herramienta gratuita para desarrolladores

Calculadora de huella (hash) y QR de Verifactu

Calcula la huella SHA-256 de un registro de alta, de anulación o de evento exactamente como la define la AEAT, encadénala con el siguiente registro y genera la URL y el código QR de la factura con sus validaciones. Carga los ejemplos oficiales y comprueba que tu código da el mismo resultado.

  • Reproduce los 3 ejemplos oficiales
  • Se calcula en tu navegador
  • Sin registro

Herramienta de pruebas basada en los documentos técnicos publicados por la AEAT (huella v0.1.2 y QR v0.5.0). No envía nada a la Agencia Tributaria ni sustituye a sus validaciones.

Huella del registro de facturación

Elige el tipo de registro, rellena los campos tal como van en tu XML y calcula. Deja la huella anterior vacía si es el primer registro del sistema.

Tipo de registro
Ejemplos oficiales de la AEAT:

Tal cual va en la factura, hasta 60 caracteres.

Formato DD-MM-AAAA, con guiones.

Con punto decimal. 123.1 y 123.10 valen igual para la AEAT, pero la huella se calcula sobre lo que escribas.

64 caracteres hexadecimales en mayúsculas. Va vacía (campo «Huella=») si es el primer registro.

ISO 8601 con segundos y huso horario.

Todo se calcula en tu navegador con la Web Crypto API. No guardamos ni enviamos los datos que escribes.

URL y código QR de la factura

Genera la URL de cotejo con la codificación correcta, valídala con las reglas de la AEAT y descarga el QR listo para imprimir.

Modalidad del sistema
Entorno

Hasta 60 caracteres ASCII imprimibles. Los «&», «/» o espacios se codifican solos.

Punto decimal, hasta 12 cifras enteras y 2 decimales.

Validar una URL de QR que ya tienes

Pega la URL que imprime tu programa (o la que lee un lector de QR) y te decimos si la AEAT la aceptará.

Cómo funciona la huella de Verifactu

Lo que dice el documento técnico de la AEAT, explicado para quien lo tiene que programar.

Qué campos entran y en qué orden

La huella de un registro de alta se calcula sobre ocho campos del XML, en este orden: IDEmisorFactura, NumSerieFactura, FechaExpedicionFactura, TipoFactura, CuotaTotal, ImporteTotal, Huella (la del registro anterior) y FechaHoraHusoGenRegistro.

El registro de anulación usa cinco: IDEmisorFacturaAnulada, NumSerieFacturaAnulada, FechaExpedicionFacturaAnulada, Huella y FechaHoraHusoGenRegistro. El registro de evento, que solo existe en la modalidad NO VERI*FACTU, usa nueve, empezando por los datos del sistema informático.

Cómo se construye la cadena

Cada campo se escribe como nombre=valor y se unen con &. A los valores se les quitan los espacios del principio y del final. Si un campo no tiene valor, se escribe solo el nombre y el igual: en el primer registro del sistema la huella anterior va como Huella=. La cadena se codifica en UTF-8 y se le aplica SHA-256; el resultado va en hexadecimal y en mayúsculas, 64 caracteres.

IDEmisorFactura=89890001K&NumSerieFactura=12345678/G33&FechaExpedicionFactura=01-01-2024&TipoFactura=F1&CuotaTotal=12.35&ImporteTotal=123.45&Huella=&FechaHoraHusoGenRegistro=2024-01-01T19:20:30+01:00
→ 3C464DAF61ACB827C65FDA19F352A4E3BDC2C640E9E9FC4CC058073F38F12F60

Por qué se encadena

Cada registro lleva la huella del anterior, así que cambiar una factura antigua rompe todas las huellas posteriores. Por eso la cadena es por sistema e instalación, y por eso dos procesos que facturan a la vez tienen que serializar el cálculo: si dos registros cogen la misma huella anterior, la cadena se bifurca.

En la modalidad VERI*FACTU la AEAT recalcula la huella de cada registro que recibe. Si no coincide con la tuya, el registro queda «Aceptado con errores».

Y el QR

El QR de la factura contiene una URL del servicio de cotejo de la AEAT con cuatro parámetros: nif, numserie, fecha (DD-MM-AAAA) e importe (con punto decimal). Los valores van con URL encoding en UTF-8: un número de serie como 12345678&G33 tiene que viajar como 12345678%26G33.

La ruta cambia según la modalidad: ValidarQR para VERI*FACTU y ValidarQRNoVerifactu para NO VERI*FACTU, en www2.agenciatributaria.gob.es (producción) o prewww2.aeat.es (pruebas). El parámetro opcional formato=json sirve para integraciones, pero nunca puede ir en el QR impreso.

Lo comprobamos el 7 de octubre de 2026 contra el servicio de cotejo del entorno de pruebas de la AEAT: la URL que genera esta herramienta con 12345678&G33 se acepta y la Agencia lee bien el número de serie, y un importe con coma devuelve el mismo error 2005 que te marca aquí.

Los errores que más vemos al implementarlo

Y que esta calculadora te ayuda a detectar antes de que lo haga la AEAT.

  1. Huella en minúsculas

    La mayoría de librerías devuelven el hexadecimal en minúsculas. La AEAT lo quiere en mayúsculas.

  2. Fecha de expedición en ISO

    En la huella y en el QR la fecha de expedición va como DD-MM-AAAA, no como AAAA-MM-DD. La fecha y hora del registro, en cambio, sí va en ISO 8601 con huso.

  3. Fecha y hora sin huso horario

    2024-01-01T19:20:30 no vale: hace falta el huso, +01:00 o +02:00 según la época del año, y +00:00 o +01:00 en Canarias.

  4. Coma decimal en los importes

    Ni en la huella ni en el QR: siempre punto. En el QR, una coma devuelve el error 2005.

  5. Olvidar «Huella=» en el primer registro

    El campo va aunque esté vacío. Quitarlo de la cadena cambia la huella del primer registro y, con ella, la de toda la cadena.

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

    Parte la URL del QR en dos parámetros y el servicio de cotejo no encuentra la factura. Codifica siempre los valores.

  7. Dos procesos con la misma huella anterior

    Cuando dos cajas o dos workers facturan a la vez sin bloqueo, la cadena se bifurca. Serializa el cálculo por sistema e instalación.

  8. Recalcular sobre datos «normalizados»

    La huella se calcula sobre el valor que va en el XML. Si tu XML lleva 123.10 y la huella se calcula con 123.1, no coincidirán.

Lo que esta calculadora no hace

Calcula la huella y la URL del QR para que pruebes tu implementación. No genera el XML completo del registro, no lo firma (XAdES) y no lo envía a la AEAT, que es lo que convierte un programa en un sistema Verifactu: cola de envíos, control de flujo, reintentos, rectificativas y declaración responsable.

Eso es lo que hacemos en Kiwop: adaptamos tu software propio, tu ERP o tu tienda online a Verifactu, o te desarrollamos la facturación a medida, y te entregamos la declaración responsable.

Ver el servicio de Verifactu

Preguntas frecuentes

Preguntas frecuentes

Sobre la huella, el QR y la calculadora.

¿Qué algoritmo usa la huella de Verifactu?

SHA-256, el único que admite hoy la AEAT (lista L12 del anexo de la Orden HAC/1177/2024). El resultado se expresa en hexadecimal, en mayúsculas, con 64 caracteres.

¿Cómo se calcula la huella del primer registro?

Igual que la de los demás, pero con el campo de la huella anterior vacío: la cadena lleva Huella= sin nada detrás. El registro marca además PrimerRegistro con «S» y no lleva bloque de registro anterior. El caso 1 de los ejemplos oficiales es exactamente eso.

¿Los importes 123.1 y 123.10 dan la misma huella?

No: la huella es un SHA-256 de la cadena, así que cambiar un carácter la cambia. Lo que dice la AEAT es que admite los dos formatos (uno o dos decimales) como válidos; lo que tiene que pasar es que la huella se calcule con el mismo valor que va en tu XML.

¿La calculadora envía mis datos a algún sitio?

No. La huella se calcula en tu navegador con la Web Crypto API y el QR se dibuja también en local. No hay servidor detrás de la herramienta y no guardamos lo que escribes.

¿Qué tamaño tiene que tener el QR de Verifactu?

Entre 30×30 y 40×40 mm, según la norma ISO/IEC 18004 y con nivel de corrección de errores M. Debe tener al menos 2 mm de margen en blanco (se recomiendan 6), ir al principio de la factura, en la primera página, con «QR tributario:» encima. El SVG que descarga la calculadora mide 35 mm.

¿Qué significa «Aceptado con errores»?

Es el estado en que la AEAT deja un registro VERI*FACTU que ha recibido pero en el que ha encontrado algo mal, por ejemplo una huella que no coincide con su cálculo. El registro existe, pero tienes que corregirlo con una subsanación. Por eso conviene probar la huella antes de producción.

¿Puedo usar la URL de pruebas en facturas reales?

No. prewww2.aeat.es es el entorno de pruebas externas y solo sirve con los registros enviados a ese entorno. Las facturas reales llevan la URL de producción, www2.agenciatributaria.gob.es.

Fuentes

Fuentes

Documentos técnicos oficiales de la AEAT en los que se basa la herramienta, leídos el 7 de octubre de 2026.

  1. Detalle de las especificaciones técnicas para generación de la huella o hash (v0.1.2) Campos, orden, formato y los tres ejemplos que reproduce la calculadora.
  2. Detalle de las especificaciones técnicas del código QR (v0.5.0) URL, parámetros, codificación, tamaño y códigos de error 1001 a 3002.
  3. Orden HAC/1177/2024, especificaciones técnicas Artículos 13 (huella), 20 y 21 (representación gráfica y QR).
  4. Información técnica de Verifactu en la sede de la AEAT Esquemas, WSDL, validaciones y entorno de pruebas.
  5. QR Code generator library, de Project Nayuki Licencia MIT. Genera el QR en tu navegador.

Siguiente paso

¿Tu huella ya cuadra? Lo difícil viene después

Envío, reintentos, rectificativas, concurrencia y declaración responsable. Te lo dejamos funcionando en tu sistema.

  • Sin compromiso
  • Respuesta en 24h
  • Propuesta personalizada