SEPA XML in a Nutshell 20

The intention of this post is to give you an understanding of what XML is, how it relates to SEPA and items to take note of. It will not give you the A-Z of XML, consult your technical resources for that and the EPC website.

Lets start with the basics, what is XML?

eXtensible Markup Language (XML) is a mark up language that is both human readable and machine readable. Oh right, so what does that mean? In short, if you look at a XML document you will have a good idea of the information within it. You’ll be able to see your payment batch information, your supplier name, their IBAN information and so on…. Using traditional file formats this information was included within the format, but it wasn’t obvious what was what, and where that information resided.

So, how does SEPA fit into this?

Well ISO 20022, the International Organisation for Standardisation, have used XML as the international standard format for their payment messages. This has been adopted by many banks and other financial institutions to simplify global business communication. The SEPA Credit Transfer and SEPA Direct Debit file formats are based on this ISO 20022 format.

If you visit the ISO 20022 website, go to the catalogue of messages and there you’ll see Payments. The Payments Initiation (PAIN… no jokes please..!) messages are the ones we’re interested in from a SEPA perspective.

You’ll see there that the current ISO version of PAIN for payment is PAIN.001.001.05. From experience, many corporates are using version 2 (PAIN.001.001.02) and most extensively version 3 (PAIN.001.001.03). For collections, the current ISO version is PAIN.008.001.04. For SEPA PAIN.008.001.02 is being widely used.

For further information about supported formats, refer to the SEPA rulebooks and your bank.

Supported ISO20022 Characters:

The following characters can be used:

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


0 1 2 3 4 5 6 7 8 9 / – ?: ( ) . , ‘ +


If your ERP allows other characters, you need to ensure they are replaced with one of the above permitted characters. Your file will fail / not be processed if a ‘local’ language character (e.g. ú, é)  is used.

Empty Tags

Ensure mandatory tags are populated. For example, IBAN is a mandatory tag, if it is missing the bank will not be able to process your sent payment / collection. Equally, if the tag is included but empty, it will also cause your file to fail at the bank.

<IBAN></IBAN> is bad since there is no information between ><

<IBAN>SEPAFORCORPORATES</IBAN> is better, apart from the obvious 😉

Message Structure:

There are 4 mandatory parts to the SEPA Credit Transfer Format (PAIN.001) and the SEPA Direct Debits (PAIN.008) XML file.

  • The definition of the file – here you state the file type and the version
  • The GroupHeader block:
    • This is identified by the tag <GrpHdr>
    • Here you tell the bank high level information about the file such as the date / time the file was created, the number of transactions and the total value of those transactions
    • There should only be 1 GroupHeader block
  • The PaymentInformation block:
    • This is identified by the tag <PmtInf>
    • Here you give the bank details of the batch, information such as the debit account (SEPA Credit Transfers) or credit account (SEPA Direct Debits), the value/execution date.
    • Your essentially defining how you would like the payments/collections within the batch to be processed
    • A file can contain multiple PaymentInformation blocks
  • The Transaction Information block:
    • Depending on the type of file and version, this identified by the tag:
      • < CreditTransferTransaction> for SEPA Credit Transfers (PAIN.001.001.03)
      • <DirectDebitTransactionInformation> for SEPA Direct Debits (PAIN.008.001.02)
    • Here you define the details of the particular transaction. For:
      • Credit Transfer – Payment Files
        • The Supplier/Creditor, the amount, Remittance information
      • Direct Debit – Collection Files
        • The customer/debtor, the amount, remittance information, mandate information
    • Each PaymentInformation block must contain corresponding Transaction Information block(s)
    • A file can contain multiple Transaction Information blocks

Just in case its not obvious from the above, a file can only contain either SEPA Credit Transfer or SEPA Direct Debit information. A file cannot contain a combination of both SEPA Credit Transfer or SEPA Direct Debit transactions.

There you have it, SEPA XML in a nutshell. Please do share any information you’ve picked up along the way….

If you found this post useful, kindly SHARE IT with your friends & colleagues!!

20 thoughts on “SEPA XML in a Nutshell

  1. Pingback: 10 Reasons Why SEPA is like Sitting High School Exams

  2. Pingback: Why SEPA Batch Booking Is Important - SEPA for Corporates

  3. Pingback: SEPA Compliance, Tick. What Next?

  4. Pingback: What Is A Payment Factory? Payment Factory Defintion - SEPA

  5. Pingback: ISO 20022 XML In Less Than 2 Minutes - SEPA for Corporates

  6. Pingback: Benefits of SEPA According to PWC - SEPA for Corporates

  7. Pingback: 3 Things You Ought To Know About SEPA BIC - SEPA for Corporates

  8. Pingback: Immediate Payments Not Available Anytime Soon

  9. Pingback: Corporate to Bank Connectivity - 10 Questions To Ask

  10. Pingback: The SALA in SEPA Salary Payments

  11. Pingback: SEPA Deadline: 1st February 2016 - The Countdown Begins ← SEPA for Corporates

  12. Pingback: CitiDirect - The Good, The Bad and The Ugly ← SEPA for Corporates

  13. Pingback: 7 Common XML Payments Errors You Need To Know

  14. Pingback: 7 Themes From the SWIFT Business Forum in London

  15. Pingback: 9 Challenges Posed by Legacy ERP Systems

  16. Pingback: 5 Ingredients for a Successful Regional Payments Scheme

  17. Pingback: I've Got 99 Problems But SWIFT Connectivity Ain't 1

  18. Pingback: 10 Key Benefits of XML Payments for Corporates

  19. Pingback: EU Euro Payments Must be SEPA Compliant by 31 Oct 2016

  20. Reply Thao Aug 4,2020 9:42 am

    What is the ratio of banks using pain.001.001.03 and pain.008.001.02?

Leave a Reply




This site uses Akismet to reduce spam. Learn how your comment data is processed.