ValidateFin

Facturae 3.2.2 — totales incoherentes (válida contra el XSD)

El mismo fichero, con un solo cambio: InvoiceTotal declara 1200,00 € donde la fórmula oficial del esquema da 1210,00 € (base 1000 + IVA 210). El fichero es VÁLIDO contra el XSD oficial de facturae.gob.es — un validador que solo mire el esquema lo da por bueno. Solo la capa de coherencia lo detecta, y además señala que el total del lote ya no cuadra. No es un rechazo « oficial »: Facturae/FACe no publica códigos de rechazo verificables sin conexión, así que es un aviso, no un error.

3.2.2 — Válido

El mismo fichero, con un solo cambio: InvoiceTotal declara 1200,00 € donde la fórmula oficial del esquema da 1210,00 € (base 1000 + IVA 210). El fichero es VÁLIDO contra el XSD oficial de facturae.gob.es — un validador que solo mire el esquema lo da por bueno. Solo la capa de coherencia lo detecta, y además señala que el total del lote ya no cuadra. No es un rechazo « oficial »: Facturae/FACe no publica códigos de rechazo verificables sin conexión, así que es un aviso, no un error.

Factura Facturae (España, FACe) 3.2.2 Ministerio de Hacienda — Facturae 3.2.2 (facturae.gob.es)Resultado esperado: Válido — 2 avisos

Lo que muestra este fichero

El mismo fichero, con un solo cambio: InvoiceTotal declara 1200,00 € donde la fórmula oficial del esquema da 1210,00 € (base 1000 + IVA 210). El fichero es VÁLIDO contra el XSD oficial de facturae.gob.es — un validador que solo mire el esquema lo da por bueno. Solo la capa de coherencia lo detecta, y además señala que el total del lote ya no cuadra. No es un rechazo « oficial »: Facturae/FACe no publica códigos de rechazo verificables sin conexión, así que es un aviso, no un error.

Transacciones1
Total1200,00 €
Fecha en el fichero2026-01-15

Los defectos que contiene

  • 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 €).

Citado literalmente del validador, sin parafrasear.

Última verificación: Licencia: CC-BY-4.0

Todas las partes, IBAN e importes siguientes son ficticios. Los IBAN son estructuralmente válidos —superan el mod-97— pero no corresponden a ninguna cuenta real.

Contenido del fichero

<?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.

Cómo sabemos que estos resultados se sostienen

Cada fichero de esta biblioteca pasa por el propio validador del sitio en cada build. El resultado esperado indicado arriba lo verifica un test automatizado: si un fichero dejara de coincidir con lo que afirma esta página, el build fallaría. Dos fixtures heredadas se repararon así antes de publicarse: tres IBAN no superaban el mod-97 y varios nombres usaban caracteres fuera del juego SEPA básico.

Factura Facturae (España, FACe)