ValidateFin

pain.001.001.09 — valid, two payment batches with different execution dates

One pain.001 file, two PmtInf blocks: batch A is executed on 2026-03-10 with hybrid addresses (TwnNm + Ctry + one AdrLine), batch B on 2026-11-20 with fully structured ones. It shows the two things a multi-batch file teaches: the EPC address rule is evaluated per batch against the date that batch carries, and each PmtInf has its own NbOfTxs / CtrlSum on top of the GrpHdr totals (4 transfers, 3 350.00 EUR).

pain.001.001.09 — Valid

One pain.001 file, two PmtInf blocks: batch A is executed on 2026-03-10 with hybrid addresses (TwnNm + Ctry + one AdrLine), batch B on 2026-11-20 with fully structured ones. It shows the two things a multi-batch file teaches: the EPC address rule is evaluated per batch against the date that batch carries, and each PmtInf has its own NbOfTxs / CtrlSum on top of the GrpHdr totals (4 transfers, 3 350.00 EUR).

SEPA Credit Transfer (pain.001) pain.001.001.09 ISO 20022Expected result: Valid

What this file shows

One pain.001 file, two PmtInf blocks: batch A is executed on 2026-03-10 with hybrid addresses (TwnNm + Ctry + one AdrLine), batch B on 2026-11-20 with fully structured ones. It shows the two things a multi-batch file teaches: the EPC address rule is evaluated per batch against the date that batch carries, and each PmtInf has its own NbOfTxs / CtrlSum on top of the GrpHdr totals (4 transfers, 3 350.00 EUR).

Transactions4
Total€3,350.00
SchemeSEPA
Date in the file2026-03-10
Last verified: License: CC-BY-4.0

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.09, TWO payment batches.
  Expected validation result: VALID — 4 transfers, 3 350.00 EUR, 0 warnings.

  One file, two <PmtInf> blocks, each with its own execution date, its own debtor
  account and its own NbOfTxs / CtrlSum:
    * batch A — ReqdExctnDt 2026-03-10, HYBRID addresses (TwnNm + Ctry + one AdrLine),
      2 transfers, 1 549.50 EUR;
    * batch B — ReqdExctnDt 2026-11-20, STRUCTURED addresses (no AdrLine at all),
      2 transfers, 1 800.50 EUR.
  The EPC structured-address rule is evaluated per batch, against the date the batch
  itself carries: batch B is past the 2026-11-15 cut-off, batch A is not. The GrpHdr
  totals cover the whole file (4 / 3 350.00) and each batch's own totals must add up
  to it — a per-batch total that lies is caught even when the header total is right.
  SEPA is a single-currency scheme: every amount is in EUR.

  All parties and account numbers are fictitious.
  Reference page: https://validatefin.com/en/resources/samples/sepa-pain001-multi-batch
  License: CC-BY-4.0
-->
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>CT-MULTIBATCH-2026-0001</MsgId>
      <CreDtTm>2026-03-02T11:20:00</CreDtTm>
      <NbOfTxs>4</NbOfTxs>
      <CtrlSum>3350.00</CtrlSum>
      <InitgPty>
        <Nm>Atlas Industries SA</Nm>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>PMT-BATCH-A-SUPPLIERS</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <NbOfTxs>2</NbOfTxs>
      <CtrlSum>1549.50</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
      </PmtTpInf>
      <ReqdExctnDt>
        <Dt>2026-03-10</Dt>
      </ReqdExctnDt>
      <Dbtr>
        <Nm>Atlas Industries SA</Nm>
        <PstlAdr>
          <TwnNm>Paris</TwnNm>
          <Ctry>FR</Ctry>
          <AdrLine>18 avenue des Ateliers</AdrLine>
        </PstlAdr>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>FR7610107001011234567890129</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>CCBPFRPP</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <ChrgBr>SLEV</ChrgBr>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-BATCH-A-001</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">1200.00</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BICFI>GEBABEBB</BICFI>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Bureau Verhoeven BVBA</Nm>
          <PstlAdr>
            <TwnNm>Gent</TwnNm>
            <Ctry>BE</Ctry>
            <AdrLine>Korenlei 12</AdrLine>
          </PstlAdr>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>BE68539007547034</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Facture BV-2026-0311 - maintenance</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>E2E-BATCH-A-002</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">349.50</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BICFI>BCITITMM</BICFI>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Rossi Forniture Srl</Nm>
          <PstlAdr>
            <TwnNm>Milano</TwnNm>
            <Ctry>IT</Ctry>
            <AdrLine>Via Torino 45</AdrLine>
          </PstlAdr>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>IT60X0542811101000000123456</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Fattura RF-2026-0088 - materiale</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
    <PmtInf>
      <PmtInfId>PMT-BATCH-B-NOVEMBER</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <NbOfTxs>2</NbOfTxs>
      <CtrlSum>1800.50</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
      </PmtTpInf>
      <ReqdExctnDt>
        <Dt>2026-11-20</Dt>
      </ReqdExctnDt>
      <Dbtr>
        <Nm>Atlas Industries SA</Nm>
        <PstlAdr>
          <StrtNm>Avenue des Ateliers</StrtNm>
          <BldgNb>18</BldgNb>
          <PstCd>75011</PstCd>
          <TwnNm>Paris</TwnNm>
          <Ctry>FR</Ctry>
        </PstlAdr>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>FR7630006000011234567890189</IBAN>
        </Id>
        <Ccy>EUR</Ccy>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>BNPAFRPP</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <ChrgBr>SLEV</ChrgBr>

160 / 226 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)