Facturae 3.2.2 — totales incoherentes (válida contra el XSD)
Le même fichier, à un changement près : InvoiceTotal déclare 1200,00 € là où la formule du schéma donne 1210,00 € (base 1000 + TVA 210). Le fichier est VALIDE contre le XSD officiel de facturae.gob.es — un validateur qui ne regarde que le schéma le déclare bon. Seule la couche de cohérence le détecte, et signale aussi que le total du lot ne cadre plus. Ce n’est pas un rejet « officiel » : Facturae/FACe ne publie aucun code de rejet vérifiable hors ligne, c’est donc un avertissement, pas une erreur.
3.2.2 — Valide
Le même fichier, à un changement près : InvoiceTotal déclare 1200,00 € là où la formule du schéma donne 1210,00 € (base 1000 + TVA 210). Le fichier est VALIDE contre le XSD officiel de facturae.gob.es — un validateur qui ne regarde que le schéma le déclare bon. Seule la couche de cohérence le détecte, et signale aussi que le total du lot ne cadre plus. Ce n’est pas un rejet « officiel » : Facturae/FACe ne publie aucun code de rejet vérifiable hors ligne, c’est donc un avertissement, pas une erreur.
Ce que montre ce fichier
Le même fichier, à un changement près : InvoiceTotal déclare 1200,00 € là où la formule du schéma donne 1210,00 € (base 1000 + TVA 210). Le fichier est VALIDE contre le XSD officiel de facturae.gob.es — un validateur qui ne regarde que le schéma le déclare bon. Seule la couche de cohérence le détecte, et signale aussi que le total du lot ne cadre plus. Ce n’est pas un rejet « officiel » : Facturae/FACe ne publie aucun code de rejet vérifiable hors ligne, c’est donc un avertissement, pas une erreur.
| Transactions | 1 |
|---|---|
| Total | 1 200,00 € |
| Date contenue dans le fichier | 2026-01-15 |
Les défauts qu’il porte
- CALC-TOTALInvoiceTotal declara 1200,00 € donde la fórmula del esquema (TotalGrossAmountBeforeTaxes 1000 + TotalTaxOutputs 210 − TotalTaxesWithheld 0) da 1210,00 €.
- CALC-BATCHTotalInvoicesAmount del lote (1210,00 €) no coincide con la suma de los InvoiceTotal (1200,00 €).
Cité mot pour mot depuis le validateur, sans reformulation.
Toutes les parties, IBAN et montants ci-dessous sont fictifs. Les IBAN sont structurellement valides — ils passent le mod-97 — mais ne correspondent à aucun compte réel.
Contenu du fichier
<?xml version="1.0" encoding="UTF-8"?>
<fe:Facturae xmlns:fe="http://www.facturae.gob.es/formato/Versiones/Facturaev3_2_2.xml" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<FileHeader>
<SchemaVersion>3.2.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
<BatchIdentifier>FAC2026-0001</BatchIdentifier>
<InvoicesCount>1</InvoicesCount>
<TotalInvoicesAmount>
<TotalAmount>1210.00</TotalAmount>
</TotalInvoicesAmount>
<TotalOutstandingAmount>
<TotalAmount>1210.00</TotalAmount>
</TotalOutstandingAmount>
<TotalExecutableAmount>
<TotalAmount>1210.00</TotalAmount>
</TotalExecutableAmount>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
</Batch>
</FileHeader>
<Parties>
<SellerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>A58818501</TaxIdentificationNumber>
</TaxIdentification>
<LegalEntity>
<CorporateName>Suministros Técnicos del Ebro SL</CorporateName>
<AddressInSpain>
<Address>Calle Mayor 12</Address>
<PostCode>50001</PostCode>
<Town>Zaragoza</Town>
<Province>Zaragoza</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</LegalEntity>
</SellerParty>
<BuyerParty>
<TaxIdentification>
<PersonTypeCode>J</PersonTypeCode>
<ResidenceTypeCode>R</ResidenceTypeCode>
<TaxIdentificationNumber>P5000000I</TaxIdentificationNumber>
</TaxIdentification>
<AdministrativeCentres>
<AdministrativeCentre>
<CentreCode>L01502973</CentreCode>
<RoleTypeCode>01</RoleTypeCode>
<Name>Intervención General</Name>
<AddressInSpain>
<Address>Plaza del Pilar 18</Address>
<PostCode>50001</PostCode>
<Town>Zaragoza</Town>
<Province>Zaragoza</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</AdministrativeCentre>
<AdministrativeCentre>
<CentreCode>L01502974</CentreCode>
<RoleTypeCode>02</RoleTypeCode>
<Name>Órgano Gestor</Name>
<AddressInSpain>
<Address>Plaza del Pilar 18</Address>
<PostCode>50001</PostCode>
<Town>Zaragoza</Town>
<Province>Zaragoza</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</AdministrativeCentre>
<AdministrativeCentre>
<CentreCode>L01502975</CentreCode>
<RoleTypeCode>03</RoleTypeCode>
<Name>Unidad Tramitadora</Name>
<AddressInSpain>
<Address>Plaza del Pilar 18</Address>
<PostCode>50001</PostCode>
<Town>Zaragoza</Town>
<Province>Zaragoza</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</AdministrativeCentre>
</AdministrativeCentres>
<LegalEntity>
<CorporateName>Ayuntamiento de Zaragoza</CorporateName>
<AddressInSpain>
<Address>Plaza del Pilar 18</Address>
<PostCode>50001</PostCode>
<Town>Zaragoza</Town>
<Province>Zaragoza</Province>
<CountryCode>ESP</CountryCode>
</AddressInSpain>
</LegalEntity>
</BuyerParty>
</Parties>
<Invoices>
<Invoice>
<InvoiceHeader>
<InvoiceNumber>0001</InvoiceNumber>
<InvoiceSeriesCode>2026</InvoiceSeriesCode>
<InvoiceDocumentType>FC</InvoiceDocumentType>
<InvoiceClass>OO</InvoiceClass>
</InvoiceHeader>
<InvoiceIssueData>
<IssueDate>2026-01-15</IssueDate>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
<TaxCurrencyCode>EUR</TaxCurrencyCode>
<LanguageName>es</LanguageName>
</InvoiceIssueData>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>21.00</TaxRate>
<TaxableBase>
<TotalAmount>1000.00</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>210.00</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
<InvoiceTotals>
<TotalGrossAmount>1000.00</TotalGrossAmount>
<TotalGrossAmountBeforeTaxes>1000.00</TotalGrossAmountBeforeTaxes>
<TotalTaxOutputs>210.00</TotalTaxOutputs>
<TotalTaxesWithheld>0.00</TotalTaxesWithheld>
<InvoiceTotal>1200.00</InvoiceTotal>
<TotalOutstandingAmount>1200.00</TotalOutstandingAmount>
<TotalExecutableAmount>1200.00</TotalExecutableAmount>
</InvoiceTotals>
<Items>
<InvoiceLine>
<ItemDescription>Servicio de mantenimiento informático</ItemDescription>
<Quantity>10</Quantity>
<UnitOfMeasure>01</UnitOfMeasure>
<UnitPriceWithoutTax>100.000000</UnitPriceWithoutTax>
<TotalCost>1000.00</TotalCost>
<GrossAmount>1000.00</GrossAmount>
<TaxesOutputs>
<Tax>
<TaxTypeCode>01</TaxTypeCode>
<TaxRate>21.00</TaxRate>
<TaxableBase>
<TotalAmount>1000.00</TotalAmount>
</TaxableBase>
<TaxAmount>
<TotalAmount>210.00</TotalAmount>
</TaxAmount>
</Tax>
</TaxesOutputs>
</InvoiceLine>
</Items>
<PaymentDetails>
<Installment>
<InstallmentDueDate>2026-02-15</InstallmentDueDate>
<InstallmentAmount>1210.00</InstallmentAmount>
<PaymentMeans>04</PaymentMeans>
<AccountToBeCredited>
<IBAN>ES9121000418450200051332</IBAN>
</AccountToBeCredited>160 / 186 lines shown — the complete file is in the download above.
Comment nous savons que ces résultats tiennent
Chaque fichier de cette bibliothèque passe dans le validateur du site à chaque build. Le résultat attendu annoncé ci-dessus est vérifié par un test automatisé : si un fichier cessait de correspondre à ce que cette page affirme, le build échouerait. Deux fixtures héritées ont été réparées ainsi avant publication : trois IBAN échouaient au mod-97 et plusieurs libellés utilisaient des caractères hors du jeu SEPA de base.