ValidateFin

pain.001.001.03 — 250 transfers, high-volume payroll run

Una nómina realista: 250 transferencias SEPA en un único PmtInf, repartidas entre cinco países (DE, NL, BE, ES, FR), por un total de 442.028,75 EUR. Cada IBAN lleva dígitos de control mod-97 (ISO 7064) correctos y ambos totales de control coinciden con la suma exacta, al céntimo. Sirve para ver cómo se comporta tu parser, tu portal bancario o tus propias herramientas ante un fichero que no es ni de juguete ni patológico, y para comprobar que un solo céntimo erróneo en un lote de este tamaño lo detecta el CtrlSum por sí solo.

pain.001.001.03 — Válido

Una nómina realista: 250 transferencias SEPA en un único PmtInf, repartidas entre cinco países (DE, NL, BE, ES, FR), por un total de 442.028,75 EUR. Cada IBAN lleva dígitos de control mod-97 (ISO 7064) correctos y ambos totales de control coinciden con la suma exacta, al céntimo. Sirve para ver cómo se comporta tu parser, tu portal bancario o tus propias herramientas ante un fichero que no es ni de juguete ni patológico, y para comprobar que un solo céntimo erróneo en un lote de este tamaño lo detecta el CtrlSum por sí solo.

Transferencia SEPA (pain.001) pain.001.001.03 ISO 20022Resultado esperado: Válido

Lo que muestra este fichero

Una nómina realista: 250 transferencias SEPA en un único PmtInf, repartidas entre cinco países (DE, NL, BE, ES, FR), por un total de 442.028,75 EUR. Cada IBAN lleva dígitos de control mod-97 (ISO 7064) correctos y ambos totales de control coinciden con la suma exacta, al céntimo. Sirve para ver cómo se comporta tu parser, tu portal bancario o tus propias herramientas ante un fichero que no es ni de juguete ni patológico, y para comprobar que un solo céntimo erróneo en un lote de este tamaño lo detecta el CtrlSum por sí solo.

Transacciones250
Total442.028,75 €
EsquemaSEPA
Fecha en el fichero2026-03-27
Ú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"?>
<!--
  ValidateFin sample file — SEPA Credit Transfer, pain.001.001.03, HIGH VOLUME.
  Expected validation result: VALID — 250 transfers, 442028.75 EUR, 0 warnings.

  A realistic payroll run: 250 credit transfers in a single PmtInf, spread over five
  countries (DE, NL, BE, ES, FR). Every IBAN is generated with correct ISO 7064
  mod-97 check digits, every name stays inside the basic SEPA character set, and the
  GrpHdr and PmtInf control totals both equal the exact sum of the 250 amounts.

  Use it to check how your parser, your bank portal or your own tooling behaves on a
  file that is neither tiny nor pathological — and to see that a single wrong cent in
  a batch this size is caught by CtrlSum alone.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/sepa-pain001-bulk-250
  License: CC-BY-4.0
-->
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>CT-BULK-202603-0001</MsgId>
      <CreDtTm>2026-03-24T18:45:00</CreDtTm>
      <NbOfTxs>250</NbOfTxs>
      <CtrlSum>442028.75</CtrlSum>
      <InitgPty>
        <Nm>Northwind Services SA</Nm>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>PMT-BULK-PAYROLL-202603</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <BtchBookg>true</BtchBookg>
      <NbOfTxs>250</NbOfTxs>
      <CtrlSum>442028.75</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
        <CtgyPurp>
          <Cd>SALA</Cd>
        </CtgyPurp>
      </PmtTpInf>
      <ReqdExctnDt>2026-03-27</ReqdExctnDt>
      <Dbtr>
        <Nm>Northwind Services SA</Nm>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>FR7610107001011234567890129</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BIC>CCBPFRPP</BIC>
        </FinInstnId>
      </DbtrAgt>
      <ChrgBr>SLEV</ChrgBr>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-PAYROLL-2026-03-001</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">58.73</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BIC>INGBNL2A</BIC>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Bruno Ivanov</Nm>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>NL25INGB0002000001</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Salaire mars 2026 - matricule 1001</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-PAYROLL-2026-03-002</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">72.46</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BIC>GEBABEBB</BIC>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Carla Peeters</Nm>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>BE80300000000002</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Salaire mars 2026 - matricule 1002</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-PAYROLL-2026-03-003</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">86.19</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BIC>CAIXESBB</BIC>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>David Weber</Nm>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>ES6421000418004500000003</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Salaire mars 2026 - matricule 1003</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-PAYROLL-2026-03-004</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">99.92</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BIC>BNPAFRPP</BIC>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Elena Garcia</Nm>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>FR7030004000011000000000485</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Salaire mars 2026 - matricule 1004</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-PAYROLL-2026-03-005</EndToEndId>
        </PmtId>

160 / 6064 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.

Transferencia SEPA (pain.001)