commit 36b50750a5abe2f0e6bcb35bd78bf5a11e87851a
parent 6435ee119eae8a1653820c2d7a6a29ac5573abf0
Author: Sebastian <sebasjm@gmail.com>
Date: Sat, 28 Dec 2024 01:57:24 -0300
more on aml fields
Diffstat:
3 files changed, 410 insertions(+), 99 deletions(-)
diff --git a/gnu-taler-aml-attributes/registry.rec b/gnu-taler-aml-attributes/registry.rec
@@ -8,127 +8,130 @@
%type: Identifier Identifier_t
%unique: Identifier
%mandatory: Identifier
-%typedef: Description_t regexp |^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\(\)\.,;!"':#\/ -]*$|
-%type: Description Description_t
-%mandatory: Description
+#%typedef: Description_t regexp |^[\.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\(\)\.,;!"':#\/ -]*$|
+#%type: Description Description_t
%mandatory: Required
-%mandatory: Format
%allowed: Comment
-%sort: Identifier Description Required
+%mandatory: Type
+%sort: Identifier Type Comment Required
+##########################
## All VQF forms
+##########################
# Customer is the person with whom the member concludes the contract with regard to the financia service provided.
Identifier: OFFICER_FULL_NAME
-Description: Full legal name of the officer filling the form.
-Format: text/plain
+Comment: Full legal name of the officer filling the form.
+Type: String
Required: true
Identifier: FORM_FILLING_DATE
-Description: When the form was completed.
-Format: text/plain
+Comment: When the form was completed.
+Type: AbsoluteTime
Required: true
+Identifier: CUSTOMER_ID
+Required: true
+Type: String
+Comment: Customer system ID required to correlate different AML forms.
+
+Identifier: SIGN_DATE
+Comment: .
+Type: AbsoluteTime
+Required: false
+
+Identifier: SIGNATURE
+Comment: .
+Type: String
+Required: false
+
+
+##########################
## Form VQF 902.1e
+##########################
# 1
# Information of the customer
Identifier: CUSTOMER_NATURAL_FULL_NAME
-Description: .
-Format: text/plain
Required: true
+Type: String
Comment: If the customer is a natural person.
-Identifier: CUSTOMER_NATURAL_RESIDENTIAL_ADDRESS
-Description: .
-Format: text/plain
+Identifier: CUSTOMER_NATURAL_RESIDENTIAL
Required: true
+Type: Location
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_PHONE
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_EMAIL
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_BIRTHDATE
-Description: .
-Format: text/plain
Required: true
+Type: AbsoluteTime
Comment: If the customer is a natural person.
-Identifier: CUSTOMER_NATURAL_NATIONALITY_CC
-Description: .
-Format: text/plain
+Identifier: CUSTOMER_NATURAL_NATIONALITY
Required: true
+Type: CountryCode
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_NATIONAL_ID
-Description: .
-Format: text/plain
Required: true
+Type: String
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_COMPANY_NAME
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_REGISTERED_OFFICE
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a natural person.
Identifier: CUSTOMER_NATURAL_COMPANY_ID
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a natural person.
Identifier: CUSTOMER_ENTITY_COMPANY_NAME
-Description: .
-Format: text/plain
Required: true
+Type: String
Comment: If the customer is a legal entity.
Identifier: CUSTOMER_ENTITY_ADDRESS
-Description: .
-Format: text/plain
Required: true
+Type: Location
Comment: If the customer is a legal entity.
Identifier: CUSTOMER_ENTITY_CONTACT_PERSON_NAME
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a legal entity.
Identifier: CUSTOMER_ENTITY_PHONE
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a legal entity.
Identifier: CUSTOMER_ENTITY_EMAIL
-Description: .
-Format: text/plain
Required: false
+Type: String
Comment: If the customer is a legal entity.
Identifier: CUSTOMER_ENTITY_ID
-Description: .
-Format: text/plain
Required: true
+Type: String
Comment: If the customer is a legal entity.
# 2
@@ -136,73 +139,61 @@ Comment: If the customer is a legal entity.
# Founders are natural persons who establish the business for legal entities and partnerships
Identifier: FOUNDER_FULL_NAME
-Description: .
-Format: text/plain
+Type: String
Required: true
Identifier: FOUNDER_RESIDENTIAL_ADDRESS
-Description: .
-Format: text/plain
+Type: Location
Required: true
Identifier: FOUNDER_BIRTHDATE
-Description: .
-Format: text/plain
+Type: AbsoluteTime
Required: true
-Identifier: FOUNDER_NATIONALITY_CC
-Description: .
-Format: text/plain
+Identifier: FOUNDER_NATIONALITY
+Type: CountryCode
Required: true
Identifier: FOUNDER_AUTHORIZATION_TYPE
-Description: .
-Format: text/plain
Comment: signatory of representation
+Type: String
Required: true
Identifier: FOUNDER_NATIONAL_ID
-Description: .
-Format: text/plain
+Type: String
Required: true
Identifier: FOUNDER_POWER_OF_ATTORNEY
-Description: .
-Format: text/plain
Comment: Could be "cr extract", "mandate" or "other"
+Type: String
Required: true
# 3
# Acceptance of business relationship
Identifier: ACCEPTANCE_DATE
-Description: .
-Format: text/plain
Comment: Conclusion of the conract
+Type: AbsoluteTime
Required: false
Identifier: ACCEPTANCE_METHOD
-Description: .
-Format: text/plain
Comment: Accepted by face to face or correspondence
+Type: String
Required: false
Identifier: ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE
-Description: .
-Format: text/plain
Comment: to the customer, hold at bank, to the member or to a third party
+Type: String
Required: false
Identifier: ACCEPTANCE_LANGUAGE
-Description: .
-Format: text/plain
Comment:
+Type: String
Required: false
Identifier: ACCEPTANCE_ADDITIONAL_INFO
-Description: .
-Format: text/plain
Comment:
+Type: String
Required: false
# 4
@@ -210,62 +201,375 @@ Required: false
# defines the customer type
Identifier: CUSTOMER_TYPE
-Description: .
-Format: text/plain
Comment: Value could be natural person and sole beneficial, legal entity, a foundation, a trust, a life insurance or all other cases.
+Type: String
Required: true
# 5
# Embargo procedures/terrorism list
-Identifier: EMBARGO_TERRIRISM_INFO
-Description: .
-Format: text/plain
+Identifier: EMBARGO_TERRORISM_INFO
Comment: Verification whether the customer or any involved persons are listed on an embargo-/terrorism list
+Type: String
Required: false
# 6
# Type and purpose of business relationship
+# In case of occasional customer that no customer profile (VQF No 902.5) is created.
+
Identifier: RELATIONSHIP_TYPE
-Description: .
-Format: text/plain
-Comment: Could be "money exchange", "money and asset transfer" or other
+Comment: Could be "money exchange", "money and asset transfer" or "other"
+Type: String
Required: false
Identifier: RELATIONSHIP_PURPOSE
-Description: .
-Format: text/plain
Comment:
+Type: String
Required: false
+##########################
## Form VQF 902.4e
+##########################
+
+# Art. 56 SRO Regulations
+
+# 1. Politically exposed person
+# Art 7
+
+Identifier: PEP_FOREIGN
+Comment: True if the person is a PEP defined by "Art 7 lit. g numeral 1"
+Type: Boolean
+Required: true
+
+Identifier: PEP_DOMESTIC
+Comment: True if the person is a PEP defined by "Art 7 lit. g numeral 2"
+Type: Boolean
+Required: true
+
+Identifier: PEP_INTERNATIONAL_ORGANIZATION
+Comment: True if the person is a PEP defined by "Art 7 lit. g numeral 3"
+Type: Boolean
+Required: true
+
+Identifier: PEP_ACCEPTANCE_DATE
+Comment: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___
+Type: AbsoluteTime
+Required: false
+
+# 2. High risk or non-cooperative country
+
+Identifier: HIGH_RISK_COUNTRY
+Comment: True if the person is in a country for which FATF requires incresed dilegence.
+Type: Boolean
+Required: true
+
+Identifier: HIGH_RISK__ACCEPTANCE_DATE
+Comment: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___
+Type: String
+Required: false
+
+# 3. Business relationship risk
+
+Identifier: COUNTRY_RISK_TYPE
+Comment: Can be "nationality customer", "nationality owner", "domicile customer", "domicile owner", "domicile controlling", "business activity", or "payments"
+Type: String
+Required: false
+
+Identifier: COUNTRY_RISK_LEVEL
+Comment: Can be "low", "medium" or "high" based on 902.4.1 country list
+Type: String
+Required: false
+
+Identifier: INDUSTRY_RISK_TYPE
+Comment: Can be "customer" or "owner"
+Type: String
+Required: false
+
+Identifier: INDUSTRY_RISK_LEVEL
+Comment: Can be "transparent", "high level of cash transaction", "not well known", "high risk trade" or "unkown industry"
+Type: String
+Required: false
+
+Identifier: CONTACT_RISK_LEVEL
+Comment: Can be "low", "med" or "high"
+Type: String
+Required: false
+
+Identifier: PRODUCT_RISK_LEVEL
+Comment: Can be "easy", "sophisticated", "offshore", "complex structure", "large number of accounts", "complex service" or "frequent transaction with increased risk"
+Type: String
+Required: false
+
+Identifier: EXTRA_CRITERA_1_RISK_DEFINITION
+Comment: Criteria description
+Type: String
+Required: false
+
+Identifier: EXTRA_CRITERA_1_RISK_LEVEL
+Comment: Can be "low", "med" or "high"
+Type: String
+Required: false
+
+Identifier: EXTRA_CRITERA_2_RISK_DEFINITION
+Comment: Criteria description
+Type: String
+Required: false
+
+Identifier: EXTRA_CRITERA_2_RISK_LEVEL
+Comment: Can be "low", "med" or "high"
+Type: String
+Required: false
+
+Identifier: RISK_CLASIFICATION_LEVEL
+Comment: Can be "with" or "without" increased risk.
+Type: String
+Required: false
+
+Identifier: RISK_CLASIFICATION_ACCEPTANCE_DATE
+Comment: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___
+Type: String
+Required: false
+
+# 4. Transaction monitoring
+
+## This fields seems to be related to the AML legitimization rules
+
+
+##########################
## Form VQF 902.5e
+##########################
+
+# 1. Business activity
+
+Identifier: BIZREL_PROFESSION
+Comment: Profession, business activities, etc. (former, current, potentially planned)
+Type: String
+Required: false
+
+# 2. Financial circumstances
+
+Identifier: BIZREL_INCOME
+Comment: Income and assets, liabilities (estimated)
+Type: String
+Required: false
+
+# 3. Origin of the deposited assets involved
+
+Identifier: BIZREL_ORIGIN_AMOUNT
+Comment: Nature, amount and currency of the involved assets.
+Type: Amount
+Required: true
+
+Identifier: BIZREL_ORIGIN_CATEGORY
+Comment: Could be "savings", "own business", "inheritance" or "other".
+Type: String
+Required: true
+
+Identifier: BIZREL_ORIGIN_DETAIL
+Comment: Define the category if "other".
+Type: String
+Required: false
+
+# 4. Nature and purpose
+
+Identifier: BIZREL_PURPOSE
+Comment: Purpose of the business relationship.
+Type: String
+Required: false
+
+Identifier: BIZREL_DEVELOPMENT
+Comment: Information on the planned development of the business relationship and the assets.
+Type: String
+Required: false
+
+Identifier: BIZREL_FINANCIAL_VOLUME
+Comment: In the case of cash or money and asset transfer transacction with regular customer
+Type: String
+Required: false
+
+Identifier: BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME
+Comment: In the case of cash or money and asset transfer transacction with regular customer
+Type: String
+Required: false
+
+Identifier: BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS
+Comment: In the case of cash or money and asset transfer transacction with regular customer
+Type: Location
+Required: false
+
+Identifier: BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT
+Comment: In the case of cash or money and asset transfer transacction with regular customer
+Type: String
+Required: false
+
+# 5. Third parties
+
+Identifier: BIZREL_THIRDPARTY_RELATIONSHIP
+Comment: Relation of the customer to the beneficial owner, controlling persons, authorised signatories and other persons involved in the business relationship.
+Type: String
+Required: false
+
+Identifier: BIZREL_THIRDPARTY_AMLA_FILES
+Comment: Relation to other AMLA-files.
+Type: String
+Required: false
+
+Identifier: BIZREL_THIRDPARTY_REFERENCES
+Comment: Introducer / agents / references.
+Type: String
+Required: false
+
+# 6. Further information
+
+Identifier: BIZREL_FURTHER_INFO
+Comment: Other relevant information.
+Type: String
+Required: false
+
+##########################
## Form VQF 902.8ew
+##########################
+##########################
## Form VQF 902.9e
+##########################
+
+# Identity of beneficial owner
+
+Identifier: IDENTITY_CONTRACTING_PARTNER
+Comment: .
+Type: String
+Required: true
+
+Identifier: IDENTITY_FULL_NAME
+Comment: .
+Type: String
+Required: false
+
+Identifier: IDENTITY_BIRTHDATE
+Comment: .
+Type: AbsoluteTime
+Required: false
+
+Identifier: IDENTITY_NATIONALITY
+Comment: .
+Type: CountryCode
+Required: false
+
+Identifier: IDENTITY_DOMICILE
+Comment: .
+Type: Location
+Required: false
+
+##########################
## Form VQF 902.11e
+##########################
+
+# controlling person of the operation legal entity and partnerships
+
+Identifier: CONTROLLING_ENTITY_CONTRACTING_PARTNER
+Comment: .
+Type: String
+Required: true
+
+Identifier: CONTROLLING_ENTITY_LEVEL
+Comment: Could be "more than 25% voting rights", "other ways" or "director"
+Type: String
+Required: true
+
+Identifier: CONTROLLING_ENTITY_FULL_NAME
+Comment: .
+Type: String
+Required: true
+
+Identifier: CONTROLLING_ENTITY_DOMICILE
+Comment: .
+Type: Location
+Required: true
+
+Identifier: CONTROLLING_ENTITY_THIRD_PERSON
+Type: Boolean
+Comment: Is a third person the beneficial owner of the assets?
+Required: true
+
+##########################
## Form VQF 902.12e
-## Form VQF 902.13e
-## Form VQF 902.14e
-## Form VQF 902.15e
+##########################
+
+# foundations
-Identifier: PERSON_LAST_NAME
-Description: Last name of an individual as in the national identity card.
-Format: text/plain
+Identifier: FOUNDATION_CONTRACTING_PARTNER
+Comment: .
+Type: String
+Required: true
-Identifier: PERSON_NATIONAL_ID
-Description: Identification number or string of national identity card.
-Format: text/plain
+Identifier: FOUNDATION_KNOWN_AS
+Comment: .
+Type: String
+Required: true
-Identifier: PERSON_DATE_OF_BIRTH
-Description: Date of birth of an individual. Format is YYYY-MM-DD.
-Format: text/plain
+# 1. About the foundation
-Identifier: PERSON_NATIONAL_ID_SCAN
-Description: Scan of a recognized national identity card of an individual.
-Format: text/pdf
+Identifier: FOUNDATION_NAME
+Comment: .
+Type: String
+Required: true
+
+Identifier: FOUNDATION_DISCRETIONARY
+Comment: .
+Type: Boolean
+Required: true
-Identifier: PERSON_NATIONALITY_CC
-Description: Nationality of an individual. Format is 2-letter ISO country-code.
-Format: text/plain
+Identifier: FOUNDATION_REVOCABLE
+Comment: .
+Type: Boolean
+Required: true
+
+# 2. About the founder
+
+Identifier: FOUNDATION_FOUNDER_FULL_NAME
+Comment: .
+Type: String
+Required: true
+Identifier: FOUNDATION_FOUNDER_DOMICILE
+Comment: .
+Type: Location
+Required: true
+
+Identifier: FOUNDATION_FOUNDER_BIRTHDATE
+Comment: .
+Type: AbsoluteTime
+Required: true
+
+Identifier: FOUNDATION_FOUNDER_NATIONALITY
+Comment: .
+Type: CountryCode
+Required: true
+
+Identifier: FOUNDATION_FOUNDER_DEATHDATE
+Comment: .
+Type: AbsoluteTime
+Required: true
+
+Identifier: FOUNDATION_FOUNDER_RIGHT_TO_REVOKE
+Comment: .
+Type: Boolean
+Required: true
+
+Identifier: FOUNDATION_FOUNDER_
+Comment: .
+Type: String
+Required: true
+
+
+
+##########################
+## Form VQF 902.13e
+##########################
+##########################
+## Form VQF 902.14e
+##########################
+##########################
+## Form VQF 902.15e
+##########################
diff --git a/gnu-taler-aml-attributes/ts.header b/gnu-taler-aml-attributes/ts.header
@@ -21,4 +21,10 @@
but it does apply to this file.
*/
-export enum TalerAmlAttributes {
+type AbsoluteTime = string;
+type Boolean = string;
+type CountryCode = string;
+type Amount = string;
+
+
+export interface TalerAmlAttributes {
diff --git a/gnu-taler-aml-attributes/ts.template b/gnu-taler-aml-attributes/ts.template
@@ -1,6 +1,7 @@
/**
- * {{Description}}
+ * {{Comment}}
+ * Required: {{Required}}
*/
- {{Name}} = {{Value}},
+ {{Identifier}}: {{Type}};