taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit d99a8383e47351dd5961a4d3b123b2701262d481
parent 43de7f93f31dbcb5d778b679902ce3d5011b84d4
Author: Florian Dold <florian@dold.me>
Date:   Tue, 18 Mar 2025 12:36:12 +0100

TOPS WIP

Diffstat:
Mdeployments/tops.rst | 461++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 420 insertions(+), 41 deletions(-)

diff --git a/deployments/tops.rst b/deployments/tops.rst @@ -277,8 +277,8 @@ document is taken from the context. **Context:** -** ``REQUESTED_FILE_TITLE`` -** ``REQUESTED_FILE_DESCRIPTION`` +* ``REQUESTED_FILE_TITLE`` +* ``REQUESTED_FILE_DESCRIPTION`` **Attributes**: @@ -307,13 +307,13 @@ Initial collection of basic attributes about customer during onboarding. when CUSTOMER_INFO_TYPE = 'NATURAL_PERSON' { CUSTOMER_NATURAL_FULL_NAME :: Text // Residential address - CUSTOMER_NATURAL_RESIDENTIAL :: Text + CUSTOMER_NATURAL_DOMICILE :: Text CUSTOMER_NATURAL_PHONE :: Optional[Text] CUSTOMER_NATURAL_EMAIL :: Optional[Text] CUSTOMER_NATURAL_BIRTHDATE :: Date CUSTOMER_NATURAL_NATIONALITY :: Text // PDF Document - CUSTOMER_NATURAL_NATIONAL_ID :: File + CUSTOMER_NATURAL_IDENTITY_DOCUMENT :: File // Optional fields for sole proprietor CUSTOMER_NATURAL_COMPANY_NAME :: Optional[Text] CUSTOMER_NATURAL_REGISTERED_OFFICE :: Optional[Text] @@ -326,23 +326,192 @@ Initial collection of basic attributes about customer during onboarding. CUSTOMER_ENTITY_CONTACT_PERSON_NAME :: Optional[Text] CUSTOMER_ENTITY_PHONE :: Optional[Text] CUSTOMER_ENTITY_EMAIL :: Optional[Text] - // PDF File - CUSTOMER_ENTITY_ID_COPY :: File - // FIXME: This is not founder, but establisher of business - // relationship with TOPS - FOUNDER_LIST[].FOUNDER_FULL_NAME :: Text - FOUNDER_LIST[].FOUNDER_RESIDENTIAL_ADDRESS :: Text - FOUNDER_LIST[].FOUNDER_BIRTHDATE :: Text - FOUNDER_LIST[].FOUNDER_NATIONALITY :: Text - FOUNDER_LIST[].FOUNDER_AUTHORIZATION_TYPE :: Text - // FIXME: Name is weird. - FOUNDER_LIST[].FOUNDER_NATIONAL_COPY :: File - // values are "CR", "MANDATE", but do we model "other"? - FOUNDER_LIST[].FOUNDER_POWER_OF_ATTORNEY :: Text - - require len(FOUNDER_LIST) > 0 + CUSTOMER_ENTITY_ID_DOC :: File + ESTABLISHER_LIST[].FULL_NAME :: Text + ESTABLISHER_LIST[].DOMICILE :: Text + ESTABLISHER_LIST[].BIRTHDATE :: Text + ESTABLISHER_LIST[].NATIONALITY :: Text + ESTABLISHER_LIST[].AUTHORIZATION_TYPE :: Text + ESTABLISHER_LIST[].ID_DOC :: File + ESTABLISHER_LIST[].POWER_OF_ATTORNEY :: 'CR' | 'MANDATE' | 'OTHER' + when (ESTABLISHER_LIST[].POWER_OF_ATTORNEY = 'OTHER') { + ESTABLISHER_LIST[].POWER_OF_ATTORNEY_OTHER :: Text + } + + require len(ESTABLISHER_LIST) > 0 } +* ``CUSTOMER_INFO_TYPE`` + + * **Type:** Single choice + * **Choices:** + + * ``NATURAL_PERSON`` + + * **Label DE:** Die Vertragspartei ist eine natürliche Person + + * ``LEGAL_ENTITY`` + + * **Label DE:** Die Vertragspartei ist eine juristische Person + +* ``CUSTOMER_TYPE`` + + * **Type:** Single Choice + * **Choices:**: + + * ``NATURAL`` + + * **Label DE**: Die Vertragspartei ist eine natürliche Person und es bestehen keine Zweifel, dass + diese selber an den Vermögenswerten wirtschaftlich + berechtigt ist + + * ``OPERATIONAL`` + + * **Label DE**: ... eine operative juristische Person oder Personengesellschaft + + * ``FOUNDATION`` + + * **Label DE**: ... eine Stiftung (oder ein ähnliches Konstrukt; inkl. Underlying + Companies). + + * ``TRUST`` + + * **Label DE**: ... ein Trust (inkl. Underlying Companies) + + * ``LIFE_INSURANCE`` + + * **Label DE**: ... eine Lebensversicherung mit separater Konto-/Depotführung + (sog. Insurance Wrapper) + + * ``OTHER`` + + * **Label DE**: alle übrigen Fälle + +* ``CUSTOMER_NATURAL_FULL_NAME`` + + * **Type**: Single-line text + * **Label EN**: Name / First Name + * **Label DE**: Name/Vorname + +* ``CUSTOMER_NATURAL_DOMICILE`` + + * **Type**: Multi-line text + * **Label DE**: Wohnsitzadresse + +* ``CUSTOMER_NATURAL_PHONE`` + + * **Type**: Phone number (**optional**) + * **Label DE:** Telefon + +* ``CUSTOMER_NATURAL_EMAIL`` + + * **Type**: E-Mail address (**optional**) + * **Label DE:** E-Mail + +* ``CUSTOMER_NATURAL_BIRTHDATE`` + + * **Type**: Date + * **Label DE:** Geburtstsdatum + +* ``CUSTOMER_NATURAL_NATIONALITY`` + + * **Type**: Country code + * **Label DE:** Staatsangehörigkeit + +* ``CUSTOMER_NATURAL_IDENTITY_DOCUMENT`` + + * **Type**: File upload (PDF) + * **Label DE:** Staatsangehörigkeit + +* ``CUSTOMER_NATURAL_COMPANY_NAME`` + + * **Type**: Single-line text + * **Label DE:** [Bei Inhabern von Einzelunternehmen (in Ergänzung zu oben):] Firma + +* ``CUSTOMER_NATURAL_REGISTERED_OFFICE`` + + * **Type**: Multi-line text + * **Label DE:** [Bei Inhabern von Einzelunternehmen (in Ergänzung zu oben):] Geschäftsadresse + +* ``CUSTOMER_NATURAL_COMPANY_ID_DOC`` + + * **Type**: Multi-line text + * **Label DE:** [Bei Inhabern von Einzelunternehmen (in Ergänzung zu oben):] Identifizierungsdokument + für Unternehmen + +* ``CUSTOMER_ENTITY_COMPANY_NAME`` + + * **Type:** Single-line text + * **Label DE:** Firma + +* ``CUSTOMER_ENTITY_COMPANY_ADDRESS`` + + * **Type:** Multi-line text + * **Label DE:** Domiziladresse + +* ``CUSTOMER_ENTITY_CONTACT_PERSON_NAME`` + + * **Type:** Single-line text (**optional**) + * **Label DE:** Kontaktperson + +* ``CUSTOMER_ENTITY_PHONE`` + + * **Type:** Phone number (**optional**) + * **Label DE:** Telefon + +* ``CUSTOMER_ENTITY_EMAIL`` + + * **Type:** E-Mail address (**optional**) + * **Label DE:** E-Mail + +* ``CUSTOMER_ENTITY_ID_DOC`` + + * **Type:** File upload (PDF) + * **Label DE:** Identifizierungsdokument (nicht älter als 12 Monate) + +* ``ESTABLISHER_LIST[].FULL_NAME`` + + * **Type:** Single-line string + * **Label DE:** Name/Vorname + +* ``ESTABLISHER_LIST[].DOMICILE`` + + * **Type:** Multi-line string + * **Label DE:** Wohnsitzadresse + +* ``ESTABLISHER_LIST[].NATIONALITY`` + + * **Type:** Country code + * **Label DE:** Staatsangehörigkeit + +* ``ESTABLISHER_LIST[].ID_DOC`` + + * **Type:** File upload (PDF) + * **Label DE:** Identifikationsdokument + +* ``ESTABLISHER_LIST[].POWER_OF_ATTORNEY`` + + * **Type:** Single Choice + * **Label DE:** Kenntnisnahme der Bevollmächtigten- + bestimmungen durch + * **Choices**: + + * ``CR`` + + * **Label DE:** HR-Auszug + + * ``MANDATE`` + + * **Label DE:** Vollmacht + + * ``OTHER`` + + * **Label DE:** Anderes: + +* ``ESTABLISHER_LIST[].POWER_OF_ATTORNEY_OTHER`` + + * **Type**: Single-line text + **Measure after submission by customer:** Depending on ``CUSTOMER_INFO_TYPE``, the customer is asked to fill out another form: @@ -360,8 +529,8 @@ vqf_902_1_officer **Filled out by:** Only AML Officer -**Prerequisites:** ``vqf_902_1`` (with follow-up form if required), -``vqf_902_5`` and ``vqf_902_4`` must have been filled out for the customer. +**Prerequisites:** ``vqf_902_1_customer`` (with follow-up form if required), +``vqf_902_5`` and ``vqf_902_4`` must have been submitted and checked. **Differences from VQF form 902.1:** @@ -377,6 +546,9 @@ vqf_902_1_officer **Attributes:** +FIXME: Why is all of this optional? What does this mean if the +acceptance date is missing? + .. code:: none ACCEPTANCE_DATE :: Optional[Date] @@ -389,6 +561,7 @@ vqf_902_1_officer EMBARGO_TERRORISM_INFO :: Optional[Text] + vqf_902_4 ^^^^^^^^^ @@ -397,16 +570,24 @@ vqf_902_4 **Purpose:** The AML officer uses this form to document the risk profile of a customer. +**Differences from VQF form** + +* "LÄNDERRISIKO (Zahlungsverkehr)" does not apply, since we + only accept Swiss customers +* "PRODUKTRISIKO (Art der vom Kunden verlangten Dienstleistungen und Produkte) + does not apply, since we do not offer customized products/services. + **Attributes:** .. code:: none PEP_FOREIGN :: Boolean - // FIXME: The next two don't really match - // the VFQ form, check and justify PEP_DOMESTIC :: Boolean PEP_INTERNATIONAL_ORGANIZATION :: Boolean - when PEP_INTERNATIONAL_ORGANIZATION or PEP_DOMESTIC { + when (PEP_DOMESTIC or PEP_INTERNATIONAL_ORGANIZATION) { + PEP_HIGH_RISK :: Boolean + } + when PEP_FOREIGN or PEP_HIGH_RISK { PEP_ACCEPTANCE_DATE :: Date } HIGH_RISK_COUNTRY :: Boolean @@ -414,14 +595,13 @@ to document the risk profile of a customer. HIGH_RISK_ACCEPTANCE_DATE :: Date } // FIXME: Unclear if this is single-choice or multiple-choice - COUNTRY_RISK_NATIONALITY_TYPE :: ( - 'NONE' | + COUNTRY_RISK_NATIONALITY_TYPE :: List[ 'NATIONALITY_CUSTOMER' | 'NATIONALITY_OWNER' | 'DOMICILE_CUSTOMER' | 'DOMICILE_OWNER' | - 'DOMICILE_CONTROLLING') + 'DOMICILE_CONTROLLING'] COUNTRY_RISK_NATIONALITY_LEVEL :: 'LOW' | 'MEDIUM' | 'HIGH' // FIXME: Unclear if this is single-choice or multiple-choice - COUNTRY_RISK_BUSINESS_TYPE :: 'NONE' | 'CUSTOMER' | 'OWNER' + COUNTRY_RISK_BUSINESS_TYPE :: List['CUSTOMER' | 'OWNER'] COUNTRY_RISK_BUSINESS_LEVEL :: 'LOW' | 'MEDIUM' | 'HIGH' COUNTRY_RISK_PAYMENTS_LEVEL :: 'LOW' | 'MEDIUM' | 'HIGH' INDUSTRY_RISK_TYPE :: 'CUSTOMER' | 'OWNER' @@ -429,19 +609,218 @@ to document the risk profile of a customer. 'TRANSPARENT' | 'HIGH_CASH_TRANSACTION' | 'NOT_WELL_KNOWN' | 'HIGH_RISK_TRADE' | 'UNKNOWN_INDUSTRY') CONTACT_RISK_LEVEL :: 'LOW' | 'MEDIUM' | 'HIGH' - PRODUCT_RISK_LEVEL :: ( - 'EASY' | 'SOPHISTICATED' | 'OFFSHORE' | - 'COMPLEX_STRUCTURE' | 'LARGE_NUMBER_OF_ACCOUNTS' | - 'COMPLEX_SERVICE' | 'FREQ_TRANS_WITH_HIGH_RISK') - // FIXME: Enum values here are weird! - RISK_CLASIFICATION_LEVEL :: 'WITH' | 'WITHOUT' - RISK_CLASIFICATION_ACCEPTANCE_DATE :: Date - // FIXME: We need to define our own risk criteria here - // => Refine existing one - // ... - // FIXME: We need to define our own criteria for - // monitoring of high-risk transactions. - // => Fixed, not per customer + RISK_RATIONALE :: Text + HIGH_RISK :: Boolean + when HIGH_RISK { + HIGH_RISK_ACCEPTANCE_DATE :: Date + } + +* ``PEP_FOREIGN`` + + * **Type**: Checkbox + * **Label DE:** Ist die Vertragspartei, der wirtschaftlich + Berechtige resp. Kontrollinhaber oder der + Bevollmächtigte ein ausländischer PEP + oder steht er einem solchen nahe? + +* ``PEP_DOMESTIC`` + + * **Type**: Checkbox + * **Label DE:** Ist die Vertragspartei, der wirtschaftlich + Berechtigte resp. Kontrollinhaber oder + der Bevollmächtigte ein inländischer PEP + +* ``PEP_INTERNATIONAL_ORGANIZATION`` + + * **Type**: Checkbox + * **Label DE:** Ist die Vertragspartei, der wirtschaftlich + Berechtigte resp. Kontrollinhaber oder der Bevollmächtigte ein PEP bei + internationalen Organisationen oder steht er einem solchen nahe? + +* ``PEP_HIGH_RISK`` + + * **Type**: Checkbox + * **Label DE:** Ist ein Risikokriterium aus diesem Formular erfüllt? + * **VQF form original label:** Ist ein Risikokriterium gemäss Ziff. 3 nachfolgend erhöht? + + +* ``PEP_ACCEPTANCE_DATE`` + + * **Type:** Date + * **Label DE:** Die Zustimmung des obersten Geschäftsführungsorgans zur Aufnahme einer + Geschäftsbeziehung mit einem PEP wurde eingeholt am: + +* ``COUNTRY_RISK_NATIONALITY_TYPE`` + + * **Type:** Multi-choice + * **Label DE:** LÄNDERRISIKO (Nationalität) + * **Choices:** + + * ``NATIONALITY_CUSTOMER`` + + * **Label DE:** [Staatsangehörigkeit] Vertragspartei + + * ``NATIONALITY_OWNER`` + + * **Label DE:** [Staatsangehörigkeit] An Vermögenswerten wirtschaftlich berechtigte Person + + * ``DOMICILE_CUSTOMER`` + + * **Label DE:** [Sitz/Wohnsitz] Vertragspartei + + * ``DOMICILE_CONTROLLING`` + + * **Label DE:** [Sitz/Wohnsitz] Kontrollinhaber + + * ``DOMICILE_OWNER`` + + * **Label DE:** [Sitz/Wohnsitz] an Vermögenswerten wirtschaftlich berechtigte Personen + +* ``COUNTRY_RISK_NATIONALITY_LEVEL`` + + * **Type:** Single choice + * **Choices:** + + * ``LOW`` + + * **Label DE:** Risiko 0 gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1) + + * ``MEDIUM`` + + * **Label DE:** Risiko 1 gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1) + + * ``HIGH`` + + * **Label DE:** Risiko 2 gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1) + +* ``COUNTRY_RISK_BUSINESS_TYPE`` + + * **Type:** Multi-choice + * **Label DE:** LÄNDERRISIKO (Geschäftstätigkeit) + * **Choices:** + + * ``CUSTOMER`` + + * **Label DE:** [Ort der Geschäftstätigkeit] Vertragspartei + + * ``OWNER`` + + * **Label DE:** [Ort der Geschäftstätigkeit] an Vermögenswerten wirtschaftlich berechtigte Person + +* ``COUNTRY_RISK_BUSINESS_LEVEL`` + + * **Type:** Single choice + * **Choices:** + + * ``LOW`` + + * **Label DE:** Risiko 0 gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1) + + * ``MEDIUM`` + + * **Label DE:** Risiko 1 gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1) + + * ``HIGH`` + + * **Label DE:** Risiko 2 gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1) + + +* ``INDUSTRY_RISK_TYPE`` + + * **Type:** Multi-choice + * **Label DE:** BRANCHENRISIKO + * **Choices:** + + * ``CUSTOMER`` + + * **Label DE:** [Art der Geschäftstätigkeit] Vertragspartei + + * ``OWNER`` + + * **Label DE:** [Art der Geschäftstätigkeit] an Vermögenswerten wirtschaftlich berechtigte Person + +* ``INDUSTRY_RISK_LEVEL`` + + * **Type:** Single choice + * **Choices:** + + * ``TRANSPARENT`` + + * **Label DE:** + Dem Mitglied gut bekannte, klar um rissene, transparente + und einfach verständliche Geschäftstätigkeit + + * ``HIGH_CASH_TRANSACTION`` + + * **Label DE:** Geschäftstätigkeit mit hohen Bargeldtransaktionen + + * ``NOT_WELL_KNOWN`` + + * **Label DE:** Dem Mitglied eher unbekannte Tätigkeit + + * ``HIGH_RISK_TRADE`` + + * **Label DE:** + Waffen-/Rüstungshandel, Rohedelsteine- und Diamantenhandel, + Schmuckhandel, internationaler Handel mit exotischen Tieren, Casino- + und Lotteriegewerbe, Erotikgewerbe + + * ``UNKNOWN_INDUSTRY`` + + * **Label DE:** + Keinerlei persönliche Kenntnisse des Mitglieds zur Branche der + Vertragspartei + +* ``CONTACT_RISK_LEVEL`` + + * **Type:** Multi-choice + * **Label DE:** + KONTAKTRISIKO: Kontaktformen zur Vertragspartei/an Vermögenswerten + wirtschaftlich berechtigten Person + + * **Choices:** + + * ``LOW`` + + * **Label DE**: + Persönliche Bekanntschaft zwischen Mitglied und Vertragspartei/an + Vermögenswerten wirtschaftlich berechtigter Person vor + Geschäftsaufnahme seit mehreren Jahren (min. 2 Jahre) + + * ``MEDIUM`` + + * **Label DE**: + Vertragspartei/an Vermögenswerten wirtschaftlich berechtigte Person war dem Mitglied vor Geschäftsaufnahme + nicht seit mehreren Jahren (min. 2 Jahre) persönlich bekannt, aber + (a) keine Geschäftsaufnahme unter Abwesenden oder + (b) zumindest Einführung/Vermittlung des Kunden durch eine Vertrauensperson + + * ``HIGH`` + + * **Label DE**: + Vertragspartei/an Vermögenswerten wirtschaftlich berechtigte Person + persönlich unbekannt und Geschäftsaufnahme unter Abwesenden + (Korrespondenzbeziehung) sowie keine Einführung/Vermittlung des Kunden + durch eine Vertrauensperson + +* ``RISK_RATIONALE`` + + * **Type:** Multi-line text + * **Label DE:** Begründung für abweichende Risikobewertung + +* ``HIGH_RISK`` + + * **Type:** Checkbox (yes/no) + * **Label DE:** [Risikoklassifizierung] Geschäftsbeziehung mit erhöhtem Risiko + +* ``HIGH_RISK_ACCEPTANCE_DATE`` + + * **Type:** Checkbox (yes/no) + * **Label DE:** + Die Zustimmung einer vorgesetzten Person / Stelle oder der Geschäftsführung + zur Aufnahme einer Geschäftsbeziehung mit erhöhtem Risiko wurde eingeholt + am: + vqf_902_5 ^^^^^^^^^