Outil gratuit pour les développeurs

Calculateur d’empreinte (hash) et de QR code Verifactu

Calculez l’empreinte SHA-256 d’un enregistrement d’émission, d’annulation ou d’événement exactement comme la définit l’AEAT (l’administration fiscale espagnole), chaînez-la avec l’enregistrement suivant et générez l’URL et le QR code de la facture avec leurs validations. Chargez les exemples officiels et vérifiez que votre code donne le même résultat.

  • Reproduit les 3 exemples officiels
  • Calcul dans votre navigateur
  • Sans inscription

Outil de test fondé sur les documents techniques publiés par l’AEAT (empreinte v0.1.2 et QR v0.5.0). Il n’envoie rien à l’administration fiscale espagnole et ne remplace pas ses validations.

Empreinte de l’enregistrement de facturation

Choisissez le type d’enregistrement, remplissez les champs tels qu’ils figurent dans votre XML et calculez. Laissez l’empreinte précédente vide s’il s’agit du premier enregistrement du système.

Type d’enregistrement
Exemples officiels de l’AEAT :

Tels qu’ils figurent sur la facture, jusqu’à 60 caractères.

Format JJ-MM-AAAA, avec des tirets comme séparateurs.

Avec un point décimal. 123.1 et 123.10 se valent pour l’AEAT, mais l’empreinte se calcule sur ce que vous saisissez.

64 caractères hexadécimaux en majuscules. Vide (champ « Huella= ») s’il s’agit du premier enregistrement.

ISO 8601 avec secondes et fuseau horaire.

Tout est calculé dans votre navigateur avec la Web Crypto API. Nous ne conservons ni n’envoyons les données que vous saisissez.

URL et QR code de la facture

Générez l’URL de vérification avec le bon encodage, validez-la selon les règles de l’AEAT et téléchargez le QR code prêt à imprimer.

Modalité du système
Environnement

Jusqu’à 60 caractères ASCII imprimables. Les « & », « / » ou espaces sont encodés automatiquement.

Point décimal, jusqu’à 12 chiffres entiers et 2 décimales.

Valider l’URL d’un QR code existant

Collez l’URL qu’imprime votre logiciel (ou celle que lit un lecteur de QR code) et nous vous disons si l’AEAT l’acceptera.

Comment fonctionne l’empreinte Verifactu

Ce que dit le document technique de l’AEAT, expliqué pour ceux qui doivent le programmer.

Quels champs entrent et dans quel ordre

L’empreinte d’un enregistrement d’émission se calcule sur huit champs du XML, dans cet ordre : IDEmisorFactura, NumSerieFactura, FechaExpedicionFactura, TipoFactura, CuotaTotal, ImporteTotal, Huella (celle de l’enregistrement précédent) et FechaHoraHusoGenRegistro.

L’enregistrement d’annulation en utilise cinq : IDEmisorFacturaAnulada, NumSerieFacturaAnulada, FechaExpedicionFacturaAnulada, Huella et FechaHoraHusoGenRegistro. L’enregistrement d’événement, qui n’existe que dans la modalité NO VERI*FACTU, en utilise neuf, en commençant par les données du système informatique.

Comment se construit la chaîne

Chaque champ s’écrit sous la forme nom=valeur et les champs sont joints par &. On retire les espaces au début et à la fin des valeurs. Si un champ n’a pas de valeur, on écrit seulement le nom et le signe égal : pour le premier enregistrement du système, l’empreinte précédente s’écrit Huella=. La chaîne est encodée en UTF-8 puis passée en SHA-256 ; le résultat s’exprime en hexadécimal et en majuscules, sur 64 caractères.

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

Pourquoi le chaînage

Chaque enregistrement contient l’empreinte du précédent : modifier une ancienne facture casse donc toutes les empreintes suivantes. C’est pourquoi la chaîne est propre à chaque système et à chaque installation, et pourquoi deux processus qui facturent en même temps doivent sérialiser le calcul : si deux enregistrements prennent la même empreinte précédente, la chaîne bifurque.

Dans la modalité VERI*FACTU, l’AEAT recalcule l’empreinte de chaque enregistrement reçu. Si elle ne correspond pas à la vôtre, l’enregistrement passe au statut « Aceptado con errores » (accepté avec erreurs).

Et le QR code

Le QR code de la facture contient une URL du service de vérification de l’AEAT avec quatre paramètres : nif, numserie, fecha (JJ-MM-AAAA, avec des tirets) et importe (avec un point décimal). Les valeurs sont encodées pour l’URL en UTF-8 : un numéro de série comme 12345678&G33 doit voyager sous la forme 12345678%26G33.

Le chemin change selon la modalité : ValidarQR pour VERI*FACTU et ValidarQRNoVerifactu pour NO VERI*FACTU, sur www2.agenciatributaria.gob.es (production) ou prewww2.aeat.es (tests). Le paramètre facultatif formato=json sert aux intégrations, mais ne doit jamais figurer dans le QR code imprimé.

Nous l’avons vérifié le 7 octobre 2026 sur le service de vérification de l’environnement de tests de l’AEAT : l’URL que génère cet outil avec 12345678&G33 est acceptée et l’Agence lit correctement le numéro de série, et un montant avec une virgule renvoie la même erreur 2005 que celle signalée ici.

Les erreurs d’implémentation les plus fréquentes

Et que ce calculateur vous aide à repérer avant l’AEAT.

  1. Empreinte en minuscules

    La plupart des bibliothèques renvoient l’hexadécimal en minuscules. L’AEAT le veut en majuscules.

  2. Date d’émission au format ISO

    Dans l’empreinte et dans le QR code, la date d’émission s’écrit JJ-MM-AAAA (avec des tirets), pas AAAA-MM-JJ. La date et l’heure de l’enregistrement, en revanche, sont bien en ISO 8601 avec fuseau.

  3. Date et heure sans fuseau horaire

    2024-01-01T19:20:30 ne suffit pas : il faut le fuseau, +01:00 ou +02:00 selon la période de l’année, et +00:00 ou +01:00 aux Canaries.

  4. Virgule décimale dans les montants

    Ni dans l’empreinte ni dans le QR code : toujours un point. Dans le QR code, une virgule renvoie l’erreur 2005.

  5. Oublier « Huella= » dans le premier enregistrement

    Le champ est présent même vide. Le retirer de la chaîne change l’empreinte du premier enregistrement et, avec elle, celle de toute la chaîne.

  6. « & » non encodé dans le numéro de série

    Il coupe l’URL du QR code en deux paramètres et le service de vérification ne trouve pas la facture. Encodez toujours les valeurs.

  7. Deux processus avec la même empreinte précédente

    Quand deux caisses ou deux workers facturent en même temps sans verrou, la chaîne bifurque. Sérialisez le calcul par système et par installation.

  8. Recalculer sur des données « normalisées »

    L’empreinte se calcule sur la valeur qui figure dans le XML. Si votre XML contient 123.10 et que l’empreinte est calculée avec 123.1, elles ne correspondront pas.

Ce que ce calculateur ne fait pas

Il calcule l’empreinte et l’URL du QR code pour que vous testiez votre implémentation. Il ne génère pas le XML complet de l’enregistrement, ne le signe pas (XAdES) et ne l’envoie pas à l’AEAT, ce qui fait d’un logiciel un système Verifactu : file d’envoi, contrôle de flux, nouvelles tentatives, rectificatives et déclaration responsable.

C’est ce que nous faisons chez Kiwop : nous adaptons à Verifactu votre logiciel interne, votre ERP ou votre boutique en ligne qui facture en Espagne, ou nous développons votre facturation sur mesure, et nous vous remettons la déclaration responsable.

Voir le service Verifactu

Questions fréquentes

Questions fréquentes

Sur l’empreinte, le QR code et le calculateur.

Quel algorithme utilise l’empreinte Verifactu ?

SHA-256, le seul qu’admet aujourd’hui l’AEAT (liste L12 de l’annexe de l’Orden HAC/1177/2024, l’arrêté espagnol des spécifications techniques). Le résultat s’exprime en hexadécimal, en majuscules, sur 64 caractères.

Comment se calcule l’empreinte du premier enregistrement ?

Comme les autres, mais avec le champ de l’empreinte précédente vide : la chaîne contient Huella= sans rien derrière. L’enregistrement indique en outre PrimerRegistro à « S » et ne comporte pas de bloc d’enregistrement précédent. Le cas 1 des exemples officiels correspond exactement à cela.

Les montants 123.1 et 123.10 donnent-ils la même empreinte ?

Non : l’empreinte est un SHA-256 de la chaîne, donc changer un caractère la change. L’AEAT indique qu’elle accepte les deux formats (une ou deux décimales) ; ce qui compte, c’est que l’empreinte soit calculée avec la même valeur que celle de votre XML.

Le calculateur envoie-t-il mes données quelque part ?

Non. L’empreinte est calculée dans votre navigateur avec la Web Crypto API et le QR code est lui aussi dessiné en local. Il n’y a pas de serveur derrière l’outil et nous ne conservons pas ce que vous saisissez.

Quelle taille doit avoir le QR code Verifactu ?

Entre 30×30 et 40×40 mm, selon la norme ISO/IEC 18004 et avec le niveau de correction d’erreurs M. Il doit avoir au moins 2 mm de marge blanche (6 recommandés), figurer en haut de la facture, sur la première page, avec « QR tributario: » au-dessus. Le SVG téléchargé depuis le calculateur mesure 35 mm.

Que signifie « Aceptado con errores » ?

C’est le statut (accepté avec erreurs) que l’AEAT attribue à un enregistrement VERI*FACTU reçu dans lequel elle a trouvé un problème, par exemple une empreinte qui ne correspond pas à son calcul. L’enregistrement existe, mais vous devez le corriger par une correction (subsanación). D’où l’intérêt de tester l’empreinte avant la production.

Puis-je utiliser l’URL de tests sur des factures réelles ?

Non. prewww2.aeat.es est l’environnement de tests externes et ne fonctionne qu’avec les enregistrements envoyés à cet environnement. Les factures réelles portent l’URL de production, www2.agenciatributaria.gob.es.

Sources

Sources

Documents techniques officiels de l’AEAT sur lesquels repose l’outil, lus le 7 octobre 2026.

  1. Détail des spécifications techniques pour la génération de l’empreinte ou hash (v0.1.2) Champs, ordre, format et les trois exemples que reproduit le calculateur.
  2. Détail des spécifications techniques du QR code (v0.5.0) URL, paramètres, encodage, taille et codes d’erreur 1001 à 3002.
  3. Orden HAC/1177/2024, spécifications techniques Articles 13 (empreinte), 20 et 21 (représentation graphique et QR code).
  4. Informations techniques sur Verifactu sur le site de l’AEAT Schémas, WSDL, validations et environnement de tests.
  5. QR Code generator library, de Project Nayuki Licence MIT. Génère le QR code dans votre navigateur.

Prochaine étape

Votre empreinte est correcte ? Le plus difficile vient ensuite

Envoi, nouvelles tentatives, rectificatives, concurrence et déclaration responsable. Nous vous livrons le tout en fonctionnement dans votre système.

  • Sans engagement
  • Réponse en 24h
  • Proposition personnalisée