What is checked
- XSD: the official Facturae schema of the file's version (facturae.gob.es), detected from the namespace.
- Calculations stated in the schema documentation: line TotalCost and GrossAmount, invoice totals, tax outputs incl. equivalence surcharge, IRPF withholding, InvoiceTotal, outstanding and executable amounts, batch totals (rules FACE-B, FACE-L, FACE-T).
- Identity: check letter/digit of Spanish NIF, NIE and CIF for residents; legal vs natural person blocks.
- FACe: all three DIR3 codes (accounting office, managing body, processing unit) for public-sector buyers, and whether the file carries a XAdES signature.
Every rule is explained, in Spanish, on the Facturae error codes page. Messages are in Spanish, the language of the format.
Where Facturae is used
Facturae is mandatory for invoices to Spanish public administrations through FACe since 2015, signed electronically (.xsig). Under the Crea y Crece law and Royal Decree 238/2026, e-invoicing between businesses becomes mandatory once the ministerial order is published (draft: October 2027 for companies above €8 million turnover, October 2028 for the rest); Facturae, UBL and CII are accepted.
For developers
Same engine as a REST API (POST /v1/validate, /v1/parse, /v1/render) and as an MCP server. The JSON report gives the rule code, the message and the path of the failing element, so it can run before signing and submitting to FACe.
Frequently asked questions
Is the signature verified?
The tool reports whether a XAdES signature is present but does not verify the certificate or digest. Use VALIDe or the FACe validator for that.
Why does my invoice with IRPF fail FACE-T07?
The Facturae schema defines InvoiceTotal as gross amount before taxes + tax outputs − taxes withheld. Several generators put base + VAT in InvoiceTotal and subtract the IRPF only in the outstanding amount, which breaks the formula.
Are ISO-8859-1 files supported?
Yes. Many Spanish programs write Facturae in ISO-8859-1; the file is decoded by its declared encoding.
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