Guides · Updated 2026-10-20
pain.001.001.09 XML example for a SEPA credit transfer
A pain.001 file has three levels: one group header (GrpHdr) for the whole message, one or more payment information blocks (PmtInf) for the debit side, and one or more transactions (CdtTrfTxInf) in each block. The synthetic file on this page is a complete pain.001.001.09 SEPA credit transfer with four payments that passes the ISO 20022 schema and BankLint’s SEPA rules.
The structure in one table
| Level | Element | Occurs | What it holds |
|---|---|---|---|
| Message | Document/CstmrCdtTrfInitn | 1 | The root. The namespace urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 identifies the version. |
| Group header | GrpHdr | 1 | Message id, creation time, totals for the whole file and the initiating party. |
| Payment information | PmtInf | 1 or more | One debit side: payment method, requested execution date, debtor, debtor account and debtor agent, charge bearer. |
| Transaction | CdtTrfTxInf | 1 or more per PmtInf | One payment: end-to-end reference, amount, creditor agent, creditor, creditor account and remittance information. |
The complete file
All names, IBANs and the BIC TESTDEFFXXX are synthetic test data; the IBANs have valid check digits. Download the file, or validate it on the homepage with the sample “A clean SEPA file”.
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>MSG-2026-0001</MsgId>
<CreDtTm>2026-10-16T09:00:00</CreDtTm>
<NbOfTxs>4</NbOfTxs>
<CtrlSum>6460.44</CtrlSum>
<InitgPty>
<Nm>Synthetic Corp Example AG</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMTINF-0001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>true</BtchBookg>
<NbOfTxs>4</NbOfTxs>
<CtrlSum>6460.44</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>
<Dt>2026-10-20</Dt>
</ReqdExctnDt>
<Dbtr>
<Nm>Synthetic Corp Example AG</Nm>
<PstlAdr>
<StrtNm>Beispielweg</StrtNm>
<BldgNb>1</BldgNb>
<PstCd>12345</PstCd>
<TwnNm>Musterstadt</TwnNm>
<Ctry>DE</Ctry>
</PstlAdr>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE50100000000000000001</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BICFI>TESTDEFFXXX</BICFI>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>E2E-INV-1001</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">1250.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BICFI>TESTDEFFXXX</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Example Supplier Alpha GmbH</Nm>
<PstlAdr>
<StrtNm>Beispielweg</StrtNm>
<BldgNb>1</BldgNb>
<PstCd>12345</PstCd>
<TwnNm>Alphastadt</TwnNm>
<Ctry>DE</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE15200000000000000011</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice INV-1001</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>E2E-INV-1002</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">310.45</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BICFI>TESTDEFFXXX</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Example Supplier Beta BV</Nm>
<PstlAdr>
<StrtNm>Beispielweg</StrtNm>
<BldgNb>1</BldgNb>
<PstCd>12345</PstCd>
<TwnNm>Betadorp</TwnNm>
<Ctry>NL</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>NL84TEST0000000022</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice INV-1002</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>E2E-INV-1003</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">99.99</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BICFI>TESTDEFFXXX</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Example Supplier Gamma SARL</Nm>
<PstlAdr>
<StrtNm>Beispielweg</StrtNm>
<BldgNb>1</BldgNb>
<PstCd>12345</PstCd>
<TwnNm>Gammaville</TwnNm>
<Ctry>FR</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>FR7030000000000000000000033</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice INV-1003</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>E2E-INV-1004</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">4800.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BICFI>TESTDEFFXXX</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Example Supplier Delta SRL</Nm>
<PstlAdr>
<StrtNm>Beispielweg</StrtNm>
<BldgNb>1</BldgNb>
<PstCd>12345</PstCd>
<TwnNm>Deltapoli</TwnNm>
<Ctry>IT</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>IT54X0000000000000000000044</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice INV-1004</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>Element by element
Paths are relative to CstmrCdtTrfInitn. The SEPA column gives the rule of the EPC customer-to-PSP implementation guidelines (EPC132-08 2025 v1.0, section 2.1.1) and the BankLint rule that checks it.
| Element | Value in the example | Meaning | SEPA rule |
|---|---|---|---|
GrpHdr/MsgId | MSG-2026-0001 | Message reference set by the sender, 1 to 35 characters, unique per bank for a pre-agreed period. | Latin character set, no "/" at the start or end, no "//" (SEPA-SCT-ID-001). |
GrpHdr/CreDtTm | 2026-10-16T09:00:00 | Creation date and time (ISO date-time with a "T"). | As in ISO 20022. |
GrpHdr/NbOfTxs | 4 | Number of transactions in the whole file. | Checked against the transactions; validation depends on your agreement with the bank (SEPA-SCT-NBOFTXS-002). |
GrpHdr/CtrlSum | 6460.44 | Sum of all transaction amounts in the file. | Mandatory in SEPA, at most two decimals (SEPA-SCT-CTRLSUM-001, SEPA-SCT-CTRLSUM-003). |
GrpHdr/InitgPty/Nm | Synthetic Corp Example AG | The party that sends the file: the debtor or a party acting for it. | At most 70 characters (SEPA-SCT-NAME-001). |
PmtInf/PmtInfId | PMTINF-0001 | Reference of this payment information block. | Same character rules as MsgId (SEPA-SCT-ID-001). |
PmtInf/PmtMtd | TRF | Payment method: credit transfer. | Only TRF (SEPA-SCT-PMTMTD-001). |
PmtInf/BtchBookg | true | true requests one debit entry for the block, false one entry per transaction. | Optional; when absent, your agreement with the bank applies. |
PmtInf/NbOfTxs, PmtInf/CtrlSum | 4, 6460.44 | Totals of this block. | Both mandatory in SEPA (SEPA-SCT-NBOFTXS-001, SEPA-SCT-CTRLSUM-002). |
PmtInf/PmtTpInf/SvcLvl/Cd | SEPA | Service level: the payment follows the SEPA scheme. | Payment type information here or in every transaction (SEPA-SCT-PTI-001); only "SEPA" (SEPA-SCT-SVCLVL-001). |
PmtInf/ReqdExctnDt/Dt | 2026-10-20 | Requested execution date: the day the debtor account is to be debited. In .09 a choice of Dt or DtTm. | Use Dt: DtTm is not a SEPA core element (SEPA-SCT-CORE-002). |
PmtInf/Dbtr/Nm | Synthetic Corp Example AG | Name of the debtor (the originator). | Mandatory (SEPA-SCT-NAME-004), at most 70 characters (SEPA-SCT-NAME-002). |
PmtInf/Dbtr/PstlAdr | Street, number, post code, town, country | A structured address: separate elements, TwnNm and Ctry present, no AdrLine. | TwnNm and Ctry for structured or hybrid addresses (SEPA-SCT-ADDR-002), at most two AdrLine (SEPA-SCT-ADDR-001). See structured addresses. |
PmtInf/DbtrAcct/Id/IBAN | DE50100000000000000001 | The account to be debited. | Only IBAN (SEPA-SCT-DBTRACCT-001) with valid check digits (SEPA-SCT-IBAN-001). |
PmtInf/DbtrAgt/FinInstnId/BICFI | TESTDEFFXXX | BIC of the debtor’s bank. | BICFI, or Othr/Id "NOTPROVIDED" (SEPA-SCT-DBTRAGT-001). |
PmtInf/ChrgBr | SLEV | Charge bearer: charges follow the scheme rules. | Only SLEV, recommended at this level (SEPA-SCT-CHRGBR-001, SEPA-SCT-CHRGBR-002). |
CdtTrfTxInf/PmtId/EndToEndId | E2E-INV-1001 | The originator’s reference, passed unchanged to the creditor. | Latin character set, slash rules (SEPA-SCT-ID-002). |
CdtTrfTxInf/Amt/InstdAmt | Ccy="EUR", 1250.00 | Amount and currency of the payment. | Only EUR (SEPA-SCT-CCY-001), 0.01 to 999999999.99 (SEPA-SCT-AMT-001), at most two decimals (SEPA-SCT-AMT-002). Use InstdAmt, not EqvtAmt (SEPA-SCT-CORE-001). |
CdtTrfTxInf/CdtrAgt/FinInstnId/BICFI | TESTDEFFXXX | BIC of the creditor’s bank (optional). | Only BICFI; leave out CdtrAgt when no BIC is known (SEPA-SCT-CDTRAGT-001). |
CdtTrfTxInf/Cdtr/Nm | Example Supplier Alpha GmbH | Name of the creditor (the beneficiary). | Mandatory (SEPA-SCT-NAME-005), at most 70 characters (SEPA-SCT-NAME-003). |
CdtTrfTxInf/CdtrAcct/Id/IBAN | DE15200000000000000011 | The account to be credited. | Mandatory, only IBAN (SEPA-SCT-CDTRACCT-001) with valid check digits (SEPA-SCT-IBAN-002). |
CdtTrfTxInf/RmtInf/Ustrd | Invoice INV-1001 | Unstructured remittance information for the creditor. | One occurrence of up to 140 characters, not combined with Strd (SEPA-SCT-RMTINF-001, SEPA-SCT-RMTINF-002). See remittance information. |
Optional elements the example leaves out
CdtTrfTxInf/PmtId/InstrId: a point-to-point reference between you and your bank (1 to 35 characters).CdtTrfTxInf/PmtId/UETR: a UUID version 4 reference, new in.09; the schema pattern requires lowercase hexadecimal.UltmtDbtrandUltmtCdtr: the ultimate debtor or creditor when they differ from the account holders; their names are also limited to 70 characters.CdtTrfTxInf/PurpandPmtTpInf/CtgyPurp: purpose and category purpose codes.RmtInf/Strd: structured remittance information, for example an RF creditor reference, instead ofUstrd.
Try the variants
- The accepted file above: PASS.
- The same file with charge bearer SHAR: FAIL on SEPA-SCT-CHRGBR-001.
- The changed-configuration file: passes every rule, but its debtor address switched from structured to address lines, which a Flow reports for review against the accepted baseline. See payment-file regression testing.
Questions
What is the namespace of pain.001.001.09?
urn:iso:std:iso:20022:tech:xsd:pain.001.001.09. The root element is Document, and its only child is CstmrCdtTrfInitn.
Can one pain.001 file contain several debtor accounts or execution dates?
Yes. Debtor, debtor account, debtor agent and requested execution date belong to the payment information block (PmtInf), and a file may contain several blocks, each with its own transactions.
Is this sample real payment data?
No. It is synthetic test data from BankLint’s corpus: the companies, IBANs and the BIC TESTDEFFXXX are invented, although the IBANs have valid check digits.
Validate a pain.001 fileFree, no account needed, files are not stored.
More guides
- How to validate a pain.001 payment file
- pain.001 XSD validation errors and how to fix them
- pain.001.001.03 vs pain.001.001.09: what changed and how to migrate
- Structured, hybrid and unstructured addresses in SEPA pain.001
- IBAN and BIC in a SEPA pain.001
- Remittance information in a SEPA pain.001 (Ustrd, Strd, RF)
- SEPA Credit Transfer rules for pain.001.001.09
- Why banks reject pain.001 files
- Payment-file regression testing after SAP or TMS changes
- Charge bearer SLEV in SEPA credit transfers
- Control sum (CtrlSum) and number of transactions (NbOfTxs) in pain.001
- SEPA character set, names and identifiers