pain.001.001.03 — 250 transfers, high-volume payroll run
Um processamento salarial realista: 250 transferências SEPA num único PmtInf, repartidas por cinco países (DE, NL, BE, ES, FR), num total de 442 028,75 EUR. Cada IBAN tem dígitos de controlo mod-97 (ISO 7064) corretos e os dois totais de controlo igualam a soma exata, ao cêntimo. Serve para ver como o seu parser, o seu portal bancário ou as suas ferramentas se comportam num ficheiro que não é nem de brincar nem patológico — e para confirmar que um único cêntimo errado num lote deste tamanho continua a ser apanhado só pelo CtrlSum.
pain.001.001.03 — Válido
Um processamento salarial realista: 250 transferências SEPA num único PmtInf, repartidas por cinco países (DE, NL, BE, ES, FR), num total de 442 028,75 EUR. Cada IBAN tem dígitos de controlo mod-97 (ISO 7064) corretos e os dois totais de controlo igualam a soma exata, ao cêntimo. Serve para ver como o seu parser, o seu portal bancário ou as suas ferramentas se comportam num ficheiro que não é nem de brincar nem patológico — e para confirmar que um único cêntimo errado num lote deste tamanho continua a ser apanhado só pelo CtrlSum.
O que este ficheiro mostra
Um processamento salarial realista: 250 transferências SEPA num único PmtInf, repartidas por cinco países (DE, NL, BE, ES, FR), num total de 442 028,75 EUR. Cada IBAN tem dígitos de controlo mod-97 (ISO 7064) corretos e os dois totais de controlo igualam a soma exata, ao cêntimo. Serve para ver como o seu parser, o seu portal bancário ou as suas ferramentas se comportam num ficheiro que não é nem de brincar nem patológico — e para confirmar que um único cêntimo errado num lote deste tamanho continua a ser apanhado só pelo CtrlSum.
| Transações | 250 |
|---|---|
| Total | € 442.028,75 |
| Esquema | SEPA |
| Data no ficheiro | 2026-03-27 |
Todas as partes, IBAN e montantes abaixo são fictícios. Os IBAN são estruturalmente válidos — passam no mod-97 — mas não correspondem a nenhuma conta real.
Conteúdo do ficheiro
<?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.
Como sabemos que estes resultados se mantêm
Cada ficheiro desta biblioteca passa pelo próprio validador do site em cada build. O resultado esperado indicado acima é verificado por um teste automatizado: se um ficheiro deixasse de corresponder ao que esta página afirma, o build falharia. Duas fixtures herdadas foram reparadas assim antes da publicação: três IBAN falhavam o mod-97 e vários nomes usavam caracteres fora do conjunto SEPA básico.
Transferência 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)