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.
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.
| Transacciones | 250 |
|---|---|
| Total | 442.028,75 € |
| Esquema | SEPA |
| Fecha en el fichero | 2026-03-27 |
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)
- pain.001.001.03 — valid credit transfer
- pain.001.001.09 — valid, hybrid address
- pain.001.001.03 — CtrlSum mismatch
- pain.001.001.03 — invalid IBAN
- pain.001.001.03 — NbOfTxs mismatch
- pain.001.001.03 — unstructured address after 2026-11-15
- pain.001.001.11 — valid, fully structured address, executed after 2026-11-15
- pain.001.001.09 — valid, two payment batches with different execution dates
- pain.001.001.03 — nine-character BIC
- pain.001.001.03 — accent and ampersand outside the SEPA character set
- pain.001.001.03 — unstructured address, executed before 2026-11-15 (warning only)