SEPA Conversion Table

Overview

Whilst ISO 20022 XML message standards permit the full UNICODE UTF-8 character set, the European Payments Council (EPC) recommends restricting usage to the Basic Latin Character Set unless otherwise agreed. Any character outside this permitted set can be converted according to the SEPA Conversion Table which is available here

The Character Replacement library provides the mechanism to perform character conversions, and the SEPA Conversion Table library supplies the predefined SEPA conversion mappings. This makes it easy to configure the character replacer to perform conversions in line with SEPA specifications.

Permitted Character Set

The EPC recommends the following characters:

Lowercase 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

Uppercase 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

Digits: 0 1 2 3 4 5 6 7 8 9

Special characters: / - ? : ( ) . , ' + Space

The character replacement library follows EPC recommendations:

  • Characters belonging to the Basic Latin set are accepted and do not need to be converted.

  • Characters outside the allowed Basic Latin set but defined in the SEPA Conversion Table are converted using the recommended mappings.

  • Any ISO character not listed in the SEPA Conversion Table — meaning characters outside the basic latin character set or those without a meaningful replacement will be converted to a full stop (.)

The SEPA Conversion Table is liable to change. For example, updates may occur if the EPC expands the basic latin character set or if a country using unsupported local-language characters joins SEPA.

Recommendations for Payment Submission

  • Customers should aim to submit payments with valid characters. The SEPA conversion library helps achieve this by applying EPC-compliant character conversions.

Using SEPA Conversion in Custom Scheme Packs

Customers implementing their own scheme packs can enable SEPA character conversion by adding the SEPA Conversion Table dependency and configuring the character replacer as required.

Maven Dependency

When using the CSM Release Management BOM, you do not need to specify a version — the BOM will automatically provide a compatible version.

 <dependency>
    <groupId>com.iconsolutions.ipf.payments.csm</groupId>
    <artifactId>sepa-csm-character-replacement</artifactId>
 </dependency>

Configuration

The following is the configuration to enable SEPA character conversion in custom scheme packs. This configuration loads the SEPA Conversion Table CSV and applies necessary overrides to restrict character expansion. These overrides ensure that converted values do not exceed field length limits, thereby preventing data validation or truncation errors.

These overrides ensure that any character which would normally expand into multiple characters is instead replaced with a single full stop (.)

character-replacements {
  lookup-table-replacer {
    enabled = true
    csv-source = "classpath:sepa-conversion-csvs/SEPA_Conversion_All_Conversions.csv"
    fallback-replacement = "."
    overrides += {character-codepoint = "\\u0398", replacement = "."}
    overrides += {character-codepoint = "\\u03A7", replacement = "."}
    overrides += {character-codepoint = "\\u03A8", replacement = "."}
    overrides += {character-codepoint = "\\u03B8", replacement = "."}
    overrides += {character-codepoint = "\\u03C7", replacement = "."}
    overrides += {character-codepoint = "\\u03C8", replacement = "."}
    overrides += {character-codepoint = "\\u0416", replacement = "."}
    overrides += {character-codepoint = "\\u0426", replacement = "."}
    overrides += {character-codepoint = "\\u0427", replacement = "."}
    overrides += {character-codepoint = "\\u0428", replacement = "."}
    overrides += {character-codepoint = "\\u0429", replacement = "."}
    overrides += {character-codepoint = "\\u0436", replacement = "."}
    overrides += {character-codepoint = "\\u0446", replacement = "."}
    overrides += {character-codepoint = "\\u0447", replacement = "."}
    overrides += {character-codepoint = "\\u0448", replacement = "."}
    overrides += {character-codepoint = "\\u0449", replacement = "."}
    overrides += {character-codepoint = "\\u042E", replacement = "."}
    overrides += {character-codepoint = "\\u042F", replacement = "."}
    overrides += {character-codepoint = "\\u044E", replacement = "."}
    overrides += {character-codepoint = "\\u044F", replacement = "."}
  }
}

Refer Sample Downstream Config for guidance on merging additional overrides with base configuration.