Skip to main content

XML Format

The XML (Extensible Markup Language) format provides a structured, industry-standard approach to payment imports based on the ISO 20022 standard. This format is ideal for automated system-to-system integration and SEPA credit transfers.

Overview​

XML format benefits:

βœ… ISO 20022 Standard - International banking standard
βœ… SEPA Compliant - pain.001.001.03 message format
βœ… Machine-readable - Structured hierarchical data
βœ… Validation - XSD schema validation
βœ… Multilingual - UTF-8 encoding support
βœ… Automation - Perfect for system integration
βœ… Character conversion - EPC recommended conversion table


File Requirements​

Basic Specifications​

  • File extension: .xml
  • Encoding: UTF-8
  • Standard: ISO 20022 pain.001.001.03
  • Schema: XSD (XML Schema Definition)
  • Message: CustomerCreditTransferInitiationV03
  • Purpose: Credit transfer initiation

###Type of Messages

The XML format supports:

MessageDescription
pain.001.001.03Customer Credit Transfer Initiation
Bank statementsAccount operations report (future)

Message Structure​

XML Document Structure​

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<!-- Message content -->
</Document>

Main Elements​

The message consists of three main parts:

Document
└── CstmrCdtTrfInitn (Customer Credit Transfer Initiation)
β”œβ”€β”€ GrpHdr (Group Header) - Mandatory, No repeat
β”œβ”€β”€ PmtInf (Payment Information) - Mandatory, Repeatable
β”‚ └── CdtTrfTxInf (Transaction Information) - Mandatory, Repeatable
└── PmtInf (additional payment batches...)

1. Group Header (GrpHdr)​

Mandatory | No Repeat

Contains characteristics shared by all transactions in the message.

Key Fields​

ElementDescriptionExample
MsgIdUnique message identificationMSG-2023-12-15-001
CreDtTmCreation date and time2023-12-15T14:30:25
NbOfTxsNumber of transactions3
CtrlSumTotal of all amounts2500.00
InitgPtyInitiating party nameCompany Name

Example​

<GrpHdr>
<MsgId>MSG-2023-12-15-001</MsgId>
<CreDtTm>2023-12-15T14:30:25</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>2500.00</CtrlSum>
<InitgPty>
<Nm>ABC Company Ltd</Nm>
</InitgPty>
</GrpHdr>

2. Payment Information (PmtInf)​

Mandatory | Repeatable

Contains debit-side characteristics that apply to a group of transactions.

Key Fields​

ElementDescriptionExample
PmtInfIdPayment information IDPMT-BATCH-001
PmtMtdPayment methodTRF (Transfer)
PmtTpInfPayment type informationService level (SEPA)
ReqdExctnDtRequested execution date2023-12-20
DbtrDebtor (payer) informationName, account
DbtrAcctDebtor accountIBAN
DbtrAgtDebtor agent (bank)BIC
UltmtDbtrUltimate debtorFinal payer information
ChrgBrCharge bearerSLEV, SHAR, CRED, DEBT
BtchBookgBatch bookingtrue or false (optional)
NbOfTxsNumber of transactionsCount (optional)
CtrlSumControl sumTotal amount (optional)

Charge Bearer Codes​

CodeNameDescription
SLEVService LevelFollowing service level agreement
SHARSharedCharges shared between debtor and creditor
CREDCreditorAll charges borne by creditor
DEBTDebtorAll charges borne by debtor

Example with SEPA​

<PmtInf>
<PmtInfId>PMT-BATCH-001</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2023-12-20</ReqdExctnDt>
<Dbtr>
<Nm>ABC Company Ltd</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>LT123456789012345678</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>HABALT22</BIC>
</FinInstnId>
</DbtrAgt>
<UltmtDbtr>
<Nm>John Doe</Nm>
<Id>
<OrgId>
<Othr>
<Id>123456789</Id>
<SchmeNm>
<Cd>COID</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</UltmtDbtr>
<ChrgBr>SLEV</ChrgBr>
<!-- Transaction Information follows -->
</PmtInf>

3. Transaction Information (CdtTrfTxInf)​

Mandatory | Repeatable (within PmtInf)

Contains individual transaction details.

Key Fields​

ElementDescriptionExample
PmtIdPayment identificationInstruction ID, End-to-End ID
AmtAmountCurrency and value
CdtrCreditor (beneficiary)Name
CdtrAcctCreditor accountIBAN
CdtrAgtCreditor agent (bank)BIC (optional for SEPA)
RmtInfRemittance informationPayment description

Example​

<CdtTrfTxInf>
<PmtId>
<InstrId>TXN-001</InstrId>
<EndToEndId>INV-2023-001</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">500.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>John Smith</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>LT987654321098765432</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice payment for December 2023</Ustrd>
</RmtInf>
</CdtTrfTxInf>

Complete Example: SEPA Payment​

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<CstmrCdtTrfInitn>

<!-- GROUP HEADER -->
<GrpHdr>
<MsgId>018be78e4c6aa105d2e26fb28fe6ae40</MsgId>
<CreDtTm>2016-06-23T09:21:13</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>120</CtrlSum>
<InitgPty>
<Nm>SiuntΔ—jas</Nm>
</InitgPty>
</GrpHdr>

<!-- PAYMENT INFORMATION -->
<PmtInf>
<PmtInfId>43164652</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<!-- SEPA Service Level -->
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2016-06-23</ReqdExctnDt>

<!-- DEBTOR (PAYER) -->
<Dbtr>
<Nm>SiuntΔ—jas</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>LV70HABA0551016193780</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>HABALV22XXX</BIC>
</FinInstnId>
</DbtrAgt>

<!-- ULTIMATE DEBTOR -->
<UltmtDbtr>
<Nm>Vardenis Pavardenis</Nm>
<Id>
<OrgId>
<Othr>
<Id>C56251</Id>
<SchmeNm>
<Cd>COID</Cd>
</SchmeNm>
</Othr>
</OrgId>
</Id>
</UltmtDbtr>

<!-- CHARGE BEARER -->
<ChrgBr>SLEV</ChrgBr>

<!-- TRANSACTION -->
<CdtTrfTxInf>
<PmtId>
<InstrId>43164652</InstrId>
<EndToEndId>43164652</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">10.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>HABALV22XXX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Vardenis Pavardenis</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>LV30HABA0551020958461</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Paskirtis</Ustrd>
</RmtInf>
</CdtTrfTxInf>

</PmtInf>

</CstmrCdtTrfInitn>
</Document>

Complete Example: Multiple Payments​

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<CstmrCdtTrfInitn>

<!-- GROUP HEADER -->
<GrpHdr>
<MsgId>MSG-SALARIES-2023-12</MsgId>
<CreDtTm>2023-12-15T14:30:25</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>3500.00</CtrlSum>
<InitgPty>
<Nm>ABC Company Ltd</Nm>
</InitgPty>
</GrpHdr>

<!-- PAYMENT INFORMATION BATCH -->
<PmtInf>
<PmtInfId>SALARY-BATCH-DEC-2023</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>false</BtchBookg>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>3500.00</CtrlSum>
<ReqdExctnDt>2023-12-30</ReqdExctnDt>

<!-- DEBTOR -->
<Dbtr>
<Nm>ABC Company Ltd</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>LT123456789012345678</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>HABALT22</BIC>
</FinInstnId>
</DbtrAgt>

<!-- TRANSACTION 1 -->
<CdtTrfTxInf>
<PmtId>
<InstrId>SAL-001</InstrId>
<EndToEndId>SALARY-JOHN-DEC</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">1200.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>John Smith</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>LT111111111111111111</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Salary December 2023</Ustrd>
</RmtInf>
</CdtTrfTxInf>

<!-- TRANSACTION 2 -->
<CdtTrfTxInf>
<PmtId>
<InstrId>SAL-002</InstrId>
<EndToEndId>SALARY-JANE-DEC</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">1300.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>Jane Doe</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>LT222222222222222222</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Salary December 2023</Ustrd>
</RmtInf>
</CdtTrfTxInf>

<!-- TRANSACTION 3 -->
<CdtTrfTxInf>
<PmtId>
<InstrId>SAL-003</InstrId>
<EndToEndId>SALARY-BOB-DEC</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">1000.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>Bob Johnson</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>LT333333333333333333</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Salary December 2023</Ustrd>
</RmtInf>
</CdtTrfTxInf>

</PmtInf>

</CstmrCdtTrfInitn>
</Document>

Character Set​

Supported Characters​

XML format supports multilingual UTF-8 encoding. The following Latin character set is mandatory:

Letters:

a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Digits:

0 1 2 3 4 5 6 7 8 9

Special characters:

/ - ? : ( ) . , ' + Space

Character Conversion​

All other UTF-8 characters in payments are converted according to the EPC recommended conversion table.

Examples of conversion:

OriginalConvertedDescription
Δ…aLithuanian
Δ—eLithuanian
Ε³uLithuanian
ΕΎzLithuanian
Γ€aGerman
ΓΆoGerman
€EUREuro symbol

Validation​

XSD Schema Validation​

XML files must be validated against the pain.001.001.03.xsd schema:

xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd"

Control Validation​

Group Header CtrlSum must equal sum of all amounts:

GrpHdr/CtrlSum = Sum of all CdtTrfTxInf/Amt

Group Header NbOfTxs must equal total transaction count:

GrpHdr/NbOfTxs = Count of all CdtTrfTxInf elements

Payment Info CtrlSum must equal sum of batch amounts:

PmtInf/CtrlSum = Sum of CdtTrfTxInf/Amt in that PmtInf

ISO 20022 Message Elements​

For complete message element definitions, refer to:

πŸ“š ISO 20022 Message Definitions

This includes detailed descriptions of:

  • pain.001.001.03 structure
  • Element data types
  • Business rules
  • Usage guidelines

Downloads​

Official Files​

πŸ“₯ Example XML file - SEPA payment example

πŸ“₯ ISO 20022 Documentation - Official standard documentation


Common Use Cases​

1. SEPA Credit Transfers​

<PmtMtd>TRF</PmtMtd>

Standard SEPA euro payments within EU/EEA.

2. Salary Payments​

<PmtInf>
<PmtInfId>SALARY-BATCH-2023-12</PmtInfId>
<BtchBookg>false</BtchBookg>
<!-- Multiple employee payments -->
</PmtInf>

Batch processing of multiple salary payments.

3. Supplier Payments​

<RmtInf>
<Ustrd>Invoice INV-2023-001 payment</Ustrd>
</RmtInf>

Payment with invoice reference.

4. International Transfers​

<CdtrAgt>
<FinInstnId>
<BIC>CHASUS33</BIC>
</FinInstnId>
</CdtrAgt>

Non-SEPA payments with BIC code.


Best Practices​

βœ… DO​

  • Validate against XSD schema before sending
  • Use UTF-8 encoding
  • Include unique message IDs
  • Verify control sums match totals
  • Provide clear payment descriptions
  • Use IBAN format for all accounts
  • Include BIC for international transfers
  • Test with small batches first

❌ DON'T​

  • Use unsupported special characters
  • Exceed field length limits
  • Mix different currency in same batch
  • Forget namespace declarations
  • Use invalid date formats
  • Omit mandatory fields
  • Create files with multiple Document tags

Error Handling​

Common Validation Errors​

ErrorCauseSolution
Schema validation failedInvalid XML structureCheck against XSD schema
Control sum mismatchSum doesn't match totalRecalculate CtrlSum
Invalid IBANIncorrect account formatValidate IBAN checksum
Missing namespacexmlns not declaredAdd proper namespace
Invalid charactersUnsupported UTF charsUse conversion table
Wrong date formatIncorrect datetimeUse ISO 8601 format

XML vs Other Formats​

FeatureXMLMOKESISTARESISXLS
StandardISO 20022PayseraPayseraManual
StructureHierarchicalFlatFlatTable
ValidationXSD schemaManualManualManual
SEPAβœ… Native❌❌❌
Automation⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Internationalβœ… Full❌ Limitedβœ… Full❌
ComplexityHighMediumHighLow
Best forSystemsBulkIntl routingManual

When to Use XML​

βœ… Use XML format for:

  • SEPA credit transfers
  • System-to-system integration
  • ERP/accounting software exports
  • Large volume automated payments
  • International standard compliance
  • Banking APIs and web services
  • Multi-currency transactions
  • Structured payment data

❌ Use other formats for:

  • Manual data entry β†’ XLS
  • Simple bulk imports β†’ MOKESIS
  • Complex routing needs β†’ TARESIS
  • FiDAViSta systems β†’ FiDAViSta

Support​

Need help with XML format?


Next Steps​

  1. Download example β†’ - Get sample XML file
  2. Review ISO 20022 β†’ - Study standard
  3. Generate from your system - Export XML from ERP
  4. Validate - Check against XSD schema
  5. Import to Paysera - Upload and process

Additional Resources​