pain.001.001.03 — 250 transfers, high-volume payroll run
A realistic payroll run: 250 SEPA credit transfers in a single PmtInf, spread over five countries (DE, NL, BE, ES, FR), totalling 442 028.75 EUR. Every IBAN carries correct ISO 7064 mod-97 check digits and both control totals match the exact sum to the cent. Use it to see how your parser, your bank portal or your own tooling behaves on a file that is neither a toy nor pathological — and to check that a single wrong cent in a batch this size is still caught by CtrlSum alone.
pain.001.001.03 — Valid
A realistic payroll run: 250 SEPA credit transfers in a single PmtInf, spread over five countries (DE, NL, BE, ES, FR), totalling 442 028.75 EUR. Every IBAN carries correct ISO 7064 mod-97 check digits and both control totals match the exact sum to the cent. Use it to see how your parser, your bank portal or your own tooling behaves on a file that is neither a toy nor pathological — and to check that a single wrong cent in a batch this size is still caught by CtrlSum alone.
What this file shows
A realistic payroll run: 250 SEPA credit transfers in a single PmtInf, spread over five countries (DE, NL, BE, ES, FR), totalling 442 028.75 EUR. Every IBAN carries correct ISO 7064 mod-97 check digits and both control totals match the exact sum to the cent. Use it to see how your parser, your bank portal or your own tooling behaves on a file that is neither a toy nor pathological — and to check that a single wrong cent in a batch this size is still caught by CtrlSum alone.
| Transactions | 250 |
|---|---|
| Total | €442,028.75 |
| Scheme | SEPA |
| Date in the file | 2026-03-27 |
Every party, IBAN and amount below is fictitious. The IBANs are structurally valid — they pass the mod-97 check — but they belong to no real account.
File content
<?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.
How we know these results hold
Every file in this library is run through the site's own validator on each build. The expected result stated above is asserted by an automated test — if a file stopped matching what this page claims, the build would fail. Two inherited fixtures were repaired this way before publication: three IBANs failed the mod-97 check and several names used characters outside the basic SEPA character set.
SEPA Credit Transfer (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)