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.
-
FORMATS-ALL through
Payments Directory -
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
-
-
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 structuredynamic configuration. Other record types are not useful for IBAN deconstruction and hence are not loaded on dynamic configuration. -
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.
-
Ingestion of TXT version of FORMATS file provided by SWIFT is not supported on IPF.
-
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.
-
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.
-
While the
Identifiers Allfile 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 throughIdentifiers Allfile.
-
| 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>"BANK_CODE,BRANCH_CODE,ACCOUNT"</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>"BANK_CODE,BRANCH_CODE"</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
}