Facturae Validator Spain
Check your Facturae invoice against the official XSD — and its totals — before you send it to FACe. In your browser, nothing uploaded.
What is Facturae, and what does this tool validate?
Facturae (also "factura-e") is Spain’s official electronic invoice format: an XML document signed with a recognised electronic certificate (a XAdES signature), MANDATORY for invoicing public administrations (B2G) through the FACe platform under Law 25/2013. The Ministry of Finance (Ministerio de Hacienda) publishes three schema versions on facturae.gob.es: 3.2 (2009), 3.2.1 (2014) and 3.2.2 (the current one). This free validator checks the file in two layers: first against the official XSD matching the version detected in the root namespace — structure, types, cardinalities and closed enumerations — then with CONSISTENCY controls derived from the schema’s own formulas: TotalCost = Quantity × UnitPriceWithoutTax, GrossAmount = TotalCost − discounts + charges, InvoiceTotal = TotalGrossAmountBeforeTaxes + TotalTaxOutputs − TotalTaxesWithheld, the VAT amount (base × rate) and the batch totals, plus the FORM of the NIF/CIF/NIE and the PRESENCE of the signature. These controls are shown as advisories, not official rejections: unlike Italy’s SdI, Facturae/FACe publishes no list of numbered rejection codes verifiable offline. Everything runs in your browser: the file never leaves your machine and is never sent to FACe.
Facturae validator: check your invoice against the official XSD — and its totals — before FACe sees it
Facturae (also written factura-e) is Spain's official electronic invoice format: an XML document signed with a recognised electronic certificate — a XAdES signature — and mandatory for invoicing public administrations (B2G) through the FACe platform under Law 25/2013. The Ministry of Finance (Ministerio de Hacienda) publishes three versions of the schema on facturae.gob.es: 3.2 (2009), 3.2.1 (2014) and 3.2.2, the current one. A Facturae file can carry a single invoice (individual) or a batch (lote) of several.
This tool works in two layers. First the official facturae.gob.es XSD, selected from the version detected in the root namespace: structure, types, cardinalities and closed enumerations. That is the verdict shown at the top. Then a layer of consistency controls derived from the schema's own formulas: TotalCost = Quantity × UnitPriceWithoutTax, GrossAmount = TotalCost − discounts + charges, InvoiceTotal = TotalGrossAmountBeforeTaxes + TotalTaxOutputs − TotalTaxesWithheld, the VAT amount (base × rate) and the batch totals — plus the FORM of the NIF/CIF/NIE and the PRESENCE of the XAdES signature. These are shown as advisories, not rejections: unlike Italy's SdI, Facturae/FACe publishes no list of numbered rejection codes verifiable offline.
And it is honest about its limits. The cryptographic validity of the XAdES signature — the certification chain up to a trusted CA, online revocation (OCSP/CRL) and conformance to the Facturae signature policy — is NOT verified: we detect the presence of the ds:Signature, not its validity. Neither is the existence of the NIF in the AEAT censo, the DIR3 codes (oficina contable / órgano gestor / unidad tramitadora) or the FACe/FACeB2B status. All of these need a live government registry, so they are listed on screen rather than hidden behind a green badge. Everything runs in your browser: the file is never transmitted.
Key takeaways
- The XSD verdict is layer 1: it tells you whether the file conforms to the official facturae.gob.es schema for its version. The consistency, NIF-form and signature advisories are layer 2 and never flip that verdict.
- The tool selects the schema from the file's namespace: 3.2, 3.2.1 or 3.2.2. A file that declares one version but is structured as another is caught here, not glossed over.
- The total checks are pure arithmetic derived from the schema's formulas — TotalCost, GrossAmount, InvoiceTotal, the VAT cuota. The XSD accepts an invoice whose totals do not add up; this layer flags it.
- A NIF/CIF/NIE check here is form only: it signals an impossible shape, never confirms the number exists. The AEAT confirms existence against its censo, which no offline tool can reach.
- A missing signature is flagged, but a present one is not proof: the XAdES cryptography, the AEAT censo, the DIR3 codes and the FACe status all need a registry and are listed as not-checked rather than assumed valid.
Frequently asked questions
Does this validator send my invoice to FACe or to the AEAT?
No. The file is read and analysed entirely in your browser: nothing is transmitted. Validating here is not filing and does not replace sending the invoice through FACe or your channel.
Which Facturae versions does it support?
All three published on facturae.gob.es: 3.2 (2009), 3.2.1 (2014) and 3.2.2 (the current one). The tool reads the version from the root namespace and validates the file against the matching official XSD.
Why are the total and NIF checks called advisories rather than errors?
Because Facturae/FACe does not publish a list of numbered rejection codes verifiable offline, the way Italy's SdI does. So a total that does not add up, or an impossible NIF form, is shown as an advisory: real, useful, but not an official rejection we can attribute a code to. The official verdict is the XSD.
Do you check the electronic signature?
We detect whether a ds:Signature (XAdES) is present, and flag its absence. We do NOT verify its cryptographic validity: that needs the certification chain to a trusted CA, online revocation checks and conformance to the Facturae signature policy — none of which can run in a browser without uploading your file.
Why could an invoice that is "valid" here still be rejected by FACe?
Because some checks need a database or the certificate we cannot reach offline: whether the NIF exists in the AEAT censo, whether the DIR3 routing codes (oficina contable, órgano gestor, unidad tramitadora) are correct, whether the signing certificate is valid, and the FACe/FACeB2B status. The tool lists all of these on screen rather than letting you believe they were checked.
Where do the schemas come from?
From the Ministry of Finance's official site, facturae.gob.es: the XSD schemas for versions 3.2, 3.2.1 and 3.2.2. Origen de los datos: Ministerio de Hacienda / facturae.gob.es — schemas retrieved on 13/07/2026. ValidateFin is an independent tool, neither certified nor endorsed by the Ministerio de Hacienda or facturae.gob.es.
ValidateFin is an independent tool. It is not certified, approved, accredited, affiliated with or endorsed by the Ministerio de Hacienda or facturae.gob.es, and nothing here should be read as suggesting otherwise. “Official” refers only to the artefacts used — the official Facturae XSD schemas from facturae.gob.es (versions 3.2, 3.2.1 and 3.2.2) — not to any accreditation of this tool. Origen de los datos: Ministerio de Hacienda / facturae.gob.es — schemas retrieved on 13 July 2026. The consistency controls, NIF/CIF/NIE form check and signature-presence check are advisories, not official rejection codes: Facturae/FACe publishes no offline-verifiable list of such codes. The cryptographic validity of the XAdES signature (certification chain, OCSP/CRL revocation, política de firma), the existence of the NIF in the AEAT censo, the DIR3 codes (oficina contable / órgano gestor / unidad tramitadora) and the FACe/FACeB2B status are NOT checked offline. Validating a file here does not submit it to FACe or to any administration.