Eina gratuïta per a desenvolupadors

Calculadora d'empremta (hash) i QR de Verifactu

Calcula l'empremta SHA-256 d'un registre d'alta, d'anul·lació o d'esdeveniment exactament com la defineix l'AEAT, encadena-la amb el registre següent i genera la URL i el codi QR de la factura amb les seves validacions. Carrega els exemples oficials i comprova que el teu codi dona el mateix resultat.

  • Reprodueix els 3 exemples oficials
  • Es calcula al teu navegador
  • Sense registrar-te

Eina de proves basada en els documents tècnics publicats per l'AEAT (empremta v0.1.2 i QR v0.5.0). No envia res a l'Agència Tributària ni substitueix les seves validacions.

Empremta del registre de facturació

Tria el tipus de registre, omple els camps tal com van al teu XML i calcula. Deixa l'empremta anterior buida si és el primer registre del sistema.

Tipus de registre
Exemples oficials de l'AEAT:

Tal com va a la factura, fins a 60 caràcters.

Format DD-MM-AAAA, amb guions.

Amb punt decimal. 123.1 i 123.10 valen igual per a l'AEAT, però l'empremta es calcula sobre el que escriguis.

64 caràcters hexadecimals en majúscules. Va buida (camp «Huella=») si és el primer registre.

ISO 8601 amb segons i fus horari.

Tot es calcula al teu navegador amb la Web Crypto API. No desem ni enviem les dades que escrius.

URL i codi QR de la factura

Genera la URL d'acarament amb la codificació correcta, valida-la amb les regles de l'AEAT i descarrega el QR a punt per imprimir.

Modalitat del sistema
Entorn

Fins a 60 caràcters ASCII imprimibles. Els «&», «/» o espais es codifiquen sols.

Punt decimal, fins a 12 xifres enteres i 2 decimals.

Validar una URL de QR que ja tens

Enganxa la URL que imprimeix el teu programa (o la que llegeix un lector de QR) i et direm si l'AEAT l'acceptarà.

Com funciona l'empremta de Verifactu

El que diu el document tècnic de l'AEAT, explicat per a qui l'ha de programar.

Quins camps hi entren i en quin ordre

L'empremta d'un registre d'alta es calcula sobre vuit camps de l'XML, en aquest ordre: IDEmisorFactura, NumSerieFactura, FechaExpedicionFactura, TipoFactura, CuotaTotal, ImporteTotal, Huella (la del registre anterior) i FechaHoraHusoGenRegistro.

El registre d'anul·lació en fa servir cinc: IDEmisorFacturaAnulada, NumSerieFacturaAnulada, FechaExpedicionFacturaAnulada, Huella i FechaHoraHusoGenRegistro. El registre d'esdeveniment, que només existeix en la modalitat NO VERI*FACTU, en fa servir nou, començant per les dades del sistema informàtic.

Com es construeix la cadena

Cada camp s'escriu com a nom=valor i s'uneixen amb &. Als valors se'ls treuen els espais del principi i del final. Si un camp no té valor, s'escriu només el nom i l'igual: en el primer registre del sistema l'empremta anterior va com a Huella=. La cadena es codifica en UTF-8 i s'hi aplica SHA-256; el resultat va en hexadecimal i en majúscules, 64 caràcters.

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

Per què s'encadena

Cada registre porta l'empremta de l'anterior, així que canviar una factura antiga trenca totes les empremtes posteriors. Per això la cadena és per sistema i instal·lació, i per això dos processos que facturen alhora han de serialitzar el càlcul: si dos registres agafen la mateixa empremta anterior, la cadena es bifurca.

En la modalitat VERI*FACTU l'AEAT recalcula l'empremta de cada registre que rep. Si no coincideix amb la teva, el registre queda «Aceptado con errores» (acceptat amb errors).

I el QR

El QR de la factura conté una URL del servei d'acarament de l'AEAT amb quatre paràmetres: nif, numserie, fecha (DD-MM-AAAA) i importe (amb punt decimal). Els valors van amb URL encoding en UTF-8: un número de sèrie com 12345678&G33 ha de viatjar com a 12345678%26G33.

La ruta canvia segons la modalitat: ValidarQR per a VERI*FACTU i ValidarQRNoVerifactu per a NO VERI*FACTU, a www2.agenciatributaria.gob.es (producció) o prewww2.aeat.es (proves). El paràmetre opcional formato=json serveix per a integracions, però no pot anar mai al QR imprès.

Ho vam comprovar el 7 d'octubre de 2026 contra el servei d'acarament de l'entorn de proves de l'AEAT: la URL que genera aquesta eina amb 12345678&G33 s'accepta i l'Agència llegeix bé el número de sèrie, i un import amb coma retorna el mateix error 2005 que et marca aquí.

Les errades que més veiem en implementar-ho

I que aquesta calculadora t'ajuda a detectar abans que ho faci l'AEAT.

  1. Empremta en minúscules

    La majoria de biblioteques retornen l'hexadecimal en minúscules. L'AEAT el vol en majúscules.

  2. Data d'expedició en ISO

    A l'empremta i al QR la data d'expedició va com a DD-MM-AAAA, no com a AAAA-MM-DD. La data i hora del registre, en canvi, sí que va en ISO 8601 amb fus.

  3. Data i hora sense fus horari

    2024-01-01T19:20:30 no val: cal el fus, +01:00 o +02:00 segons l'època de l'any, i +00:00 o +01:00 a les Canàries.

  4. Coma decimal als imports

    Ni a l'empremta ni al QR: sempre punt. Al QR, una coma retorna l'error 2005.

  5. Oblidar «Huella=» en el primer registre

    El camp hi va encara que sigui buit. Treure'l de la cadena canvia l'empremta del primer registre i, amb ella, la de tota la cadena.

  6. «&» sense codificar al número de sèrie

    Parteix la URL del QR en dos paràmetres i el servei d'acarament no troba la factura. Codifica sempre els valors.

  7. Dos processos amb la mateixa empremta anterior

    Quan dues caixes o dos workers facturen alhora sense bloqueig, la cadena es bifurca. Serialitza el càlcul per sistema i instal·lació.

  8. Recalcular sobre dades «normalitzades»

    L'empremta es calcula sobre el valor que va a l'XML. Si el teu XML porta 123.10 i l'empremta es calcula amb 123.1, no coincidiran.

El que aquesta calculadora no fa

Calcula l'empremta i la URL del QR perquè provis la teva implementació. No genera l'XML complet del registre, no el signa (XAdES) i no l'envia a l'AEAT, que és el que converteix un programa en un sistema Verifactu: cua d'enviaments, control de flux, reintents, rectificatives i declaració responsable.

Això és el que fem a Kiwop: adaptem el teu programari propi, el teu ERP o la teva botiga en línia a Verifactu, o et desenvolupem la facturació a mida, i t'entreguem la declaració responsable.

Veure el servei de Verifactu

Preguntes freqüents

Preguntes freqüents

Sobre l'empremta, el QR i la calculadora.

Quin algorisme fa servir l'empremta de Verifactu?

SHA-256, l'únic que admet avui l'AEAT (llista L12 de l'annex de l'Ordre HAC/1177/2024). El resultat s'expressa en hexadecimal, en majúscules, amb 64 caràcters.

Com es calcula l'empremta del primer registre?

Igual que la dels altres, però amb el camp de l'empremta anterior buit: la cadena porta Huella= sense res al darrere. A més, el registre marca PrimerRegistro amb «S» i no porta bloc de registre anterior. El cas 1 dels exemples oficials és exactament això.

Els imports 123.1 i 123.10 donen la mateixa empremta?

No: l'empremta és un SHA-256 de la cadena, així que canviar un caràcter la canvia. El que diu l'AEAT és que admet els dos formats (un o dos decimals) com a vàlids; el que ha de passar és que l'empremta es calculi amb el mateix valor que va al teu XML.

La calculadora envia les meves dades a algun lloc?

No. L'empremta es calcula al teu navegador amb la Web Crypto API i el QR també es dibuixa en local. No hi ha cap servidor darrere de l'eina i no desem el que escrius.

Quina mida ha de tenir el QR de Verifactu?

Entre 30×30 i 40×40 mm, segons la norma ISO/IEC 18004 i amb nivell de correcció d'errors M. Ha de tenir almenys 2 mm de marge en blanc (se'n recomanen 6), anar al principi de la factura, a la primera pàgina, amb «QR tributario:» a sobre. L'SVG que descarrega la calculadora fa 35 mm.

Què vol dir «Aceptado con errores»?

És l'estat (acceptat amb errors) en què l'AEAT deixa un registre VERI*FACTU que ha rebut però en el qual ha trobat alguna cosa malament, per exemple una empremta que no coincideix amb el seu càlcul. El registre existeix, però l'has de corregir amb una esmena. Per això convé provar l'empremta abans de producció.

Puc fer servir la URL de proves en factures reals?

No. prewww2.aeat.es és l'entorn de proves externes i només serveix amb els registres enviats a aquest entorn. Les factures reals porten la URL de producció, www2.agenciatributaria.gob.es.

Fonts

Fonts

Documents tècnics oficials de l'AEAT en què es basa l'eina, llegits el 7 d'octubre de 2026.

  1. Detall de les especificacions tècniques per a la generació de l'empremta o hash (v0.1.2) Camps, ordre, format i els tres exemples que reprodueix la calculadora.
  2. Detall de les especificacions tècniques del codi QR (v0.5.0) URL, paràmetres, codificació, mida i codis d'error 1001 a 3002.
  3. Ordre HAC/1177/2024, especificacions tècniques Articles 13 (empremta), 20 i 21 (representació gràfica i QR).
  4. Informació tècnica de Verifactu a la seu de l'AEAT Esquemes, WSDL, validacions i entorn de proves.
  5. QR Code generator library, de Project Nayuki Llicència MIT. Genera el QR al teu navegador.

Següent pas

La teva empremta ja quadra? El difícil ve després

Enviament, reintents, rectificatives, concurrència i declaració responsable. T'ho deixem funcionant al teu sistema.

  • Sense compromís
  • Resposta en 24h
  • Proposta personalitzada