IBAN Structure Mapping from FORMATS files

FORMATS-ALL and FORMATS-CTRY are the files provided by SWIFT as part of their evolved SWIFTRef portfolio. The files are provided through below directories.

  1. FORMATS-ALL through Payments Directory

  2. FORMATS-CTRY through Identifiers Directory

Ingestion of the FORMATS files will create records on the IBAN Structure dynamic configuration to help with IBAN deconstruction.

Client implementations can ingest FORMATS-ALL or FORMATS-CTRY file based on the directory they have subscribed to and both will offer the same functionality of IBAN deconstruction using the records created on IBAN structure dynamic configuration through the ingestion.

FORMATS-ALL File Types Supported

File Name Directory File Types Supported File Formats Supported File Naming Conventions

FORMATS-ALL

SWIFTRef Payments Directory

Full

XML, ZIP (XML)

FORMATS-ALL-V1-F-YYYY-MM-DD.xml

FORMATS-ALL

SWIFTRef Payments Directory

Daily Delta

XML, ZIP (XML)

FORMATS-ALL-V1-D-YYYY-MM-DD.xml

FORMATS-ALL

SWIFTRef Payments Directory

Monthly Delta

XML, ZIP (XML)

FORMATS-ALL-V1-M-YYYY-MM-DD.xml

FORMATS-CTRY

SWIFTRef Identifiers Directory

Full

XML, ZIP (XML)

FORMATS-CTRY-V1-F-YYYY-MM-DD.xml

FORMATS-CTRY

SWIFTRef Identifiers Directory

Daily Delta

XML, ZIP (XML)

FORMATS-CTRY-V1-D-YYYY-MM-DD.xml

FORMATS-CTRY

SWIFTRef Identifiers Directory

Monthly Delta

XML, ZIP (XML)

FORMATS-CTRY-V1-M-YYYY-MM-DD.xml

AWS S3 Ingestion identifies this file when the file name starts with "FORMATS". File type is identified using the file type flag value on the file name (F - Full, D - Daily Delta, M - Monthly Delta)
NOTE
  1. FORMATS files provide different type of records (ACCOUNT FORMAT STANDARD TYPE , ID FORMAT, IBAN FORMAT). Only IBAN format records are processed from the files to create entries on IBAN structure dynamic configuration. Other record types are not useful for IBAN deconstruction and hence are not loaded on dynamic configuration.

  2. The FORMATS files can be an XML file on its own or a ZIP version of the XML file. Both the versions are supported. Other files (Identifiers All) file is recommended to be a ZIP version and client implementations can choose to ingest ZIP versions of FORMATS files in line with Identifiers All file.

  3. Ingestion of TXT version of FORMATS file provided by SWIFT is not supported on IPF.

  4. Client implementations can subscribe to different frequencies of the files (Full file followed by daily delta or monthly delta). Daily and monthly ingestion frequencies should not be mixed. Where needed, daily and monthly delta file ingestion must be separated by a full file ingestion.

  5. Monthly ingestion of the files can create scheduled records on the party entity directory. After ingestion of the monthly delta files, the full files (if needed) should be ingested on the next scheduled date when the scheduled party entity records will have become active for given month. An out of sequence ingestion of full file (ahead of the next ingestion date) will need the scheduled entries to be deleted from party entity directory.

  6. While the Identifiers All file can be ingested for party entity look up and party entity look up performed using the entries added, the functionality of IBAN deconstruct and BIC Validation need configuration changes for these features to use the party entity records provided through this file. Refer application.conf for the config changes needed for enabling above features using the party entity records added through Identifiers All file.

The client implementations should not modify the files names provided by industry sources and ingest the files as received.

Mapping Definitions

Iban Structure V2 file to Iban Structure Directory mapping

Iban Structure Dynamic Config Attribute

FORMANTS-ALL Attribute

Comment

PartyEntity Directory Property (Destination)

Bank Directory Plus Property (Source)

Comment

processingEntity

Value = "UNKNOWN"

Industry data is global and common across all processing entities. processingEntity is a DPS specific attribute on the dynamic configuration.

activeFromDate

record_status, start_date

activeFromDate is a DPS specific attribute on the dynamic configuration. 1) When record_status value = C

. activeFromDate = START DATE (start_date) (if specified) . activeFromDate = CurrentDate + Time (START DATE not specified)

2) When record_status value = F

. activeFromDate = START DATE (start_date) (if specified) . Record skipped if START DATE is not available and a skipped event is raised

activeToDate

stop_date

ibanCountryCode

IBAN COUNTRY CODE (attribute_1)

ibanCountryCodePosition

IBAN COUNTRY CODE POSITION (attribute_4)

ibanCountryCodeLength

IBAN COUNTRY CODE LENGTH (attribute_5)

ibanCheckDigitsPosition

IBAN CHECK DIGITS POSITION (attribute_6)

ibanCheckDigitsLength

IBAN CHECK DIGITS LENGTH (attribute_7)

bankIdentifierPosition

BANK IDENTIFIER POSITION (attribute_8)

bankIdentifierLength

BANK IDENTIFIER LENGTH (attribute_9)

branchIdentifierLength

BRANCH IDENTIFIER LENGTH (attribute_11)

ibanNationalIdLength

IBAN NATIONAL ID POSITION (attribute_16)

accountNumberLength

IBAN ACCOUNT NUMBER LENGTH (attribute_13)

accountNumberPosition

IBAN ACCOUNT NUMBER POSITION (attribute_12)

ibanTotalLength

IBAN TOTAL LENGTH (attribute_14)

ibanNationalIdType

IBAN National Id Type (attribute_17)

ibanNationalIdPosition

IBAN NATIONAL ID POSITION (attribute_15)

Example Mappings

Source Record from Industry file

<?xml version="1.0" encoding="UTF-8"?>
<dataexport product="formats-ctry-v1" filetype="full" filedate="20240408">
	<formats-ctry-v1>
		<modification_type>A</modification_type>
		<record_key>FO000000025M</record_key>
		<record_structure>ACCOUNT FORMAT STANDARD TYPE</record_structure>
		<record_content_type>H</record_content_type>
		<record_status>RECORD STATUS</record_status>
		<start_date>START DATE</start_date>
		<stop_date>STOP DATE</stop_date>
		<attribute_1>COUNTRY CODE</attribute_1>
		<attribute_2>COUNTRY NAME</attribute_2>
		<attribute_3>ACCOUNT NB FORMAT STANDARD TYPE</attribute_3>
		<attribute_4>DESCRIPTION</attribute_4>
		<attribute_5>DESCRIPTION IN LL</attribute_5>
		<attribute_6>ACRONYM</attribute_6>
		<attribute_7>FORMAT EXAMPLE WITH SEPARATORS</attribute_7>
		<attribute_8>FORMAT EXAMPLE WITHOUT SEPARATORS</attribute_8>
		<attribute_9>LETTER FORMAT</attribute_9>
		<attribute_10>REGEX FORMAT</attribute_10>
		<attribute_11>ELEMENT NAMES</attribute_11>
		<attribute_12>MIN LENGTH</attribute_12>
		<attribute_13>MAX LENGTH</attribute_13>
		<attribute_14>ID TYPE</attribute_14>
		<attribute_15>PRESENCE</attribute_15>
		<attribute_16>NOTES</attribute_16>
		<attribute_17>BIC6</attribute_17>
		<attribute_18>BANK ID FROM</attribute_18>
		<attribute_19>BANK ID TO</attribute_19>
	</formats-ctry-v1>
	<formats-ctry-v1>
		<modification_type>A</modification_type>
		<record_key>FO000000037C</record_key>
		<record_structure>ACCOUNT FORMAT STANDARD TYPE</record_structure>
		<record_content_type>D</record_content_type>
		<record_status>C</record_status>
		<attribute_1>AO</attribute_1>
		<attribute_2>ANGOLA</attribute_2>
		<attribute_3>national</attribute_3>
		<attribute_4>account number</attribute_4>
		<attribute_5>Número de Identificação Bancária</attribute_5>
		<attribute_7>005200000209187410000</attribute_7>
		<attribute_8>005200000209187410000</attribute_8>
		<attribute_9>BBBBRRRRAAAAAAAAAAAAA</attribute_9>
		<attribute_10>[0-9]{4}[0-9]{4}[0-9]{13}</attribute_10>
		<attribute_11>&quot;BANK_CODE,BRANCH_CODE,ACCOUNT&quot;</attribute_11>
		<attribute_12>21</attribute_12>
		<attribute_13>21</attribute_13>
		<attribute_15>n/a</attribute_15>
	</formats-ctry-v1>
	<formats-ctry-v1>
		<modification_type>A</modification_type>
		<record_key>FO000000025N</record_key>
		<record_structure>ID FORMAT</record_structure>
		<record_content_type>H</record_content_type>
		<record_status>RECORD STATUS</record_status>
		<start_date>START DATE</start_date>
		<stop_date>STOP DATE</stop_date>
		<attribute_1>COUNTRY CODE</attribute_1>
		<attribute_2>COUNTRY NAME</attribute_2>
		<attribute_3>ID TYPE</attribute_3>
		<attribute_4>DESCRIPTION</attribute_4>
		<attribute_5>DESCRIPTION IN LL</attribute_5>
		<attribute_6>ACRONYM</attribute_6>
		<attribute_7>FORMAT EXAMPLE WITH SEPARATORS</attribute_7>
		<attribute_8>FORMAT EXAMPLE WITHOUT SEPARATORS</attribute_8>
		<attribute_9>LETTER FORMAT</attribute_9>
		<attribute_10>REGEX FORMAT</attribute_10>
		<attribute_11>ELEMENT NAMES</attribute_11>
		<attribute_12>MIN LENGTH</attribute_12>
		<attribute_13>MAX LENGTH</attribute_13>
		<attribute_14>ID USAGE</attribute_14>
		<attribute_15>NOTES</attribute_15>
		<attribute_16>ISO CLC TYPE</attribute_16>
		<attribute_17>NATIONAL ID TYPE</attribute_17>
	</formats-ctry-v1>
	<formats-ctry-v1>
		<modification_type>A</modification_type>
		<record_key>FO00000001XV</record_key>
		<record_structure>ID FORMAT</record_structure>
		<record_content_type>D</record_content_type>
		<record_status>C</record_status>
		<attribute_1>AO</attribute_1>
		<attribute_2>ANGOLA</attribute_2>
		<attribute_3>AO-NCC8</attribute_3>
		<attribute_4>Angola's national clearing code.</attribute_4>
		<attribute_5>Bank Branch Code</attribute_5>
		<attribute_7>04060000</attribute_7>
		<attribute_8>04060000</attribute_8>
		<attribute_9>BBBBRRRR</attribute_9>
		<attribute_10>[0-9]{4}[0-9]{4}</attribute_10>
		<attribute_11>&quot;BANK_CODE,BRANCH_CODE&quot;</attribute_11>
		<attribute_12>8</attribute_12>
		<attribute_13>8</attribute_13>
		<attribute_17>BNA</attribute_17>
	</formats-ctry-v1>
	<formats-ctry-v1>
		<modification_type>A</modification_type>
		<record_key>FO00000005MP</record_key>
		<record_structure>IBAN FORMAT</record_structure>
		<record_content_type>H</record_content_type>
		<record_status>RECORD STATUS</record_status>
		<start_date>START DATE</start_date>
		<stop_date>STOP DATE</stop_date>
		<attribute_1>IBAN COUNTRY CODE</attribute_1>
		<attribute_2>IBAN COUNTRY NAME</attribute_2>
		<attribute_3>ACCOUNT FORMAT ID</attribute_3>
		<attribute_4>IBAN COUNTRY CODE POSITION</attribute_4>
		<attribute_5>IBAN COUNTRY CODE LENGTH</attribute_5>
		<attribute_6>IBAN CHECK DIGITS POSITION</attribute_6>
		<attribute_7>IBAN CHECK DIGITS LENGTH</attribute_7>
		<attribute_8>BANK IDENTIFIER POSITION</attribute_8>
		<attribute_9>BANK IDENTIFIER LENGTH</attribute_9>
		<attribute_10>BRANCH IDENTIFIER POSITION</attribute_10>
		<attribute_11>BRANCH IDENTIFIER LENGTH</attribute_11>
		<attribute_12>IBAN ACCOUNT NUMBER POSITION</attribute_12>
		<attribute_13>IBAN ACCOUNT NUMBER LENGTH</attribute_13>
		<attribute_14>IBAN TOTAL LENGTH</attribute_14>
		<attribute_15>IBAN NATIONAL ID POSITION</attribute_15>
		<attribute_16>IBAN NATIONAL ID LENGTH</attribute_16>
		<attribute_17>IBAN NATIONAL ID TYPE</attribute_17>
		<attribute_18>DOMESTIC ACCOUNT NUMBER POSITION</attribute_18>
		<attribute_19>DOMESTIC ACCOUNT NUMBER LENGTH</attribute_19>
		<attribute_20>DOMESTIC ACCOUNT FORMAT ID</attribute_20>
		<attribute_21>SEPA</attribute_21>
		<attribute_22>IBAN PRESENCE</attribute_22>
		<attribute_23>REUSED BY</attribute_23>
	</formats-ctry-v1>
	<formats-ctry-v1>
		<modification_type>A</modification_type>
		<record_key>FO00000005JO</record_key>
		<record_structure>IBAN FORMAT</record_structure>
		<record_content_type>D</record_content_type>
		<record_status>C</record_status>
		<attribute_1>AD</attribute_1>
		<attribute_2>ANDORRA</attribute_2>
		<attribute_3>ANF0006</attribute_3>
		<attribute_4>1</attribute_4>
		<attribute_5>2</attribute_5>
		<attribute_6>3</attribute_6>
		<attribute_7>2</attribute_7>
		<attribute_8>5</attribute_8>
		<attribute_9>4</attribute_9>
		<attribute_10>9</attribute_10>
		<attribute_11>4</attribute_11>
		<attribute_12>13</attribute_12>
		<attribute_13>12</attribute_13>
		<attribute_14>24</attribute_14>
		<attribute_15>5</attribute_15>
		<attribute_16>8</attribute_16>
		<attribute_17>AD-CBO8</attribute_17>
		<attribute_19>0</attribute_19>
		<attribute_20/>
		<attribute_21>Y</attribute_21>
		<attribute_22>Mandatory</attribute_22>
	</formats-ctry-v1>
</dataexport>

Destination Record IBAN Structure

{
  "ibanCountryCode": "AD",
  "ibanCountryCodePosition": 1,
  "ibanCountryCodeLength": 2,
  "ibanCheckDigitsPosition": 3,
  "ibanCheckDigitsLength": 2,
  "bankIdentifierPosition": 5,
  "bankIdentifierLength": 4,
  "branchIdentifierLength": 4,
  "ibanNationalIdLength": 8,
  "accountNumberPosition": 13,
  "accountNumberLength": 12,
  "ibanTotalLength": 24
}