vqf_902_1.typ (13730B)
1 // VQF 902.1 Identification Form Template 2 // Pass JSON data as content dictionary 3 // NOTE: This is the original form. We don't use 4 // it as this form was split in customer + officer parts. 5 // Preserved here in case some auditor insists on us 6 // combining the two! 7 #import "@taler-exchange/common:0.0.0": vqflogo, pointingfinger, checkbox 8 9 #let form(data) = { 10 set page( 11 paper: "a4", 12 margin: (left: 2cm, right: 2cm, top: 2cm, bottom: 2.5cm), 13 footer: context [ 14 #grid( 15 columns: (1fr, 1fr), 16 align: (left, right), 17 text(size: 8pt)[ 18 VQF doc. Nr. 902.1#linebreak() 19 Version of 1 September 2021 20 ], 21 text(size: 8pt)[ 22 Page #here().page() of #counter(page).final().first() 23 ] 24 ) 25 ] 26 ) 27 28 set text(font: "Liberation Sans", size: 10pt) 29 set par(justify: false, leading: 0.65em) 30 31 // Helper function to get value or empty string 32 let get(key, default: "") = { 33 data.at(key, default: default) 34 } 35 36 // Helper function to get value or false 37 let getb(key, default: false) = { 38 data.at(key, default: default) 39 } 40 41 // Header 42 align(center, text(size: 11pt, weight: "bold")[CONFIDENTIAL]) 43 44 v(0.5em) 45 46 47 grid( 48 columns: (50%, 50%), 49 gutter: 1em, 50 vqflogo(), 51 52 align(right)[ 53 #table( 54 columns: (1fr, 1fr), 55 stroke: 0.5pt + black, 56 inset: 5pt, 57 align: (left, left), 58 [VQF member no.], [AMLA File No.], 59 [#get("VQF_MEMBER_NUMBER")], [#get("FILE_NUMBER")] 60 ) 61 ] 62 ) 63 64 v(1em) 65 66 align(left, text(size: 14pt, weight: "bold")[Identification Form]) 67 68 v(-1em) 69 line(length:100%) 70 71 grid( 72 columns: (auto, 1fr), 73 gutter: 0.5em, 74 align: (left, left), 75 pointingfinger(), 76 text(size: 9pt)[ 77 The customer has to be identified on entering into a permanent business relationship or on concluding a cash transaction, which meets the according threshold. 78 ] 79 ) 80 81 v(1em) 82 83 text(weight: "bold")[This form was completed by:] 84 85 v(0.3em) 86 87 table( 88 columns: (1fr, 1fr), 89 stroke: 0.5pt + black, 90 inset: 5pt, 91 align: (left, left), 92 [Full name], [#get("FILED_BY_NAME")], 93 [Date], [#get("FILING_DATE")], 94 ) 95 96 v(1.5em) 97 98 // Section 1: Information on customer 99 text(size: 11pt, weight: "bold")[1. Information on customer#footnote[The customer is the person with whom the member concludes the contract with regard to the financial service provided (civil law). Does the member act as director of a domiciliary company, this domiciliary company is the customer.]] 100 101 v(0.5em) 102 103 let is_natural = get("CUSTOMER_TYPE") == "NATURAL_PERSON" 104 let is_legal = get("CUSTOMER_TYPE") == "LEGAL_ENTITY" 105 106 // Section 1a: Natural Person 107 grid( 108 columns: (auto, 1fr), 109 gutter: 0.5em, 110 checkbox(is_natural), 111 [a) The customer is a #underline([natural]) person:] 112 ) 113 114 block(breakable: false)[ 115 #table( 116 columns: (35%, 65%), 117 stroke: 0.5pt + black, 118 inset: 5pt, 119 [Full name\*], if is_natural { get("FULL_NAME") } else { "" }, 120 [Residential address\*], if is_natural { get("DOMICILE_ADDRESS") } else { "" }, 121 [Telephone], if is_natural { get("CONTACT_PHONE") } else { "" }, 122 [E-mail], if is_natural { get("CONTACT_EMAIL") } else { "" }, 123 [Date of birth\*], if is_natural { get("DATE_OF_BIRTH") } else { "" }, 124 [Nationality\*], if is_natural { get("NATIONALITY") } else { "" }, 125 [Identification document\*], [#checkbox(is_natural) *Copy enclosed in appendix*], 126 ) 127 #v(-1em) 128 #text(size: 8pt)[*\* mandatory*] 129 ] 130 v(1em) 131 132 // Sole proprietorship section 133 text(weight: "bold")[For sole proprietorship (supplement to above):] 134 135 let is_sole = is_natural and (get("CUSTOMER_IS_SOLE_PROPRIETOR") == true or get("CUSTOMER_IS_SOLE_PROPRIETOR") == "true") 136 137 table( 138 columns: (35%, 65%), 139 stroke: 0.5pt + black, 140 inset: 5pt, 141 [Company name], if is_sole { get("COMPANY_NAME") } else { "" }, 142 [Registered office], if is_sole { get("REGISTERED_OFFICE_ADDRESS") } else { "" }, 143 [Company identification document], [#checkbox(is_sole) *Copy enclosed in appendix*], 144 ) 145 146 v(1em) 147 148 // Section 1b: Legal Entity 149 grid( 150 columns: (auto, 1fr), 151 gutter: 0.5em, 152 checkbox(is_legal), 153 [*b) The customer is a legal entity:*] 154 ) 155 156 block(breakable: false)[ 157 #table( 158 columns: (35%, 65%), 159 stroke: 0.5pt + black, 160 inset: 5pt, 161 [Company name\*], if is_legal { get("COMPANY_NAME") } else { "" }, 162 [Domicile\*], if is_legal { get("DOMICILE_ADDRESS") } else { "" }, 163 [Contact person], if is_legal { get("CONTACT_PERSON_NAME") } else { "" }, 164 [Telephone], if is_legal { get("CONTACT_PHONE") } else { "" }, 165 [E-mail], if is_legal { get("CONTACT_EMAIL") } else { "" }, 166 [Identification document\*\ (not older than 12 months)], [#checkbox(is_legal) *Copy enclosed in appendix*], 167 ) 168 169 #v(-1em) 170 #text(size: 8pt)[*\* mandatory*] 171 ] 172 v(0.5em) 173 174 // Section 2: Natural persons establishing business relationship 175 text(size: 11pt, weight: "bold")[2. Information on the natural persons who establish the business relationship for legal entities and partnerships] 176 177 v(0.5em) 178 179 grid( 180 columns: (auto, 1fr), 181 gutter: 0.5em, 182 align: (left, left), 183 pointingfinger(), 184 text(size: 9pt)[ 185 For legal entities and partnerships the identity of the natural persons who establish the business relationship must be verified. 186 ] 187 ) 188 189 v(1em) 190 191 let establishers = get("ESTABLISHER_LIST", default: ()) 192 let has_establishers = is_legal and type(establishers) == array and establishers.len() > 0 193 194 // Show at least 1 table for establishers to match VQF form 195 let num_cols = if has_establishers { calc.max(1, establishers.len()) } else { 1 } 196 197 for col_idx in range(num_cols) { 198 if col_idx > 0 { 199 h(2em) 200 } 201 } 202 203 // Create a table for each establisher 204 range(num_cols).map(col_idx => { 205 let establisher = if has_establishers and col_idx < establishers.len() { 206 establishers.at(col_idx) 207 } else { 208 (:) 209 } 210 211 let get_est(key) = { 212 if establisher != (:) { 213 establisher.at(key, default: "") 214 } else { 215 "" 216 } 217 } 218 219 block(breakable: false)[ 220 #table( 221 columns: (35%, 65%), 222 stroke: 0.5pt + black, 223 inset: 5pt, 224 [Full name\*], 225 [#get_est("FULL_NAME")], 226 [Residential address\*], 227 [#get_est("DOMICILE_ADDRESS")], 228 [Date of birth\*], 229 [#get_est("DATE_OF_BIRTH")], 230 [Nationality\*], 231 [#get_est("NATIONALITY")], 232 [Type of authorisation\ (signatory of representation)\*], 233 [#get_est("SIGNING_AUTHORITY_TYPE")], 234 [Identification document\*], 235 [#checkbox(establisher != (:)) *Copy enclosed in appendix*], 236 [*Power of attorney arrangements\**], 237 [#let evidence = get_est("SIGNING_AUTHORITY_EVIDENCE") 238 #grid( 239 columns: (auto, 1fr), 240 gutter: 0.5em, 241 row-gutter: 0.3em, 242 checkbox(evidence == "CR"), 243 [CR extract], 244 checkbox(evidence == "MANDATE"), 245 [Mandate], 246 checkbox(evidence == "OTHER"), 247 [Other: #get_est("SIGNING_AUTHORITY_EVIDENCE_OTHER")], 248 ) 249 ] 250 ) 251 #v(-1em) 252 #text(size: 8pt)[*\* mandatory*] 253 ] 254 }).join() 255 256 257 258 v(2em) 259 260 // Section 3: Acceptance of business relationship 261 text(size: 11pt, weight: "bold")[3. Acceptance of business relationship] 262 263 v(0.5em) 264 265 let acceptance = get("ACCEPTANCE_METHOD") 266 let lang = get("CORRESPONDENCE_LANGUAGE") 267 table( 268 columns: (35%, 65%), 269 stroke: 0.5pt + black, 270 inset: 5pt, 271 [Date (conclusion of contract)], get("ACCEPTANCE_DATE"), 272 [Accepted by], 273 [#grid( 274 columns: (auto, 1fr), 275 gutter: 0.5em, 276 checkbox(acceptance == "FACE_TO_FACE"), 277 [Face-to-face meeting with customer], 278 checkbox(acceptance == "WAY_OF_CORRESPONDENCE"), 279 [Way of correspondence: 280 \ #v(-0.7em) #grid( 281 columns: (0.2em, auto), 282 gutter: 0.5em, 283 row-gutter: 0.3em, 284 [], 285 [#checkbox(acceptance == "AUTHENTICATED_COPY") 286 authenticated copy of identification document obtained], 287 [], 288 [#checkbox(acceptance == "RESIDENTIAL_ADDRESS_VALIDATED") 289 residential address validated] 290 ) 291 ] 292 )], 293 [Type of correspondence service], 294 [#grid( 295 columns: (auto), 296 gutter: 0.2em, 297 [#checkbox(true) to the customer], 298 [#checkbox(false) hold at bank], 299 [#checkbox(false) to the member], 300 [#checkbox(false) 301 to a third party (full name and address):], 302 )], 303 [Language], 304 [#grid( 305 columns: (auto), 306 gutter: 0.2em, 307 [#checkbox(lang == "de") German], 308 [#checkbox(lang == "en") English], 309 [#checkbox(lang == "fr") French], 310 [#checkbox(lang != "fr" and lang != "de" and lang != "en") 311 Other: #lang], 312 )], 313 [Further information], 314 [#get("ACCEPTANCE_FURTHER_INFO")] 315 ) 316 317 // Section 4: Beneficial owner 318 text(size: 11pt, weight: "bold")[4. Information on the beneficial owner of the assets and/or controlling person] 319 320 v(0.5em) 321 322 let customer_type_vqf = get("CUSTOMER_TYPE_VQF") 323 grid( 324 columns: (35%,65%), 325 stroke: 0.5pt + black, 326 inset: 5pt, 327 [Establishment of the beneficial owner of the assets and/or controlling person.], 328 [The customer is: 329 #grid( 330 columns: (1.1em, auto), 331 inset: 5pt, 332 [#checkbox(customer_type_vqf == "NATURAL_PERSON")], 333 [a natural person and there are no doubts that this person is the sole beneficial owner of the assets], 334 [#checkbox(customer_type_vqf == "OPERATIONAL")], 335 [an operational legal entity or partnership #h(1fr) 336 \ $=>$ VQF doc. No. 902.11 (K)], 337 [#checkbox(customer_type_vqf == "FOUNDATION")], 338 [a foundation (or a similar construct; incl. underlying companies) 339 \ $=>$ VQF doc. No. 902.12 (S)], 340 [#checkbox(customer_type_vqf == "TRUST")], 341 [a trust (incl. underlying companies) 342 \ $=>$ VQF doc. No. 902.13 (T)], 343 [#checkbox(customer_type_vqf == "LIFE_INSURANCE")], 344 [a life insurance policy with separately managed accounts/ securities accounts (so-called insurance wrappers) 345 \ $=>$ VQF doc. No. 902.15 (I)], 346 [#checkbox(customer_type_vqf == "OTHER")], 347 [all other cases 348 $=>$ VQF doc. No. 902.9 (A)], 349 )] 350 ) 351 352 v(2em) 353 354 // Section 5: Embargo/terrorism evaluation 355 text(size: 11pt, weight: "bold")[5. Evaluation with regard to embargo procedures/terrorism lists on establishing the business relationship] 356 357 v(0.5em) 358 359 table( 360 columns: (35%, 65%), 361 stroke: 0.5pt + black, 362 inset: 5pt, 363 [Verification whether the customer, beneficial owners of the assets, controlling persons, authorised representatives or other involved persons are listed on an embargo-/terrorism list (date of verification/result)#footnote[The evaluation must be made at the beginning of the business relationship and has to be repeated in the case of permanent business relationship every time the according lists are updated.]], 364 [Date: #get("EMBARGO_TERRORISM_CHECK_DATE") 365 \ Result: #get("EMBARGO_TERRORISM_CHECK_RESULT")], 366 ) 367 368 v(2em) 369 370 // Section 6: Cash transactions 371 text(size: 11pt, weight: "bold")[6. In the case of cash transactions/occasional customers: Information on type and purpose of business relationship] 372 373 v(0.5em) 374 375 grid( 376 columns: (auto, 1fr), 377 gutter: 0.5em, 378 align: (left, left), 379 pointingfinger(), 380 text(size: 9pt)[ 381 These details are only necessary for occasional customers, i.e. money exchange, money and asset transfer or other cash transactions provided that #underline([no]) customer profile (VQF doc. No. 902.5) is created 382 ] 383 ) 384 385 v(1em) 386 387 table( 388 columns: (35%, 65%), 389 stroke: 0.5pt + black, 390 inset: 5pt, 391 [Type of business relationship], 392 [#grid( 393 columns: (auto), 394 gutter: 0.2em, 395 [#checkbox(false) Money exchange], 396 [#checkbox(false) Money and asset transfer], 397 [#checkbox(false) Other cash transaction, specify?], 398 )], 399 [Purpose of the business relationship\ (purpose of service requested)], [], 400 ) 401 402 // Section 7: Enclosures 403 text(size: 11pt, weight: "bold")[7. Enclosures] 404 405 v(0.5em) 406 407 grid( 408 columns: (auto, 1fr), 409 stroke: 0.5pt + black, 410 inset: 5pt, 411 checkbox("" != get("CUSTOMER_ID_AMLA_FILE_REFERENCE_NO")), [Customer identification documents (or: reference#footnote[If the identification document is lists kept in another AMLA-File (in the case of Art. 15 para. 3 SRO Regulations) a reference to the according AMLA-File is sufficient.] to AMLA File No.: #underline([#get("CUSTOMER_ID_AMLA_FILE_REFERENCE_NO")]))], 412 checkbox("" != get("ESTABLISHER_ID_AMLA_FILE_REFERENCE_NO")), [Identification document of persons establishing the business relationship (or: reference to AMLA File No.: #underline([#get("ESTABLISHER_ID_AMLA_FILE_REFERENCE_NO")]))], 413 checkbox(getb("HAVE_vqf_902_9") or getb("HAVE_vqf_902_11_customer") or getb("HAVE_vqf_902_11_officer") or getb("HAVE_vqf_902_12") or getb("HAVE_vqf_902_13") or getb("HAVE_vqf_902_15")), [Establishing of the beneficial owner of the assets/controlling person (VQF Doc No. 902.15, 902.9, 902.11, 902.12 or 902.13)], 414 checkbox(getb("HAVE_vqf_902_5")), [Customer profile (VQF doc. No. 902.5; only in the case of permanent business relationship and regular customers)], 415 checkbox(getb("HAVE_vqf_902_4")), [Risk profile (VQF doc. No. 902.4)], 416 ) 417 418 v(1em) 419 420 text(size: 9pt, style: "italic")[⚠ *This form has to be updated when changes occur.*] 421 422 }