pain.001.001.03 — 250 transfers, high-volume payroll run
Ein realistischer Gehaltslauf: 250 SEPA-Überweisungen in einer einzigen PmtInf, verteilt auf fünf Länder (DE, NL, BE, ES, FR), insgesamt 442.028,75 EUR. Jede IBAN trägt korrekte Mod-97-Prüfziffern (ISO 7064), und beide Kontrollsummen entsprechen der Summe auf den Cent genau. Damit lässt sich prüfen, wie der eigene Parser, das Bankportal oder die eigene Software auf eine Datei reagiert, die weder Spielzeug noch pathologisch ist — und dass ein einziger falscher Cent in einem Stapel dieser Größe allein von CtrlSum gefunden wird.
pain.001.001.03 — Gültig
Ein realistischer Gehaltslauf: 250 SEPA-Überweisungen in einer einzigen PmtInf, verteilt auf fünf Länder (DE, NL, BE, ES, FR), insgesamt 442.028,75 EUR. Jede IBAN trägt korrekte Mod-97-Prüfziffern (ISO 7064), und beide Kontrollsummen entsprechen der Summe auf den Cent genau. Damit lässt sich prüfen, wie der eigene Parser, das Bankportal oder die eigene Software auf eine Datei reagiert, die weder Spielzeug noch pathologisch ist — und dass ein einziger falscher Cent in einem Stapel dieser Größe allein von CtrlSum gefunden wird.
Was diese Datei zeigt
Ein realistischer Gehaltslauf: 250 SEPA-Überweisungen in einer einzigen PmtInf, verteilt auf fünf Länder (DE, NL, BE, ES, FR), insgesamt 442.028,75 EUR. Jede IBAN trägt korrekte Mod-97-Prüfziffern (ISO 7064), und beide Kontrollsummen entsprechen der Summe auf den Cent genau. Damit lässt sich prüfen, wie der eigene Parser, das Bankportal oder die eigene Software auf eine Datei reagiert, die weder Spielzeug noch pathologisch ist — und dass ein einziger falscher Cent in einem Stapel dieser Größe allein von CtrlSum gefunden wird.
| Transaktionen | 250 |
|---|---|
| Summe | 442.028,75 € |
| Verfahren | SEPA |
| Datum in der Datei | 2026-03-27 |
Alle Parteien, IBANs und Beträge unten sind fiktiv. Die IBANs sind strukturell gültig — sie bestehen die Mod-97-Prüfung — gehören aber zu keinem realen Konto.
Dateiinhalt
<?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.
Woher wir wissen, dass diese Ergebnisse stimmen
Jede Datei dieser Bibliothek läuft bei jedem Build durch den eigenen Validator der Website. Das oben genannte erwartete Ergebnis wird von einem automatisierten Test geprüft: Passt eine Datei nicht mehr zu dem, was diese Seite behauptet, schlägt der Build fehl. Zwei geerbte Fixtures wurden so vor der Veröffentlichung repariert — drei IBANs scheiterten an der Mod-97-Prüfung, und mehrere Namen nutzten Zeichen außerhalb des SEPA-Basiszeichensatzes.
SEPA-Überweisung (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)