ISO 20022 Credit Transfer — pain.001 (XML)
A sample ISO 20022 customer credit-transfer initiation (pain.001.001.09) — a single payment with debtor/creditor parties, IBANs, BICs, amount, and remittance info. IBANs are published documentation examples; a fixture for testing payment-message parsers and bank integrations.
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>NOVUS-SAMPLE-0001</MsgId>
<CreDtTm>2026-01-15T09:30:00</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>1250.00</CtrlSum>
<InitgPty><Nm>Example Trading Ltd</Nm></InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>PMT-0001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>1250.00</CtrlSum>
<ReqdExctnDt><Dt>2026-01-16</Dt></ReqdExctnDt>
<Dbtr><Nm>Example Trading Ltd</Nm></Dbtr>
<DbtrAcct><Id><IBAN>GB33BUKB20201555555555</IBAN></Id></DbtrAcct>
<DbtrAgt><FinInstnId><BICFI>BUKBGB22</BICFI></FinInstnId></DbtrAgt>
<CdtTrfTxInf>
<PmtId><EndToEndId>INV-2026-0042</EndToEndId></PmtId>
<Amt><InstdAmt Ccy="EUR">1250.00</InstdAmt></Amt>
<CdtrAgt><FinInstnId><BICFI>DEUTDEFF</BICFI></FinInstnId></CdtrAgt>
<Cdtr><Nm>Beispiel Lieferant GmbH</Nm></Cdtr>
<CdtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></CdtrAcct>
<RmtInf><Ustrd>Invoice INV-2026-0042</Ustrd></RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Specifications
- Standard
- ISO 20022 pain.001.001.09
- Transactions
- 1
- Note
- sample; IBANs are published documentation examples
What is a .xml file?
XML (Extensible Markup Language) is a verbose, self-describing markup language using nested tags, attributes, and namespaces to represent structured, hierarchical data. It supports schemas, entities, and validation and underlies many document and data formats. It remains common in enterprise, publishing, and interchange contexts.
How to use this file
Use an example XML file to test parsers, namespace and schema validation, XPath queries, and protection against entity-expansion and external-entity attacks.
Code examples
import xml.etree.ElementTree as ET
tree = ET.parse("iso20022-pain001.xml")
root = tree.getroot()
print(root.tag, [c.tag for c in root][:5])Related files
- csvBank Transactions (CSV, 60 rows)A bank-transaction statement — 60 debits and credits across three accounts (masked numbers) with running balances, categories, and merchants. Synthetic data for testing statement parsers, categorisation, and reconciliation.

- jsonBank Transactions (JSON, 60 records)The bank transactions as a JSON array — the format twin of the CSV, for import and reconciliation testing.

- csvE-commerce Customers (CSV, 500 rows)A realistic e-commerce customer directory (500 rows) — part of a relational dataset (products, customers, orders) with CSV, JSON, SQL, and Parquet twins for testing joins, imports, and conversion.

- jsonE-commerce Customers (JSON, 500 records)The e-commerce customers table as a JSON array — the format twin of the CSV, for import and conversion testing.

- sqlE-commerce Database Schema (SQL)A relational SQL schema (products, customers, orders with primary and foreign keys) plus sample INSERTs — the DDL twin of the e-commerce dataset, for testing schema import and migrations.

- csvE-commerce Orders (CSV, 2000 rows)A realistic e-commerce order lines (customer_id → customers, product_id → products) (2000 rows) — part of a relational dataset (products, customers, orders) with CSV, JSON, SQL, and Parquet twins for testing joins, imports, and conversion.

Generated by generation/data_domains.py. Free for any use, no attribution required — license.