Edu García Let's talk

01 / Product · Open source

Verifactu, inside your own code.

A Python library that generates Spanish tax-authority invoicing records from your own software: chained hash, tax QR, validated XML and submission. No middleman and no per-invoice fees.

PythonMITPyPIAEAT
record · hash · xml
REGISTRO N-1 REGISTRO N REGISTRO N+1 nifB12345678 serie2026/0041 total1.210,00 huella a41f…9c02 nifB12345678 serie2026/0042 total484,00 huella 7bd3…41ea nifB12345678 serie2026/0043 total96,80 huella e08c…5517 XML · XSD <RegistroAlta> <IDFactura>2026/0042</> <Huella>7bd3…41ea</> <Encadenamiento>a41f…9c02 </RegistroAlta> QR TRIBUTARIO
$ pip install traazza

From there, generating a chained record and its QR is a handful of lines inside your own application.

Modules

The whole record lifecycle, in one library.

Each piece works on its own: generate only the hash, only the XML, or the full flow.

01

Chained SHA-256 hash

Every record carries the hash of the previous one. Altering an invoice breaks the chain and it shows.

02

Official tax QR

Generates the QR code the invoice must carry, with the fields and format the tax authority expects.

03

XML validated against the XSD

Builds the record XML and validates it against the official schemas before anything is sent.

04

SOAP submission to the AEAT

Client for the Spanish tax authority web service, with both the test and production environments.

05

XAdES signing and event log

Optional modules for electronic signing and for the system event log.

06

Command line included

A CLI to generate, validate and debug records without writing code.

FAQ

Questions about Traazza and Verifactu.

Technical information for developers, not legal or tax advice.

What is Verifactu?
A Spanish tax-authority regime that requires invoicing software to produce a record for every invoice — chained, tamper-evident, carrying a QR code and optionally submitted to the AEAT. It comes from the RRSIF regulation.
Is Traazza a complete invoicing system?
No. Traazza is a library that implements the technical parts of the record: chained hash, QR, XML, validation and submission. Compliance as an invoicing system remains the responsibility of the software that integrates it.
Do I need a digital certificate?
Not to generate records, hashes, QR codes or XML. You do to submit to the AEAT: the request is signed with the certificate of the taxpayer or an authorised representative.
Is it safe? Can I audit it?
Yes. It is open source under the MIT licence and the code is published on GitHub. You can read it, audit it and adapt it.
What does it cost?
The library is free and open source. If you need help integrating it into your own software, that is a separate service.

Need it integrated?

I integrate Traazza into existing invoicing software and ERPs. Tell me how your system invoices.