exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

vqf_902_4.typ (20208B)


      1 // VQF 902.4 Risk Profile AMLA Template
      2 // Pass JSON data as content dictionary
      3 #import "@taler-exchange/common:0.0.0": vqflogo, pointingfinger, checkbox
      4 
      5 #let form(data) = {
      6   set page(
      7     paper: "a4",
      8     margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm),
      9     footer: context [
     10       #grid(
     11         columns: (1fr, 1fr),
     12         align: (left, right),
     13         text(size: 8pt)[
     14           VQF doc. No. 902.4#linebreak()
     15           Version of 17 July 2020
     16         ],
     17         text(size: 8pt)[
     18           Page #here().page() of #counter(page).final().first()
     19         ]
     20       )
     21     ]
     22   )
     23 
     24   set text(font: "Liberation Sans", size: 10pt)
     25   set par(justify: false, leading: 0.65em)
     26 
     27   // Helper function to get value or empty string
     28   let get(key, default: "") = {
     29     data.at(key, default: default)
     30   }
     31 
     32   // Header
     33   align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL])
     34 
     35   v(0.5em)
     36 
     37   grid(
     38     columns: (50%, 50%),
     39     gutter: 1em,
     40     vqflogo(),
     41     align(right)[
     42       #table(
     43         columns: (1fr, 1fr),
     44         stroke: 0.5pt + black,
     45         inset: 5pt,
     46         align: (left, left),
     47         [VQF member no.], [AMLA File No.],
     48         [#get("VQF_MEMBER_NUMBER")], [#get("FILE_NUMBER")]
     49       )
     50     ]
     51   )
     52 
     53   v(1em)
     54 
     55   align(left, text(size: 14pt, weight: "bold")[Risk Profile AMLA])
     56 
     57   v(0.3em)
     58 
     59   text(size: 9pt, style: "italic")[Evaluation of business relationship with increased risk and definition of criteria for transaction monitoring]
     60 
     61   v(-1em)
     62   line(length:100%)
     63 
     64   grid(
     65     columns: (auto, 1fr),
     66     gutter: 0.5em,
     67     align: (left, left),
     68     pointingfinger(),
     69     text(size: 9pt)[
     70       The member performs additional clarifications if the business relationship or the transaction is classified as increased risk (Art. 56 SRO Regulations)
     71     ]
     72   )
     73 
     74   v(1em)
     75 
     76   table(
     77     columns: (20%, 80%),
     78     stroke: 0.5pt + black,
     79     inset: 5pt,
     80     [Customer#footnote([Pursuant identification form (VQF doc. Nr. 902.1) numeral 1.]):],
     81     [#get("CUSTOMER_NAME")]
     82   )
     83 
     84   v(0.5em)
     85 
     86   text(weight: "bold")[This form was completed by:]
     87 
     88   v(0.3em)
     89 
     90   table(
     91     columns: (20%, 80%),
     92     stroke: 0.5pt + black,
     93     inset: 5pt,
     94     align: (left, left),
     95     [Full name], [#get("AML_STAFF_NAME")],
     96     [Date], [#get("FILING_DATE")],
     97   )
     98 
     99   v(1.5em)
    100 
    101   // Section 1: PEP Check
    102 [= 1. Evaluation of politically exposed persons (PEP-Check)]
    103 
    104   v(0.5em)
    105 
    106   grid(
    107     columns: (auto, 1fr),
    108     gutter: 0.5em,
    109     align: (left, left),
    110     pointingfinger(),
    111     text(size: 9pt)[
    112       This evaluation has to be completed by all members for every business relationship.
    113     ]
    114   )
    115 
    116   v(1em)
    117 
    118   let pep_foreign = get("PEP_FOREIGN")
    119   let pep_domestic = get("PEP_DOMESTIC")
    120   let pep_intl = get("PEP_INTERNATIONAL_ORGANIZATION")
    121   let any_pep = pep_foreign or pep_domestic or pep_intl
    122   let pep_high_risk = get("PEP_HIGH_RISK")
    123 
    124   block(breakable: false)[
    125     #table(
    126       columns: (40%, 60%),
    127       stroke: 0.5pt + black,
    128       inset: 5pt,
    129       [#underline([Foreign PEP])#footnote[Definition see Art. 7 lit. g numeral 1 SRO Regulations.]
    130        \ #v(1em)
    131        Is the customer, the beneficial owner or the controlling person or authorised representative a foreign PEP or closely related to such a person?],
    132       [#grid(
    133         columns: (auto, 1fr),
    134         gutter: 0.5em,
    135         checkbox(not pep_foreign), [No],
    136         checkbox(pep_foreign), [#grid(
    137           columns: (auto, auto, auto),
    138           gutter: 0.5em,
    139           [Yes],
    140           [$=>$],
    141           [Classification of the business
    142            \ as increased risk is #underline([compulsory]).])],
    143       )],
    144 
    145 
    146       [#underline(
    147         [Domestic PEP#footnote[Definition see Art. 7 lit. g numeral 2 SRO Regulations.]
    148          and PEP of International Organisations#footnote[Definition see Art. 7 lit. g numeral 3 SRO Regulations.]]
    149        )
    150        \ #v(1em)
    151        Is the customer, the beneficial owner or the controlling person or authorised representative a domestic PEP or PEP in International Organisations or closely related to such a person?],
    152       [#grid(
    153         columns: (auto, 1fr),
    154         gutter: 0.5em,
    155         checkbox(not (pep_domestic or pep_intl)), [No],
    156         checkbox(pep_domestic or pep_intl), [#grid(
    157           columns: (auto, auto, auto),
    158           gutter: 0.5em,
    159           [Yes],
    160           [$=>$],
    161           [Is a risk criterion pursuant to numeral 3 subsequently increased?
    162             #grid(
    163               columns: (auto, 1fr),
    164               gutter: 0.5em,
    165              checkbox(not pep_high_risk), [No],
    166              checkbox(pep_high_risk), [#grid(
    167                columns: (auto, auto, auto),
    168                gutter: 0.5em,
    169                [Yes],
    170                [$=>$],
    171                [Classification of the business relationship as increased risk is #underline([compulsory])]
    172              )]
    173            )],
    174          )]
    175       )]
    176     )
    177     #if ("" == get("PEP_ACCEPTANCE_DATE")) [
    178       The decision of the Senior executive body on the acceptance of a business relationship
    179       with a PEP was #underline([not]) obtained.
    180     ] else [
    181       The decision of the Senior executive body on the acceptance of a business relationship
    182       with a PEP was obtained on #underline([#get("PEP_ACCEPTANCE_DATE")]).
    183     ]
    184   ]
    185 
    186   v(2em)
    187   pagebreak()
    188   // Section 2: High Risk Country
    189 [= 2. Evaluation "high risk" or non-cooperative country]
    190 
    191   v(0.5em)
    192 
    193   grid(
    194     columns: (auto, 1fr),
    195     gutter: 0.5em,
    196     align: (left, left),
    197     pointingfinger(),
    198     text(size: 9pt)[
    199       This evaluation has to be completed by all members for each business relationship.
    200     ]
    201   )
    202 
    203   v(1em)
    204 
    205   let high_risk = get("HIGH_RISK_COUNTRY")
    206 
    207   block(breakable: false)[
    208     #table(
    209       columns: (40%, 60%),
    210       stroke: 0.5pt + black,
    211       inset: 5pt,
    212       [#underline(["High risk" or non-cooperative country])
    213        #v(1em)
    214        Is the customer, the beneficial owner or the controlling person or authorised representative in a country considered by the FATF *"high risk"* or *non-cooperative* and for which FATF requires *increased diligence*?],
    215       [#grid(
    216         columns: (auto, 1fr),
    217         gutter: 0.5em,
    218         checkbox(not high_risk), [No],
    219         checkbox(pep_foreign), [#grid(
    220           columns: (auto, auto, auto),
    221           gutter: 0.5em,
    222           [Yes],
    223           [$=>$],
    224           [Classification of the business
    225            \ as increased risk is #underline([compulsory]).])],
    226       )],
    227     )
    228     #if ("" == get("COUNTRY_RISK_ACCEPTANCE_DATE")) [
    229       The decision of the Senior executive body on the acceptance of such a business relationship
    230       was #underline([not]) obtained.
    231     ] else [
    232       The decision of the Senior executive body on the acceptance of a such a business relationship
    233       was obtained on #underline([#get("COUNTRY_RISK_ACCEPTANCE_DATE")]).
    234     ]
    235   ]
    236 
    237   v(2em)
    238 
    239   // Section 3: Business Relationship Risk
    240 [= 3. Evaluation of business relationship risk]
    241 
    242   v(0.5em)
    243 
    244   grid(
    245     columns: (auto, 1fr),
    246     gutter: 0.5em,
    247     align: (left, left),
    248     pointingfinger(),
    249     text(size: 9pt)[
    250       This evaluation has to be completed by all members who have in total more than 20 customers for every business relationship. At least two risk categories have to be chosen and assessed.
    251     ]
    252   )
    253 
    254   v(1em)
    255 
    256   // Country Risk (Nationality)
    257   let nat_types = get("COUNTRY_RISK_NATIONALITY_TYPE", default: ())
    258   let nat_level = get("COUNTRY_RISK_NATIONALITY_LEVEL")
    259 
    260   block(breakable: false)[
    261   #text(size: 10pt, weight: "bold")[a) Country risk#footnote[Risk 0 = Risk Classification "Low"; Risk 1 = Risk Classification "Medium"; Risk 2 = Risk Classification "High".] (nationality)]
    262 
    263   #v(0.5em)
    264 
    265   #table(
    266     columns: (35%, 65%),
    267     stroke: 0.5pt + black,
    268     inset: 5pt,
    269     [#checkbox(false) *Domicile/residential address:*
    270      #grid(
    271        columns: (1em, auto, 1fr),
    272        inset: 1pt,
    273        [],
    274        checkbox(nat_types.contains("DOMICILE_CUSTOMER")),
    275        [Customer],
    276        [],
    277        checkbox(nat_types.contains("DOMICILE_OWNER")),
    278        [Beneficial owner of the assets],
    279        [],
    280        checkbox(nat_types.contains("DOMICILE_CONTROLLING")),
    281        [Controlling person],
    282      )
    283      \ #checkbox(false) *Nationality:*
    284      #grid(
    285        columns: (1em, auto, 1fr),
    286        gutter: 0.3em,
    287        [],
    288        checkbox(nat_types.contains("NATIONALITY_CUSTOMER")),
    289        [Customer],
    290        [],
    291        checkbox(nat_types.contains("NATIONALITY_OWNER")),
    292        [Beneficial owner of the assets],
    293      )],
    294     [#grid(
    295       columns: (auto, 1fr),
    296       inset: 1em,
    297       stroke: 0.5pt + black,
    298       [0],
    299       [#checkbox(nat_level == "LOW")
    300        Risk 0 acc. to VQF country list (VQF doc. no. 902.4.1)],
    301       [1],
    302       [#checkbox(nat_level == "MEDIUM")
    303        Risk 1 acc. to VQF country list (VQF doc. no. 902.4.1)],
    304       [2],
    305       [#checkbox(nat_level == "HIGH")
    306        Risk 2 acc. to VQF country list (VQF doc. no. 902.4.1)],
    307     )]
    308   )]
    309 
    310   v(1em)
    311 
    312   // Country Risk (Business)
    313   let bus_types = get("COUNTRY_RISK_BUSINESS_TYPE", default: ())
    314   let bus_level = get("COUNTRY_RISK_BUSINESS_LEVEL")
    315 
    316   block(breakable: false)[
    317   #text(size: 10pt, weight: "bold")[b) Country risk (business activity)]
    318 
    319   #v(0.5em)
    320 
    321   #table(
    322     columns: (35%, 65%),
    323     stroke: 0.5pt + black,
    324     inset: 5pt,
    325     [*Place of business activity:*
    326      #grid(
    327        columns: (1em, auto, 1fr),
    328        gutter: 0.3em,
    329        [],
    330        checkbox(bus_types.contains("CUSTOMER")),
    331        [Customer],
    332        [],
    333        checkbox(bus_types.contains("OWNER")),
    334        [Beneficial owner of the assets],
    335      )],
    336     [#grid(
    337       columns: (auto, 1fr),
    338       inset: 1em,
    339       stroke: 0.5pt + black,
    340       [0],
    341       [#checkbox(bus_level == "LOW")
    342        Risk 0 acc. to VQF country list (VQF doc. no. 902.4.1)],
    343       [1],
    344       [#checkbox(bus_level == "MEDIUM")
    345        Risk 1 acc. to VQF country list (VQF doc. no. 902.4.1)],
    346       [2],
    347       [#checkbox(bus_level == "HIGH")
    348        Risk 2 acc. to VQF country list (VQF doc. no. 902.4.1)],
    349     )]
    350   )]
    351 
    352   v(1em)
    353 
    354   // Country Risk (Payments)
    355   let pay_types = get("COUNTRY_RISK_PAYMENT_TYPE", default: ())
    356   let pay_level = get("COUNTRY_RISK_PAYMENTS_LEVEL")
    357 
    358   block(breakable: false)[
    359   #text(size: 10pt, weight: "bold")[c) Country risk (payments)]
    360 
    361   #v(0.5em)
    362 
    363   #table(
    364     columns: (35%, 65%),
    365     stroke: 0.5pt + black,
    366     inset: 5pt,
    367     [*Country of origin and destination of frequent payments (if known):*
    368      #grid(
    369        columns: (1em, auto, 1fr),
    370        gutter: 0.3em,
    371        [],
    372        checkbox(bus_types.contains("CUSTOMER")),
    373        [Customer],
    374        [],
    375        checkbox(bus_types.contains("OWNER")),
    376        [Beneficial owner of the assets],
    377      )],
    378     [#grid(
    379       columns: (auto, 1fr),
    380       inset: 1em,
    381       stroke: 0.5pt + black,
    382       [0],
    383       [#checkbox(pay_level == "LOW")
    384        Risk 0 acc. to VQF country list (VQF doc. no. 902.4.1)],
    385       [1],
    386       [#checkbox(pay_level == "MEDIUM")
    387        Risk 1 acc. to VQF country list (VQF doc. no. 902.4.1)],
    388       [2],
    389       [#checkbox(pay_level == "HIGH")
    390        Risk 2 acc. to VQF country list (VQF doc. no. 902.4.1)],
    391     )]
    392   )]
    393 
    394   v(1em)
    395 
    396 
    397 
    398   // Industry Risk
    399   let ind_types = get("INDUSTRY_RISK_TYPE", default: ())
    400   let ind_level = get("INDUSTRY_RISK_LEVEL")
    401 
    402   block(breakable: false)[
    403   #text(size: 10pt, weight: "bold")[d) Industry risk]
    404 
    405   #v(0.5em)
    406 
    407   #table(
    408     columns: (35%, 65%),
    409     stroke: 0.5pt + black,
    410     inset: 5pt,
    411     [*Nature of customer's business activity:*
    412      #grid(
    413        columns: (1em, auto, 1fr),
    414        gutter: 0.3em,
    415        [],
    416        checkbox(ind_types.contains("CUSTOMER")),
    417        [Customer],
    418        [],
    419        checkbox(ind_types.contains("OWNER")),
    420        [Beneficial owner of the assets],
    421      )],
    422     [#grid(
    423       columns: (auto, 1fr),
    424       inset: 0.5em,
    425       stroke: 0.5pt + black,
    426       [0],
    427       [#grid(
    428          columns: (auto, 1fr),
    429          inset: 0.2em,
    430          [#checkbox(ind_level == "TRANSPARENT")],
    431          [Clearly defined, transparent, easily comprehensible business activity well known to the member])],
    432       [1],
    433       [#grid(
    434          columns: (auto, 1fr),
    435          inset: 0.2em,
    436          [#checkbox(ind_level == "HIGH_CASH_TRANSACTION")],
    437          [Business activity with a high level of cash transactions],
    438          [#checkbox(ind_level == "NOT_WELL_KNOWN")],
    439          [Business activity not well known to the member])],
    440       [2],
    441       [#grid(
    442          columns: (auto, 1fr),
    443          inset: 0.2em,
    444          [#checkbox(ind_level == "HIGH_RISK_TRADE")],
    445          [Trade in munitions/arms, raw gem stones/diamonds, jewellery, international trade in exotic animals, casino and lottery business, trade in erotic wares],
    446          [#checkbox(ind_level == "UNKNOWN_INDUSTRY")],
    447          [Member has no personal knowledge of the customer's industry])]
    448     )]
    449   )]
    450 
    451   v(1em)
    452 
    453   // Contact Risk
    454   let contact_level = get("CONTACT_RISK_LEVEL")
    455   block(breakable: false)[
    456     #text(size: 10pt, weight: "bold")[e) Contact risk]
    457 
    458     #v(0.3em)
    459     #table(
    460       columns: (35%, 65%),
    461       stroke: 0.5pt + black,
    462       inset: 5pt,
    463       [*Type of contact to the customer/beneficial owner of the assets.*],
    464       [#grid(
    465        columns: (auto, 1fr),
    466        stroke: 0.5pt + black,
    467        inset: 5pt,
    468        [0],
    469        [#grid(
    470          columns: (auto, 1fr),
    471          inset: 0.2em,
    472          [#checkbox(contact_level == "LOW")],
    473          [Personal acquaintance between member and customer/beneficial owner of the assets over several years (at least 2) prior to entering into the business relationship.],
    474        )],
    475        [1],
    476        [#grid(
    477          columns: (auto, 1fr),
    478          inset: 0.2em,
    479          [#checkbox(contact_level == "MEDIUM")],
    480          [The customer/beneficial owner was not personally known to the member for several years (at least 2) prior to entering into the business relationship; however (a) no business was entered into in the absence of the customer/beneficial owner, or (b) the customer was at least introduced/brokered by a trusted third party.],
    481        )],
    482        [2],
    483        [#grid(
    484          columns: (auto, 1fr),
    485          inset: 0.2em,
    486          [#checkbox(contact_level == "HIGH")],
    487          [The customer/beneficial owner was not personally known to the member and business was entered into in the absence of the former (relationship by correspondence) and the customer was not introduced/brokered by a trusted third party.],
    488        )]
    489      )]
    490   )]
    491 
    492   v(2em)
    493 
    494   // Product Risk
    495   let prod_level = get("PRODUCT_RISK_LEVEL", default: ())
    496   block(breakable: false)[
    497     #text(size: 10pt, weight: "bold")[f) Product risk]
    498 
    499     #v(0.3em)
    500     #table(
    501       columns: (35%, 65%),
    502       stroke: 0.5pt + black,
    503       inset: 5pt,
    504       [*Nature of services and products requested by the customer*],
    505       [#grid(
    506        columns: (auto, 1fr),
    507        stroke: 0.5pt + black,
    508        inset: 5pt,
    509        [0],
    510        [#grid(
    511          columns: (auto, 1fr),
    512          inset: 0.2em,
    513          [#checkbox(prod_level.contains("EASY"))],
    514          [Easy to understand, transparent services and products whose financial background is easy to comprehend and verify.],
    515        )],
    516        [1],
    517        [#grid(
    518          columns: (auto, 1fr),
    519          inset: 0.2em,
    520          [#checkbox(prod_level.contains("SOPHISTICATED"))],
    521          [More sophisticated services/products whose financial background is not readily easy to comprehend and verify.],
    522        )],
    523        [2],
    524        [#grid(
    525          columns: (auto, 1fr),
    526          inset: 0.2em,
    527          [#checkbox(prod_level.contains("HIGH_OFFSHORE"))],
    528          [Main focus on offshore business (especially: relationships with domiciliary companies or other such offshore organisations) #v(0.5em)],
    529          [#checkbox(prod_level.contains("HIGH_COMPLEX"))],
    530          [Complex structures in particular by using a domiciliary company with fiduciary shareholders in a non-transparent jurisdiction, without comprehensible reason or for the purpose of short-term asset placement #v(0.5em)],
    531          [#checkbox(prod_level.contains("HIGH_PASSTHROUGH"))],
    532          [The customer or beneficial owner of the assets has a large number of accounts with pass-through transactions (pass-through accounts) #v(0.5em)],
    533          [#checkbox(prod_level.contains("HIGH_BACKGROUND"))],
    534          [Complex services/products whose financial background can’t be understood or verified with considerable effort. #v(0.5em)],
    535          [#checkbox(prod_level.contains("HIGH_FREQUENT_TMER"))],
    536          [Frequent transactions with increased risks #v(0.5em)],
    537        )]
    538      )]
    539   )]
    540 
    541   v(2em)
    542 
    543 
    544   // Summary Evaluation
    545   text(size: 11pt, weight: "bold")[Overall assessment of the business relationship]
    546 
    547   v(0.5em)
    548 
    549   block(
    550     fill: rgb("#f0f0f0"),
    551     inset: 10pt,
    552     width: 100%,
    553   )[
    554     A business relationship is classified as increased risk if:
    555 
    556     - Business relationship with PEP pursuant to numeral 1 (no exception possible)
    557     - Relationship with a person from a "high risk" or non-cooperative country according to numeral 2 (no exceptions possible)
    558     - Min. #underline[one] criterion pursuant to numeral 3 was assessed with #underline[risk 2] or min. #underline[two] criteria pursuant to numeral 3 were assessed with risk 1 (exception: justification by the member below why the business relationship overall does not have to be classified as increased risk despite the fact that individual risk criteria are increased).
    559   ]
    560 
    561   v(1em)
    562 
    563   let risk_class = get("RISK_CLASSIFICATION_LEVEL")
    564   let risk_class_low = "NO_HIGH_RISK" == risk_class
    565 
    566   table(
    567     columns: (40%, 60%),
    568     stroke: 0.5pt + black,
    569     inset: 5pt,
    570     [Justification for differing risk assessment],
    571     [#get("RISK_RATIONALE")],
    572     [Risk classified],
    573     [#grid(
    574        columns: (auto),
    575        gutter: 1em,
    576        [#checkbox(risk_class_low) *Business relationship #underline[without] increased risk*],
    577        [#checkbox(not risk_class_low) *Business relationship #underline[with] increased risk*],
    578      )]
    579   )
    580 
    581   v(0.5em)
    582 
    583   if ("" == get("HIGH_RISK_ACCEPTANCE_DATE")) [
    584     The decision of the Senior executive body on the acceptance of a business relationship with increased risk was #underline([not]) obtained.
    585   ] else [
    586     The decision of the Senior executive body on the acceptance of a business relationship with increased risk was obtained on #underline([#get("RISK_ACCEPTANCE_DATE")]).
    587   ]
    588 
    589 pagebreak()
    590 
    591 [
    592 = 4. Criteria for identification of increased risk transactions (transaction monitoring)
    593 
    594 == 4.1 Criteria
    595 
    596 Classification as as increased risk is compulsory if:
    597 
    598 + Transactions for which assets with an equivalent value of CHF 100'000.- or more are physically introduced at the beginning of the business relationship, either at once or in a staggered manner
    599 + Money and asset transfers ("money transfer") whereby a single transaction or multiple transactions which appear to be related reach or exceed the amount of CHF 5,000.-
    600 + Payments from or to a country that is considered to be "high risk" or non-cooperative by the FATF and for which increased diligence is required
    601 
    602 == 4.2 Additional criteria defined by the member
    603 
    604   #grid(
    605     columns: (auto, 1fr),
    606     gutter: 0.5em,
    607     align: (left, left),
    608     pointingfinger(),
    609     text(size: 9pt)[
    610       All members have to define min. 1 additional criterion for every business relationship to identify unusual transactions#footnote[
    611       Possible criteria (Art. 59 para. 2 SRO Regulations):
    612 - the amount of inflowing and outflowing assets; *or*
    613 - type, volume and frequency of transactions usual to the business relationship (considerable variance would be unusual); *or*
    614 - type, volume and frequency of transactions usual to comparable business relationships (considerable variance would be unusual); *or*
    615 - description of expected transaction patterns which the client notify the member of (considerable variance would be unusual); *or*
    616 - The country of origin or destination of payments, especially in the case of payments from or to a country considered by the FATF as "high risk" or non-cooperative.]
    617     ]
    618   )
    619 
    620 ]
    621 
    622   grid(
    623     columns: (100%),
    624     stroke: 0.5pt + black,
    625     inset: 5pt,
    626     align: (left, left),
    627     [#get("TRANSACTION_RISK_RULE")]
    628   )
    629 
    630 v(2em)
    631 
    632 text(size: 9pt, style: "italic")[⚠ *This form has to be updated immediately if changes occur.*]
    633 }