NAV

EFI Data Protocols

For Financial Institutions, it is critical to maintain and increase correspondent banking relationships, as well as to manage financial crime risk effectively.

The EFI provides a number of enterprise solutions to enable more targeted and effective FinCrime risk management.

Critically, we enable our clients to understand and evidence FinCrime risk profiles, and to control the narrative around FinCrime risk with Correspondents, Regulators and other counterparties.

In this page you will find all necessary data protocols you will need to extract from your system in order for Elucidate to perform the Elucidate FinCrime Index assessment.

Download all sample package here

Change Log

Versions 0.1 to 0.11 Changes

Version Date Change
0.1 01.11.2018 Initial private version
0.2 15.11.2018 Added anonymisation mechanism
0.5 13.12.2018 Link samples to EFI version
0.6 01.10.2019 Improved transaction file
0.7 27.01.2020 Improved transaction file
0.8 26.02.2020 Improved customer data protocol
0.9 03.06.2020 Improved sanctions and transactions screening protocol
0.10 11.09.2020 New fields and types added
0.11 29.10.2020 Attribute details tables for all files and new fields and types and added
1.0 04.01.2021 Improved description of attributes and new data attributes added. Updates on Anonymisation, Security and Common Types
2.0 01.03.2023

Version 1.0 Changes

Section Changes
Customer Data Added the following two new data attributes:
- account_suspended
- account_suspended_date

Improved description of the following data attributes:
- isic_code
- product_usage
- source_of_wealth
- source_of_funds
- account_suspended
- account_suspended_date
Customer Associated Parties Added the following two new data attributes:
- associated_countries
- ultimate_beneficial_owner

Improved description of the following data attributes:
- account_number
- entity_type
- beneficial_owner_name
- beneficial_owner_share_percentage
- director_name
- signatory_name
- date_of_birth
Transactions Improved description of the following data attributes:
- transaction_id
- incoming_intermediary_fi_bic
- outgoing_intermediary_fi_bic
Employee Data Added the following new data attribute:
- contract_consultant

Improved description of the following data attributes:
- employee_outside_business_organisation
Employee Training & Conduct Improved description of the following data attributes:
- training_subject
Product Report Updated title of data attributes from product_mapped_to_elucidate_standard_product_list to mapped_product

Added the following new data attribute:
- product_id
Sanctions Screening Added the following two new data attributes:
- alert_transaction_id
- alert_list_name
Transaction Monitoring Added the following new data attribute:
- alert_list_entry_name
Affiliates Report Added the following new data attribute:
- affiliate_percent_ownership
Vendors Added the following three new data attributes:
- service_provided
- vendor_id
- vendor_address_country
Anonymisation Improved the description to request an anonymisation data submission file each month with sample names anonymised and detail of the header fields required in a file
Security Changed text for encryption of data to public instead of private key
Not Collected Added not_collected string in the Common Types section to cover where data points are not available to be provided.

Version 1.2 Changes

Data protocol changes will be released on May 15th 2022 both on documentation and for new clients currently onboarding also on the platform. Existing clients will have individual timeline agreed with Customer Success Manager to switch to new formats until October 2022

Quick View

Old files v1.1 New files v1.2
Transactions Transactions
Customers Account Holder
Employee Data Employee Data
Sanctions Screening Sanctions Screening
Transaction Monitoring Transaction Monitoring
Product Report Product Report
Affiliates Report Affiliates Report
Vendors Vendors
Employee Training & Conduct
Customer Associated Parties
Accounts
Account-Holder Ref
Watchlist Management

Detailed View

Old Files New Files Data Format Changes
Transactions Transactions No changes to data points
Customers and Customers Associated Parties Accounts, Account Holder, and Account-Holder Ref Splitting customer and customers associated file into Accounts, Account Holders, and Account-Holder Ref.

Accounts will include:
- account_number
- cash_balance_amount
- cash_balance_currency
- account_open_date
- account_close_date
- account_close_reason
- account_suspended
- account_suspended_date
- account_opening_type
- branch_id
- relationship_manager_employee_id
- product_usage

Account holders file will include:
- account_holder_id
- full_name
- first_name
- middle_names_patronmyic
- last_name
- date_of_birth
- place_of_birth_city
- place_of_birth_country
- country_citizenship
- document_present
- address
- address_country
- address_postal_code
- address_city
- legal_entity_identifier
- legal_entity_type
- legal_form
- isic_code
- adverse_information_search
- adverse_information_search_date
- net_worth_amount
- source_of_wealth
- source_of_funds
- initial_cdd_completion_date
- last_cdd_review_date
- system_risk_rating
- pep_status
- associate_pep_status
- edd_triggered
- branch_id
- relationship_manager_employee_id
- is_sanctioned
- sanction_screening_date

Account-Holder Ref will include:
- account_holder_id
- account_number
- beneficial_owner_documentation
- is_beneficial_owner
- owner_share_percentage
- is_director
- is_signatory
- ultimate_beneficial_owner


We will require a parent and child account number to show the link between accounts where applicable. in instances where there is a parent and child account; account_number_parent would be the parent and account_number would be the child
Employee and Employee Training Employee Data Merged the Employee Training & Conduct file with the Employee file

Added the following new data attribute:
- employee_financial_crime_certification
- employee_financial_crime_certification_date

We will require 12 months of employee data

When you select an employee breach, please ensure it includes the abc_breach_amount, abc_breach_currency & abc_breach_date

This will be one line per employee. So if an employee has a 1, 2 or X amount of breaches, this should be input as
- Breach 1 = abc_breach_amount 1, abc_breach_currency 1 & abc_breach_date 1
- Breach 2 = abc_breach_amount 2, abc_breach_currency 2 & abc_breach_date 2
- Breach 3 = abc_breach_amount 3, abc_breach_currency 3 & abc_breach_date 3

When you select an employee training, this should include the training_assessment, training_date and training_subject

This will be one line per employee. So if an employee has a 1,2 or X amount of training, this should be input as
- Training 1 = training_assessment, training_date 1and training_subject 1
- Training 2 = training_assessment 2, training_date 2 and training_subject 3
- Training 3 = training_assessment 3, training_date 3 and training_subject 3
Watchlist Management Introduced a new data protocol on internal and external watchlists. This data protocol will require the following data attributes. The data points internal_list_dateofbirth_incorp and internal_list_fullname can be hashed and anonymised
- external_list_fullname
- external_watchlist_provider
- internal_list_addition_datetime
- internal_list_addition_reason
- internal_list_dateofbirth_incorp
- internal_list_deletion_datetime
- internal_list_deletion_reason
- internal_list_entity_type
- internal_list_entry_country_location
- internal_list_entry_id
- internal_list_entry_source
- internal_list_fullname
Product Report Product Report Added the following new data attribute:
- new_product_release
Sanctions Screening Sanctions Screening Added the following new data attribute:
- sanctions_screening_system
- sanctions_screening_system_version
Transaction Monitoring Transaction Monitoring Added the following new data attribute:
- account_regulator_filing
- account_regulator_filing_date
Vendors Vendors No changes to data points
Affiliates Report Affiliates Report Added the following new data attribute:
- revenue_percent_generated_per_affiliate
- products_per_affiliate
- new_product_release_list

If you have any affiliates, please complete and send this data protocol as part of your monthly upload

Version 2.0 Changes

Data protocol changes will be released on May 15th 2023 both on documentation and for new clients currently onboarding also on the platform. Existing clients will have individual timeline agreed with Customer Success Manager to switch to new formats until October 2023

Quick View

Old files v1.2 New files v2.0
Transactions Transactions
Account Holder Account Holder
Sanctions Screening Sanctions Screening
Employee Data
Transaction Monitoring
Product Report
Affiliates Report
Vendors
Accounts
Account-Holder Ref
Watchlist Management

Detailed View

Old Files New Files Data Format Changes
Transactions Transactions Transaction direction and branch id removed.
BIC fields now renamed to id to support BIC, ABA, CHIPs Uid
Account Holder Account Holder Removed fields for customer ease
Sanctions Screening Sanctions Screening Removed fields for customer ease

Timeline

Data from the previous calendar month needs to be made available by the 10th of the current month.

Formats

We will accept data submissions in CSV, xls, xlsx or JSON formats. We accept ISO 20022 format.

For CSV file descriptions, the CSV Schema can be referenced for additional detail CSV Schema

For JSON file descriptions, the JSON Schema can be referenced for additional detail JSON Schema

You can submit the files individually or zip, rar or tar.gz

If you want to encrypt the files please check our security section

Prioritisation

The priority level assigned to each file type is based on the number of tests conducted on the data contained in each.

File name Priority
Wolfsberg CBDDQ 1
Transactions 1
Account Holders 2
Sanctions Screening 2

In general, there are two modes of assessment:

  • Portfolio assessment - where your institution is assessing your counterparties
  • Self assessment - where you are performing an assessment of your institution

The following table provides details on which files should be provided, based on the mode of assessment and how the files should be loaded:

File name Self assessment Portfolio assessment
Wolfsberg CBDDQ** x x
Transactions* x x
Account Holders x
Sanctions Screening* x x

* These files should contain the relevant FI portfolio data

** A completed Wolfsberg CBDDQ should be provided initially (A) and a new fully completed version anytime there are changes

There are two types of file loading. The appropriate loading type is specified in the table below:

Institution Data

Wolfsberg CBDDQ

In 2020 the Wolfsberg Group published the updated Correspondent Banking Due Diligence Questionnaire (CBDDQ v1.3) and related guidance material (Completion Guidance, Frequently Asked Questions (FAQs) and Glossary).

The CBDDQ aims to set an enhanced and reasonable standard for cross-border and/or other higher risk Correspondent Banking Due Diligence, reducing to a minimum any additional data requirements, as per the Wolfsberg definition and current FATF Guidance.

It is also the Group’s expectation that the Group members will begin to use the CBDDQ, in a phased approach, with all of their respondents. For more information about Wolfsberg CBDDQ go here.

Please note that CBDDQ versions 1.2 or 1.3 are acceptable for submission

File Name

Files regarding the Wolfsberg CBDDQ should have the prefix wolfsberg_cbddq and the date for which it represents.

wolfsberg_cbddq_YYYYMMDD.xlsx

For example, a file with all the data from 2018 should be:

wolfsberg_cbddq_20181231.xlsx

If you plan to attach more documents referred in the Wolfsberg CBDDQ please do so using the same prefix.

Sample Package

Download sample package here

Account Holder

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "$ref": "#/definitions/AccountHolder"
  },
  "efiVersion": "2.0",
  "definitions": {
    "AccountHolder": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "account_number":                             { "$ref": "#/definitions/nonEmptyString" },
        "full_name":                                  { "$ref": "#/definitions/nonEmptyString" },
        "account_holder_id":                          { "$ref": "#/definitions/nonEmptyString" },
        "date_of_birth":                              { "$ref": "#/definitions/Date" },
        "place_of_birth_country":                     { "$ref": "#/definitions/Country" },
        "country_citizenship":                        { "$ref": "#/definitions/Country" },
        "address":                                    { "$ref": "#/definitions/Address" },
        "address_country":                            { "$ref": "#/definitions/Country"},
        "legal_entity_type":                          { "$ref": "#/definitions/LegalEntityType" },
        "system_risk_rating":                         { "$ref": "#/definitions/SystemRiskRating" },
        "is_pep":                                     { "type": "boolean" },
        "edd_triggered":                              { "type": "boolean" },
        "is_sanctioned":                              { "type": "boolean" },
        "sanction_screening_date":                    { "$ref": "#/definitions/Date" }
      },
      "required": [
        "account_number",
        "account_holder_id",
        "full_name",
        "date_of_birth",
        "country_citizenship",
        "address",
        "address_country",
        "legal_entity_type",
        "system_risk_rating",
        "is_pep",
        "edd_triggered",
        "is_sanctioned",
        "sanction_screening_date"
      ],
      "title": "AccountHolder",
      "allOf": [{
        "if": {
          "properties": {
            "adverse_information_search": { "const": "true" }
          }
        },
        "then": {
          "properties": {
            "adverse_information_search_date": { "$ref": "#/definitions/MaybeDate" }
          }
        }
      }]
    },
    "Country": {
      "title": "Country",
      "description": "ISO 3166-1 alpha-2 country code",
      "type": "string",
      "pattern": "^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$"
    },
    "LegalEntityType": {
      "title": "Legal Entity Type",
      "type": "string",
      "enum": [
        "individual",
        "sole_proprietorship",
        "ngo_general",
        "ngo_foundation",
        "ngo_non_profit",
        "spv",
        "spe",
        "pef",
        "pic",
        "trust",
        "foundation",
        "mdb",
        "partnership",
        "gov_intl_org",
        "gov_embassies",
        "gov_other",
        "corporate_extra_small",
        "corporate_small",
        "corporate_medium",
        "corporate_large",
        "corporate_extra_large",
        "corporate_other",
        "fi_bank",
        "fi_psp",
        "fi_crypto",
        "fi_central_bank",
        "fi_insurance",
        "fi_broker_dealer",
        "fi_msb",
        "fi_credit_union",
        "fi_investment",
        "fi_islamic",
        "fi_other",
        "funds",
        "legal_type_other"
      ]
    },
    "SystemRiskRating": {
      "title": "SystemRiskRating",
      "type": "string",
      "enum": ["low", "medium", "high"]
    },
    "SanctionScreeningResult": {
      "title": "SanctionScreeningResult",
      "type": "string",
      "enum": ["sanctioned", "not_sanctioned"]
    },
    "NumberOrString": {
      "title": "NumberOrString",
      "oneOf": [{
        "$ref": "#/definitions/nonEmptyString"
      }, {
        "type": "number"
      }]
    },
    "Date": {
      "title": "Date",
      "type": "string",
      "format": "date"
    },
    "MaybeDate": {
      "title": "MaybeDate",
      "oneOf": [{
        "type": "string",
        "format": "date"
      }, {
        "const": ""
      }]
    },
    "Address": {
      "type": "string",
      "minLength": 1,
      "faker": "address.streetAddress"
    },
    "nonEmptyString": {
      "type": "string",
      "minLength": 1
    }
  }
}

version 1.1
@totalColumns 14
@separator ','
// @efi_version 2.0
// Unique and unambiguous identification for the account between the account owner and the account servicer.
account_number: notEmpty
account_holder_id: notEmpty
full_name: notEmpty
//            For Non individuals, use it as date of incorporation
//            ISO 8601
date_of_birth: xDate
//            For Non individuals, use it as country of incorporation
place_of_birth_country: regex("^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$")
country_citizenship: regex("^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$")
address: notEmpty
//            ISO 3166-1 alpha-2
address_country: regex("^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$")
legal_entity_type: any("individual", "sole_proprietorship", "ngo_general", "ngo_foundation", "ngo_non_profit", "spv", "spe", "pef", "pic", "trust", "foundation", "mdb", "partnership", "gov_intl_org", "gov_embassies", "gov_other", "corporate_extra_small", "corporate_small", "corporate_medium", "corporate_large", "corporate_extra_large", "corporate_other", "fi_bank", "fi_psp", "fi_crypto", "fi_central_bank", "fi_insurance", "fi_broker_dealer", "fi_msb", "fi_credit_union", "fi_investment", "fi_islamic", "fi_other", "funds", "legaltype_other")
system_risk_rating: any("low", "medium", "high") or empty
is_pep: any("true","false")
//            information if account holder has an association with a pep
edd_triggered: any("true","false")
is_sanctioned: any("true","false")
sanction_screening_date: xDate

File Name

The file regarding account holder data should have the prefix account_holder and the date for which it represents.

account_holder_YYYYMM.csv

For example, a file with all the data from January 2019 should be:

account_holder_201901.csv

Data Types

See more information about the data types:

Frequency

Initial submission should include records for the past year. After initial submission, submitted monthly only accounts that were not closed during the entire period, if the account was open for at least one legal second it should be included.

Sample Package

Download sample package here

Attribute Details

Attribute name Type, format and values Description Pseu. Req.
account_number String Unique identifier of the account No Yes
acount_holder_id String Unique identifier of account holder No Yes
full_name String This should be the full name of the customer, as it appears on the account Yes Yes
date_of_birth Date
YYYY-MM-DD
ISO 8601 format
Provide in the ISO 8601 format. For individuals provide the date of birth. For companies/ legal entities provide the date of incorporation No Yes
place_of_birth_country String
ISO Country code 3166-1 alpha-2
ISO Country code 3166-1 alpha-2. Provide the country in which the customer was born. For legal entities, this would be the country of incorporation No Yes
country_citizenship String
ISO Country code 3166-1 alpha-2
ISO Country code 3166-1 alpha-2. Provide the customer's country of citizenship - this applies to individuals only No Yes
address String Provide the customer current residential address, in the case of individuals. For companies/legal entities, this would be the operational address of the entity Yes Yes
address_country String
ISO Country code 3166-1 alpha-2
The country associated with the residential/operational address of the customer No Yes
legal_entity_type String
"individual", "sole_proprietorship", "ngo_general", "ngo_foundation", "ngo_non_profit", "spv", "spe", "pef", "pic", "trust", "foundation", "mdb", "partnership", "gov_intl_org", "gov_embassies", "gov_other", "corporate_extra_small", "corporate_small", "corporate_medium", "corporate_large", "corporate_extra_large", "corporate_other", "fi_bank", "fi_psp", "fi_crypto", "fi_central_bank", "fi_insurance", "fi_broker_dealer", "fi_msb", "fi_credit_union", "fi_investment", "fi_islamic", "fi_other", "funds", "legal_type_other"
Provide the legal entity type from the available allowed values on the legal type list. No Yes
system_risk_rating String
"low", "medium", "high"
Provide the risk rating assigned to this customer - map the internal values to these generic groupings No Yes
is_pep Boolean
"true", "false"
Indicate whether the customer is, or has been at any time, entrusted with prominent public functions and is a known PEP No Yes
edd_triggered Boolean
"true", "false"
Indicate whether EDD was triggered for this customer No Yes
is_sanctioned Boolean
"true", "false"
Results of most recent sanctions screening No Yes
sanction_screening_date Date
YYYY-MM-DD
ISO 8601 format
Date of most recent sanctions screening No Yes

Transactions

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "$ref": "#/definitions/TransactionElement"
  },
  "efiVersion": "2.0",
  "definitions": {
    "TransactionElement": {
      "type": "object",
      "title": "TransactionElement",
      "additionalProperties": false,
      "properties": {
        "transaction_date":                     { "$ref": "#/definitions/MaybeDate" },
        "transaction_id":                       { "$ref": "#/definitions/NumberOrString" },
        "transaction_message":                  { "$ref": "#/definitions/nonEmptyString" },
        "transaction_currency":                 { "$ref": "#/definitions/Currency" },
        "transaction_amount":                   { "$ref": "#/definitions/NumberOrString" },
        "transaction_type":                     { "$ref": "#/definitions/TransactionType" },
        "transaction_status":                   { "$ref": "#/definitions/TransactionStatus" },
        "instrument_type":                      { "$ref": "#/definitions/InstrumentType" },
        "originator_full_name":                 { "$ref": "#/definitions/nonEmptyString" },
        "originator_address":                   { "$ref": "#/definitions/nonEmptyString" },
        "originator_country":                   { "$ref": "#/definitions/Country" },
        "originator_account_number":            { "$ref": "#/definitions/nonEmptyString" },
        "originator_fi_id":                        { "$ref": "#/definitions/nonEmptyString" },
        "originator_fi_name":                   { "$ref": "#/definitions/nonEmptyString" },
        "originator_fi_country":                { "$ref": "#/definitions/nonEmptyString" },
        "incoming_intermediary_fi_ids":          { "$ref": "#/definitions/IDList" },
        "outgoing_intermediary_fi_ids":          { "$ref": "#/definitions/IDList" },
        "beneficiary_full_name":                { "$ref": "#/definitions/nonEmptyString" },
        "beneficiary_address":                  { "$ref": "#/definitions/nonEmptyString" },
        "beneficiary_country":                  { "$ref": "#/definitions/Country" },
        "beneficiary_account_number":           { "$ref": "#/definitions/NumberOrString" },
        "beneficiary_fi_id":                       { "$ref": "#/definitions/nonEmptyString" },
        "beneficiary_fi_name":                  { "$ref": "#/definitions/NumberOrString" },
        "beneficiary_fi_country":               { "$ref": "#/definitions/NumberOrString" }
      },
      "required": [
        "transaction_date",
        "transaction_id",
        "transaction_message",
        "transaction_currency",
        "transaction_amount",
        "transaction_type",
        "transaction_status",
        "instrument_type",
        "originator_full_name",
        "originator_address",
        "originator_country",
        "originator_account_number",
        "originator_fi_id",
        "originator_fi_name",
        "originator_fi_country",
        "beneficiary_full_name",
        "beneficiary_address",
        "beneficiary_country",
        "beneficiary_account_number",
        "beneficiary_fi_id",
        "beneficiary_fi_name",
        "beneficiary_fi_country"
       ]
      },
      "Country": {
        "title": "Country",
        "description": "ISO 3166-1 alpha-2 country code",
        "type": "string",
        "pattern": "^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$"
      },
      "Currency": {
        "type": "string",
        "pattern": "^(AED|AFN|ALL|AMD|ANG|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BGN|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYR|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HRK|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LTL|LVL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRO|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLL|SOS|SRD|SSP|STD|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|USS|UYI|UYU|UZS|VEF|VND|VUV|WST|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XDR|XFU|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWL)$",
        "title": "Currency"
      },
      "InstrumentType": {
        "title": "InstrumentType",
        "type": "string",
        "enum": ["cash","check","ach/lcy_transfers","wire","securities","e-money/mobile_money","travellers_cheques","prepaid_cards","certified_cheques","vouchers","cashier_cheques/money_order","precious_metal","crypto/virtual_assets","interest/dividend","other"]
      },
      "TransactionType": {
        "title": "TransactionType",
        "type": "string",
        "description": "Populate as follows: SWIFT messages: MTXXX where XXX is sourced from 'message type' field as per https://www2.swift.com/knowledgecentre/products/Standards%20MT\nISO format messages: According to xsd for the 'message id' e.g. pain.008.001.09 https://www.iso20022.org/iso-20022-message-definitions\nFedwire/ACH/CHIPs messages: 'Business function code' as per Fedwire (3600) proprietary message format specification\n For other transaction types, please contact us before submission"
      },
      "TransactionStatus": {
        "title": "TransactionStatus",
        "type": "string",
        "enum": ["accepted", "rejected"]
      },
      "nonEmptyString": {
        "type": "string",
        "minLength": 1
      },
      "NumberOrString": {
        "title": "NumberOrString",
        "oneOf": [{
          "$ref": "#/definitions/nonEmptyString"
        }, {
          "type": "number"
        }]
      },
      "date": {
        "title": "date",
        "type": "string",
        "format": "date"
      },
      "date-time": {
        "title": "date-time",
        "type": "string",
        "format": "date-time"
      },
      "MaybeDate": {
        "title": "MaybeDate",
        "anyOf": [{
          "$ref": "#/definitions/date"
        }, {
          "$ref": "#/definitions/date-time"
        }, {
          "const": ""
        }]
      },
      "MaybeString": {
        "title": "MaybeString",
        "anyOf": [{
          "type": "string"
        }, {
          "const": ""
        }]
      },
      "IDList": {
        "oneOf": [{
          "type": "string",
          "pattern": "([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?;?)+"
        }, {
          "const": ""
        }]
      }
    }
}

version 1.1
@totalColumns 24
@separator ','
// @efi_version 2.0
transaction_date: xDateTimeTz
transaction_id: notEmpty
transaction_message: notEmpty
// ISO 4217
transaction_currency: regex("^(AED|AFN|ALL|AMD|ANG|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BGN|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYR|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HRK|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LTL|LVL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRO|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLL|SOS|SRD|SSP|STD|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|USS|UYI|UYU|UZS|VEF|VND|VUV|WST|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XDR|XFU|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWL)$")
// Amount rounded to the smallest currency unit
transaction_amount: notEmpty
// Populate as follows:
// SWIFT messages: MTXXX where XXX is sourced from "message type" field as per https://www2.swift.com/knowledgecentre/products/Standards%20MT
// ISO format messages: According to xsd for the "message id" e.g. pain.008.001.09 https://www.iso20022.org/iso-20022-message-definitions
// Fedwire/ACH/CHIPs messages: "Business function code" as per Fedwire (3600) proprietary message format specification
// For other transaction types, please contact us before submission
transaction_type: notEmpty
transaction_status: any("accepted", "rejected")
instrument_type: any("cash","check","ach/lcy_transfers","wire","securities","e-money/mobile_money","travellers_cheques","prepaid_cards","certified_cheques","vouchers","cashier_cheques/money_order","precious_metal","crypto/virtual_assets","interest/dividend","other")
originator_full_name: notEmpty
originator_address: notEmpty
// ISO 3166-1 alpha-2
originator_country: regex("^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$")
// Internal customer account number
originator_account_number: notEmpty
// Accepted values are BIC (ISO 9362), ABA routing number or CHIPS Uid
originator_fi_id: notEmpty
originator_fi_name: notEmpty
originator_fi_country: notEmpty
// incoming_intermediary_fi_ids can be one or a list of BIC, ABA, CHIPS codes separated by `;` they should contain all intermediaries before the processor institution
incoming_intermediary_fi_ids: notEmpty or empty
// outgoing_intermediary_fi_ids can be one or a list of BIC, ABA, CHIPS codes separated by `;` they should contain all intermediaries after the processor institution
outgoing_intermediary_fi_ids: notEmpty or empty
beneficiary_full_name: notEmpty
beneficiary_address: notEmpty
// ISO 3166-1 alpha-2
beneficiary_country: regex("^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$")
beneficiary_account_number: notEmpty
// Accepted values are BIC (ISO 9362), ABA routing number or CHIPS Uid
beneficiary_fi_id: notEmpty
beneficiary_fi_name: notEmpty
beneficiary_fi_country: notEmpty

File Name

The file regarding transaction data should have the prefix transactions and the date for which it represents.

transactions_YYYYMM.csv

For example, a file with all the data from January 2019 should be:

transactions_201901.csv

Frequency

Initial submission should include transactions for the past year. After initial submission, submitted monthly only with the previous month transactions. If no new transactions occurred, submit the file only with the header.

Sample Package

Download sample package here

Attribute Details

Attribute name Type, format and values Description Pseu. Req.
transaction_date DateTime
YYYY-MM-DDThh:mm:ssTZD
Provide the UTC time stamp of the transaction in the prescribed ISO 8601 format, converted to UTC No Yes
transaction_id String A unique identifier for the transaction. This attribute can be provided as part of data loads in Dec 2020 No Yes
transaction_message String If a transaction message was included, for example SWIFT field 70, then it should be included here No Yes
transaction_currency String
ISO 4217 alpha-3 currency code
The transaction currency inthe required ISO 4217 format No Yes
transaction_amount Int Amounts should be sent in the smallest unit of the given currency. If a currency is decimalized into cents, it should be sent as cents.
E.g: If the transaction amount is 100.98 EUR, it should be sent as 10098 (in cents). If the currency has no subunits (as MGA), simply provide its amount. Therefor, 100 MGA can be sent simply as 100.
No Yes
transaction_type String Populate as follows:
- SWIFT messages: MTXXX where XXX is sourced from "message type" field as per Standards MT
- ISO messages: According to xsd for the message type e.g. pain.008.001.09 View ISO 20022 Message Definitions
- Fedwire/ACH/CHIPs messages: Business function code as per Fedwire (3600) proprietary message format specification
No Yes
transaction_status String
"accepted", "rejected"
Provide the status of the transaction. According to ISO 20022, the available transaction status is either accepted or rejected. If this attribute is not populated, then it will be assumed that all transactions are accepted No Yes
instrument_type String
"cash", "check", "ach/lcy_tranfers", "wire", "securities", "e-money/mobile_money", "travellers_cheques", "prepaid_cards", "certified_cheques", "vouchers", "cashier_cheques/money_order", "precious_metal", "crypto/virtual_assets", "interest/dividend", "other" or empty
Provide the mapped instrument type for the transaction No No
originator_full_name String Provide the originator full name Yes Yes
originator_first_name String Provide the originator first name Yes No
originator_middle_names_patronymic String Provide the originator middle and/or patronymic names, if available Yes No
originator_last_name String Provide the originator last name Yes No
originator_address String Provide the originator address as per the transaction Yes Yes
originator_country String
ISO Country code 3166-1 alpha-2
Provide the ISO 3166-1 alpha-2 country code No Yes
originator_account_number String Provide the customer account number - extract from IBAN if the originator is a customer of another financial institution, else if the originator is a customer of the institution, this should link with the customer data file account number No Yes
originator_fi_id String Accepted values are BIC (ISO 9362), ABA routing number or CHIPS Uid No Yes
originator_fi_name String Provide the name of the originator Financial Institution No Yes
originator_fi_country String
ISO Country code 3166-1 alpha-2
Provide the ISO 3166-1 alpha-2 country code No Yes
incoming_intermediary_fi_ids String can be one or a list of BIC, ABA, CHIPS codes separated by ; they should contain all intermediaries before the processor institution No No
outgoing_intermediary_fi_ids String can be one or a list of BIC, ABA, CHIPS codes separated by ; they should contain all intermediaries after the processor institution No No
beneficiary_full_name String Provide the beneficiary full name Yes Yes
beneficiary_first_name String Provide the beneficiary first name Yes No
beneficiary_middle_names_patronymic String Provide the middle and/or patronymic names of the beneficiary, if available Yes No
beneficiary_last_name String Provide the last name of the beneficiary Yes No
beneficiary_address String Provide the address of the beneficiary as per the transaction Yes Yes
beneficiary_country String
ISO Country code 3166-1 alpha-2
Provide the ISO 3166-1 alpha-2 country code No Yes
beneficiary_account_number String Provide the account number of the beneficiary - extract from IBAN if the beneficiary is a customer of another financial institution, else if the beneficiary is a customer of the institution, this should link with the customer data file account number No Yes
beneficiary_fi_id String Accepted values are BIC (ISO 9362), ABA routing number or CHIPS Uid No Yes
beneficiary_fi_name String Provide the name of the beneficiary financial institution No Yes
beneficiary_fi_country String
ISO Country code 3166-1 alpha-2
Proivde the ISO 3166-1 alpha-2 country code No Yes

Sanctions Screening

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "array",
  "items": {
    "$ref": "#/definitions/SanctionsScreeningElement"
  },
  "efiversion": "2.0",
  "definitions": {
    "SanctionsScreeningElement": {
      "title": "SanctionsScreeningElement",
      "type": "object",
      "properties": {
        "transaction_id":             { "$ref": "#/definitions/MaybeId" },
        "fi_id":                      { "$ref": "#/definitions/MaybeId" },
        "full_name":                  { "$ref": "#/definitions/nonEmptyString" },
        "account_number":             { "$ref": "#/definitions/MaybeId" },
        "is_sanctioned":              { "type": "boolean" },
        "sanction_screening_date":    { "$ref": "#/definitions/Date" }
      },
      "required": [
              "transaction_id",
              "fi_id",
              "full_name",
              "account_number",
              "is_sanctioned",
              "sanction_screening_date"
            ]
    },
    "MaybeId": {
      "title": "NumberOrString",
      "oneOf": [{
        "$ref": "#/definitions/nonEmptyString"
      }, {
        "type": "number"
      }, {
        "const": ""
      }]
    },
    "nonEmptyString": {
          "type": "string",
          "minLength": 1
    },
    "Date": {
      "title": "Date",
      "type": "string",
      "format": "date"
    },
    "DateTime": {
      "title": "date",
      "type": "string",
      "format": "date-time"
    }
  }
}

version 1.1
@totalColumns 5
@separator ','
// @efi_version 2.0
// Transaction id can be included for merging with a specific transaction
transaction_id: notEmpty or empty
// Accepted values are BIC (ISO 9362), ABA routing number or CHIPS Uid
fi_id: notEmpty or empty
full_name: notEmpty
// Referenced in account_holder file
account_number: notEmpty or empty
is_sanctioned:  any("true","false")
sanction_screening_date: xDate

This file is used to minimize the possibility of getting false positive sanction hits by Elucidate by taking in the information from the firm.

File Name

The file regarding sanctions screening data should have the prefix sanctions_screening and the date for which it represents.

sanctions_screening_YYYYMM.csv

For example, a file with all the data from January 2019 should be:

sanctions_screening_201901.csv

Frequency

After initial submission, submitted monthly only with the previous month's screening report. If no false positive hits occur, submit the file only with the header.

Sample Package

Download sample package here

Attribute Details

Attribute name Type, format and values Description Pseu. Req.
transaction_id String Transaction id can be included for merging with a specific transaction No Yes
fi_id String Accepted values are BIC (ISO 9362), ABA routing number or CHIPS Uid of when the alert was processed because of a transaction No Yes
full_name String The full name of the subject of the check - where it was a customer, then customer full name. Where it was a transaction alert, then the originator/beneficiary full name which generated the sanction alert No Yes
account_number Number or string Unique identifier of the internal account when the alert was processed because an account No Yes
is_sanctioned Boolean
"true", "false"
Result of the check No Yes
sanction_screening_date Date
YYYY-MM-DD
ISO 8601 format
The date time the sanctions screening was performed in ISO 8601 format, converted to UTC No Yes

Common Types

BIC

Specify the Bank Identification Code. It is an 8 to 11-character code that is used to identify a specific bank.

"BIC": {
  "type": "string",
  "pattern": "([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)?"
}

Specify the legal structure by which the entity is organised. Could be an individual or group.

"LegalEntityType": {
  "title": "Legal Entity Type",
  "type": "string",
  "enum": [
    "individual",
    "sole_proprietorship",
    "ngo_general",
    "ngo_foundation",
    "ngo_non_profit",
    "spv",
    "spe",
    "pef",
    "pic",
    "trust",
    "foundation",
    "mdb",
    "partnership",
    "gov_intl_org",
    "gov_embassies",
    "gov_other",
    "corporate_extra_small",
    "corporate_small",
    "corporate_medium",
    "corporate_large",
    "corporate_extra_large",
    "corporate_other",
    "fi_bank",
    "fi_psp",
    "fi_crypto",
    "fi_central_bank",
    "fi_insurance",
    "fi_broker_dealer",
    "fi_msb",
    "fi_credit_union",
    "fi_investment",
    "fi_islamic",
    "fi_other",
    "funds",
    "legal_type_other"
  ]
}
Legal entities
├── individual
├── sole_proprietorship
├── non_governmental
│   ├── ngo
│   ├── foundation
│   └── non_profit
├── spv
├── spe
├── pef
├── pic
├── trust
├── foundation
├── mdb
├── partnership
├── government
│   ├── international_organisation
│   ├── embassies
│   └── other
├── corporate
│   ├── extra_small
│   ├── small
│   ├── medium
│   ├── large
│   ├── extra_large
│   └── other
├── financial_institution
│   ├── bank
│   ├── payment_services_provider
│   ├── crypto_operator
│   ├── central_bank
│   ├── insurance
│   ├── broker_dealer
│   ├── msb
│   ├── credit_union
│   ├── investment
│   ├── islamic
│   └── other
├── funds
└── other

System Risk Rating

Specify the risk rating that the institution assigned the entity.

"SystemRiskRating": {
  "title": "SystemRiskRating",
  "type": "string",
  "enum": ["low", "medium", "high"]
}

Country

Specify the ISO 3166-1 alpha-2 country code.

"Country": {
  "title": "Country",
  "description": "ISO 3166-1 alpha-2 country code",
  "type": "string",
  "pattern": "^(AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW)$"
}

Currency

Specify the three-letter ISO currency code.

"Currency": {
  "type": "string",
  "pattern": "^(AED|AFN|ALL|AMD|ANG|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BGN|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYR|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HRK|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LTL|LVL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRO|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLL|SOS|SRD|SSP|STD|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|USS|UYI|UYU|UZS|VEF|VND|VUV|WST|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XDR|XFU|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWL)$",
  "title": "Currency"
}

Date

Specify the date in the YYYY-MM-DD format.

"Date": {
  "title": "date",
  "type": "string",
  "format": "date",
}

Date or Empty

Specify the date in the YYYY-MM-DD format or leave empty.

"MaybeDate": {
  "title": "date",
  "oneOf": [{
    "type": "string",
    "format": "date",
    "example": "2020-02-18"
  }, {
    "const": ""
  }]
}

DateTime Timezone-aware

Specify the datetime in the YYYY-MM-DDThh:mm:ssTZD format.

"DateTime": {
  "title": "date",
  "type": "string",
  "format": "date-time",
  "example": "2020-02-18T12:43:46Z"
}

DateTime Timezone-aware or Empty

Specify the datetime in the YYYY-MM-DDThh:mm:ssTZD format or leave empty.

"MaybeDateTime": {
  "title": "MaybeDateTime",
  "oneOf": [{
    "type": "string",
    "format": "date-time",
    "example": "2020-02-18T12:43:46Z"
  }, {
    "const": ""
  }]
}

Address

Street address.

"Address": {
  "type": "string",
  "minLength": 1,
  "faker": "address.streetAddress"
}

Non empty string

Denotes that the string must be filled in.

"nonEmptyString": {
  "type": "string",
  "minLength": 1
}

Empty string

Denotes that the string can be empty.

"emptyString": {
  "const": ""
}

Warning if Empty

As there is no easy way to trigger warning instead of an error, this data type is added. One can set it to a minLength: 1 or so to check for strictness.

"WarnIfEmpty": {
  "type": "string",
  "title": "Warning if empty",
  "description": "Recommended to have"
}

Not Collected

The institution does not collect this information.

"not_collected"

Pseudonymisation

$ hash('algo', "some text") : "uniqueString"

We treat all data submitted to us as highly confidential and apply industry best practices for data security. If you wish to learn more about our process, please contact us at security@elucidate.co.

If you prefer to pseudonymise data before submission to us, we request that you:

  1. Choose an pseudonymisation algorithm from those listed below, in order of preference
  2. Using the chosen algorithm, generate hashes for the following sample names & date:
    • 2020-06-17
    • ahmed, abubakar
    • поддръжници на исляма в кюрдистан
    • anwar nasser abdulla al-aulaqi
    • taha yassin ramadan al-jizrawi
    • عبد العالي ابو ذر
  3. Generate the pseudonymisation_checksum_YYYYMM file. This file should contain the following headers: |created_month|input_value|pseudonymisation_algorithm|output|, where
    • created_month corresponds to the month of submission in the format YYYY-MM
    • input_value are the sample names (one row each)
    • pseudonymisation_algorithm is the algorithm in use SHA-3/BLAKE2B/MD5
    • Output is the pseudonymised hash value obtained
  4. Provide an pseudonymisation file each month along with your data submission

Please see our article on the Support Portal for additional information on how data can be pseudonymised and anonymised

SHA-3

SHA-3 (Secure Hash Algorithm 3) is the latest member of the Secure Hash Algorithm family of standards, released by NIST on August 5, 2015. Although part of the same series of standards, SHA-3 is internally quite different from the MD5-like structure of SHA-1 and SHA-2.

Wikipedia article

PHP

<?php

$value = 'Example $5ãÇ д赛یラ Company Co. Ltd.';
print("original: ".$value."\n");

$value =  preg_replace(
  '/[^\w$\x{0080}-\x{FFFF}]|\$+/u',
  '',
  mb_strtolower($value)
);
$value = hash('sha3-512', $value);

print("digested: ".$value."\n");

Node.js

const crypto = require('crypto');

let value = 'Example $5ãÇ д赛یラ Company Co. Ltd.'
console.log('original: '+value+'\n')

value = value.toLowerCase().replace(/[^\p{L}0-9]/gu, '')
value = crypto.createHash('sha3-512').update(value).digest('hex')
console.log('digested: '+value+'\n')

Python

import re
import hashlib

value = 'Example $5ãÇ д赛یラ Company Co. Ltd.'
print(f'original: {value}')

value = re.sub(r'[^\w]', '', value.lower())
value = hashlib.sha3_512(value.encode()).hexdigest()

print(f'digested: {value}')

Shell

#!/bin/bash

value='Example $5ãÇ д赛یラ Company Co. Ltd.'
echo "original: "$value

echo -n "digested: "
echo $value \
  | sed -E 's/([[:alpha:]]*)/\L\1/g' \
  | sed -E 's/[^[:alnum:]]//g' \
  | openssl dgst -sha512 \
  | cut -d' ' -f2

Sample

You can find a sample of the algorithm's application here

BLAKE2b

$ hash('BLAKE2b' , 'String you want to hash')

:"14c7a49806ce0ebb34ccfe00a90cbf9a0252eb8b1dafcdd80ed9678bc942be1dcd09718058babeb7e625d224f4ef65b7d4b93848c78af6ac56791443fb7ab8f6"

BLAKE and BLAKE2 are cryptographic hash functions based on Dan Bernstein's ChaCha stream cipher, but a permuted copy of the input block, XORed with some round constants, is added before each ChaCha round.

Wikipedia article

Sample

You can find a sample of the algorithm's application here

MD5

$ hash('md5' , 'String you want to hash')

: "502a25edec758b7a10c56e6fde700cae"

The MD5 message-digest algorithm is a widely used hash function producing a 128-bit hash value. Although MD5 was initially designed to be used as a cryptographic hash function, it has been found to suffer from extensive vulnerabilities. It can still be used as a checksum to verify data integrity, but only against unintentional corruption.

Wikipedia article

Sample

You can find a sample of the algorithm's application here

Normalisation

Before applying the desired algorithm, we request that you apply the following normalisations:

  1. lower case
  2. no consecutive whitespaces
  3. no pre or post whitespace"
  4. utf-8 encoding

Security

There are two methods of delivery:

If you wish to encrypt the data on your side you can use our public key from here

Errors

A validation tool will run offline on the server side. If we encounter any error in the files you have provided we will contact you for resubmission.











© Elucidate GmbH imprint