What is checked
- Schema: AEAT SuministroLR.xsd / SuministroInformacion.xsd, also inside a SOAP envelope.
- Huella: the SHA-256 of every RegistroAlta and RegistroAnulacion is recomputed from the official string (verified against the AEAT test vector). A mismatch, AEAT error 2000, is reported with the correct string and hash.
- Chaining: PrimerRegistro / RegistroAnterior and the links between the records of the file.
- AEAT rules: NIF check letters, minimum issue date 28-10-2024, recipients per invoice type (1189/1190), corrective invoices, S1/N1/N2/E1–E8 breakdown, equivalence surcharge, CuotaTotal / ImporteTotal (2005/2006), forbidden characters (1287).
- QR: host, parameter order and encoding, NIF, date and amount format.
- AEAT responses: every CodigoErrorRegistro with the official description.
Messages are in Spanish. All 247 official AEAT codes are listed on the VERI*FACTU error codes page.
Timeline
Under Royal Decree-law 15/2025, invoicing software must comply from 1 January 2027 for corporate income tax payers and from 1 July 2027 for everyone else. A further postponement announced in October 2026 is not law yet.
For developers
POST the XML (or the QR URL as text/plain) to /v1/validate; the MCP server exposes the same checks to AI agents. Use it in CI to catch hash and chaining bugs before they reach the AEAT.
Frequently asked questions
Does it submit records to the AEAT?
No. It only checks the files. Submission is done by your invoicing system with its certificate.
Can it check a chain across several submissions?
Each record is checked against the previous hash it declares, so tampering is detected in every file. Links between consecutive records are checked inside one file; a gap to a record sent in another file is reported as a notice, not an error.
Developers: same engine as an API
curl -F file=@invoice.pdf https://einvoicechecker.com/v1/validatecurl -F file=@invoice.xml https://einvoicechecker.com/v1/parsecurl -F file=@invoice.xml "https://einvoicechecker.com/v1/render?lang=en" -o invoice.html