kyc-rules-tops.conf (14725B)
1 [exchange] 2 3 # Better enable KYC. 4 ENABLE_KYC = YES 5 6 # Hard limits 7 [kyc-rule-withdraw-limit-monthly] 8 OPERATION_TYPE = WITHDRAW 9 NEXT_MEASURES = verboten 10 EXPOSED = YES 11 ENABLED = YES 12 THRESHOLD = CHF:2500 13 TIMEFRAME = "30 days" 14 15 [kyc-rule-withdraw-limit-annually] 16 OPERATION_TYPE = WITHDRAW 17 NEXT_MEASURES = verboten 18 EXPOSED = YES 19 ENABLED = YES 20 THRESHOLD = CHF:15000 21 TIMEFRAME = "365 days" 22 23 # Limit on merchant transactions 24 [kyc-rule-transaction-limit] 25 OPERATION_TYPE = TRANSACTION 26 NEXT_MEASURES = verboten 27 EXPOSED = YES 28 ENABLED = YES 29 THRESHOLD = CHF:1000 30 TIMEFRAME = "1 days" 31 32 [kyc-rule-balance-limit] 33 OPERATION_TYPE = BALANCE 34 NEXT_MEASURES = verboten 35 EXPOSED = YES 36 # Note: Disabled, kept in case we ever want to impose a limit on wallet balances. 37 ENABLED = NO 38 THRESHOLD = CHF:1000 39 TIMEFRAME = "1 days" 40 41 # Note: For *testing* KYC processes. 42 [kyc-rule-balance-testing-limit1] 43 OPERATION_TYPE = BALANCE 44 NEXT_MEASURES = sms-registration 45 EXPOSED = YES 46 ENABLED = YES 47 THRESHOLD = CHF:1 48 TIMEFRAME = "1 days" 49 50 # Note: For *testing* KYC processes. 51 [kyc-rule-balance-testing-limit5] 52 OPERATION_TYPE = BALANCE 53 NEXT_MEASURES = kyx 54 EXPOSED = YES 55 ENABLED = YES 56 THRESHOLD = CHF:5 57 TIMEFRAME = "1 days" 58 59 # Note: For *testing* KYC processes. 60 [kyc-rule-balance-testing-limit10] 61 OPERATION_TYPE = BALANCE 62 NEXT_MEASURES = sms-registration postal-registration 63 EXPOSED = YES 64 ENABLED = YES 65 THRESHOLD = CHF:10 66 TIMEFRAME = "1 days" 67 68 # SMS identification limit on withdraw (voluntary rule) 69 [kyc-rule-withdraw-limit-low] 70 OPERATION_TYPE = WITHDRAW 71 NEXT_MEASURES = sms-registration 72 EXPOSED = YES 73 ENABLED = YES 74 THRESHOLD = CHF:200 75 TIMEFRAME = "30 days" 76 77 # Deposit requires ToS acceptance, this way we ensure bank account is confirmed! 78 [kyc-rule-deposit-limit-zero] 79 OPERATION_TYPE = DEPOSIT 80 NEXT_MEASURES = accept-tos 81 EXPOSED = YES 82 ENABLED = YES 83 THRESHOLD = CHF:0 84 TIMEFRAME = "1 days" 85 86 # Aggregation limits 87 [kyc-rule-deposit-limit-monthly] 88 OPERATION_TYPE = AGGREGATE 89 NEXT_MEASURES = kyx 90 EXPOSED = YES 91 ENABLED = YES 92 THRESHOLD = CHF:2500 93 TIMEFRAME = "30 days" 94 95 [kyc-rule-deposit-limit-annually] 96 OPERATION_TYPE = AGGREGATE 97 NEXT_MEASURES = kyx 98 EXPOSED = YES 99 ENABLED = YES 100 THRESHOLD = CHF:15000 101 TIMEFRAME = "365 days" 102 103 # P2P limits 104 [kyc-rule-p2p-limit-monthly] 105 OPERATION_TYPE = MERGE 106 NEXT_MEASURES = verboten 107 EXPOSED = YES 108 ENABLED = YES 109 THRESHOLD = CHF:2500 110 TIMEFRAME = "30 days" 111 112 [kyc-rule-p2p-limit-annually] 113 OPERATION_TYPE = MERGE 114 NEXT_MEASURES = verboten 115 EXPOSED = YES 116 ENABLED = YES 117 THRESHOLD = CHF:15000 118 TIMEFRAME = "365 days" 119 120 [kyc-rule-p2p-domestic-identification-requirement] 121 OPERATION_TYPE = MERGE 122 NEXT_MEASURES = sms-registration postal-registration 123 IS_AND_COMBINATOR = NO 124 EXPOSED = YES 125 ENABLED = YES 126 THRESHOLD = CHF:0 127 TIMEFRAME = "30 days" 128 129 # #################### KYC measures ####################### 130 131 # Fallback measure on errors. 132 [kyc-measure-freeze-investigate] 133 CHECK_NAME = skip 134 PROGRAM = freeze-investigate 135 VOLUNTARY = NO 136 CONTEXT = {} 137 138 [kyc-measure-sms-registration] 139 CHECK_NAME = sms-registration 140 PROGRAM = tops-sms-check 141 VOLUNTARY = YES 142 # 63072000000000 is 2 years (in microseconds) 143 CONTEXT = {"expiration_time":{"d_us": 63072000000000}} 144 145 [kyc-measure-postal-registration] 146 CHECK_NAME = postal-registration 147 PROGRAM = tops-postal-check 148 VOLUNTARY = YES 149 # 157680000000000 is 5 years (in microseconds) 150 CONTEXT = {"expiration_time":{"d_us": 157680000000000}} 151 152 [kyc-measure-accept-tos] 153 CHECK_NAME = form-accept-tos 154 PROGRAM = check-tos 155 # 157680000000000 is 5 years (in microseconds) 156 CONTEXT = {"tos_url":"https://exchange.taler-ops.ch/terms","provider_name":"Taler Operations AG", "expiration_time":{"d_us": 157680000000000}, "successor_measure":"accept-tos"} 157 VOLUNTARY = NO 158 159 [kyc-measure-kyx] 160 CHECK_NAME = form-vqf-902.1 161 PROGRAM = tops-kyx-check 162 VOLUNTARY = NO 163 CONTEXT = {} 164 165 [kyc-measure-form-902.9] 166 CHECK_NAME = form-vqf-902.9 167 # FIXME: address validation via PIN instead! 168 PROGRAM = preserve-investigate 169 VOLUNTARY = NO 170 CONTEXT = {} 171 172 [kyc-measure-form-902.11] 173 CHECK_NAME = form-vqf-902.11 174 PROGRAM = preserve-investigate 175 # FIXME: in the future, change to: 176 # PROGRAM = tops-check-controlling-entity 177 VOLUNTARY = NO 178 CONTEXT = {} 179 180 [kyc-measure-form-902.12] 181 CHECK_NAME = form-vqf-902.12 182 # FIXME: address validation via PIN instead! 183 PROGRAM = preserve-investigate 184 VOLUNTARY = NO 185 CONTEXT = {} 186 187 [kyc-measure-form-902.13] 188 CHECK_NAME = form-vqf-902.13 189 # FIXME: address validation via PIN instead! 190 PROGRAM = preserve-investigate 191 VOLUNTARY = NO 192 CONTEXT = {} 193 194 [kyc-measure-form-902.15] 195 CHECK_NAME = form-vqf-902.15 196 # FIXME: address validation via PIN instead! 197 PROGRAM = preserve-investigate 198 VOLUNTARY = NO 199 CONTEXT = {} 200 201 # ##################### KYC checks ########################### 202 203 [kyc-check-form-info-internal-error] 204 TYPE = INFO 205 DESCRIPTION = "We encountered an internal error. Staff has been notified. Please be patient." 206 DESCRIPTION_I18N = {"de":"Interner Fehler. Mitarbeiter wurden informiert. Bitte warten."} 207 FALLBACK = default-investigate 208 209 [kyc-check-form-info-investigation] 210 TYPE = INFO 211 DESCRIPTION = "Staff is checking your case. Please be patient." 212 DESCRIPTION_I18N = {"de":"Mitarbeiter prüfen ihren Fall. Bitte warten."} 213 FALLBACK = default-investigate 214 215 [kyc-check-sms-registration] 216 TYPE = LINK 217 PROVIDER_ID = sms-challenger 218 DESCRIPTION = "Confirm Swiss mobile phone number via SMS TAN" 219 DESCRIPTION_I18N = {"de":"Schweizer Mobiltelefonnummer via SMS TAN bestätigen"} 220 OUTPUTS = "CONTACT_PHONE" 221 FALLBACK = default-investigate 222 223 [kyc-check-email-registration] 224 TYPE = LINK 225 PROVIDER_ID = email-challenger 226 DESCRIPTION = "Confirm email address via TAN" 227 DESCRIPTION_I18N = {"de":"Email addresse via TAN bestätigen"} 228 OUTPUTS = "CONTACT_EMAIL" 229 FALLBACK = default-investigate 230 231 [kyc-check-postal-registration] 232 TYPE = LINK 233 PROVIDER_ID = postal-challenger 234 DESCRIPTION = "Register Swiss postal address via TAN letter" 235 DESCRIPTION_I18N = {"de":"Schweizer Addresse via TAN Brief bestätigen"} 236 OUTPUTS = "PERSON_FULL_NAME ADDRESS_STREET ADDRESS_TOWN_LOCATION ADDRESS_ZIPCODE ADDRESS_COUNTRY_CC" 237 FALLBACK = default-investigate 238 239 # This check can be triggered by AML programs and/or AML officers, 240 # it do not appear directly in this configuration as it is triggered 241 # only indirectly. 242 [kyc-check-kycaid-individual] 243 TYPE = LINK 244 PROVIDER_ID = kycaid-individual 245 DESCRIPTION = "Provider personal identification data via KYCAID provider" 246 DESCRIPTION_I18N = {"de":"Persönliche Identifikation via KYCAID Service druchführen"} 247 OUTPUTS = "PERSON_FULL_NAME PERSON_DATE_OF_BIRTH PERSON_NATIONALITY_CC ADDRESS_STREET ADDRESS_TOWN_LOCATION ADDRESS_ZIPCODE ADDRESS_COUNTRY_CC PERSON_NATIONAL_ID_SCAN TAX_ID" 248 FALLBACK = default-investigate 249 250 # This check can be triggered by AML programs and/or AML officers, 251 # it do not appear directly in this configuration as it is triggered 252 # only indirectly. 253 [kyc-check-kycaid-business] 254 TYPE = LINK 255 PROVIDER_ID = kycaid-business 256 DESCRIPTION = "Provide business identification via KYCAID provider" 257 DESCRIPTION_I18N = {"de":"Geschäftsidentifikation via KYCAID durchführen"} 258 # FIXME: correct output labels? FIXME: questionable we can get those from KYCAID... 259 # FIXME: lower case names are missing in GANA 260 OUTPUTS = "BUSINESS_NAME ADDRESS_STREET ADDRESS_TOWN_LOCATION ADDRESS_ZIPCODE ADDRESS_COUNTRY_CC company_identification_document power_of_atorney_document BUSINESS_REGISTRATION_ID business_registration_document registration_authority_name tops_controlling_owner_identifications" 261 FALLBACK = default-investigate 262 263 # FIXME: consider moving these into the exchange default config! 264 [kyc-check-form-accept-tos] 265 TYPE = FORM 266 FORM_NAME = accept-tos 267 DESCRIPTION = "Ask user to accept Taler Operations terms of service" 268 DESCRIPTION_I18N = {"de":"Geschäftsbedingungen akzeptieren"} 269 # This form field must be set to the etag (!) of the accepted /terms! 270 OUTPUTS = ACCEPTED_TERMS_OF_SERVICE 271 FALLBACK = preserve-investigate 272 273 [kyc-check-form-vqf-902.1] 274 TYPE = FORM 275 FORM_NAME = vqf_902_1_customer 276 DESCRIPTION = "Ask user to supply VQF form 902.1" 277 DESCRIPTION_I18N = {"de":"Formular VQF 902.1 hochladen"} 278 OUTPUTS = CUSTOMER_TYPE CUSTOMER_TYPE_VQF 279 # OPTIONAL: NAME, ADDRESS, ID DOCS, ETC. DEPENDING ON LEGAL ENEITYT TYPE 280 # => aml program will decide on legal entity type between no more forms 281 # or vqf_902_9, 11, 12, 13, 15. => after that, AML officer 282 FALLBACK = preserve-investigate 283 284 [kyc-check-form-vqf-902.9] 285 TYPE = FORM 286 FORM_NAME = vqf_902_9 287 DESCRIPTION = "Ask user to supply VQF form 902.9" 288 DESCRIPTION_I18N = {"de":"Formular VQF 902.9 hochladen"} 289 OUTPUTS = SUBMITTED_BY CONTRACTING_PARTY BENEFICIAL_OWNER_LIST 290 FALLBACK = preserve-investigate 291 292 [kyc-check-form-vqf-902.11] 293 TYPE = FORM 294 FORM_NAME = vqf_902_11 295 DESCRIPTION = "Ask user to supply VQF form 902.11" 296 DESCRIPTION_I18N = {"de":"Formular VQF 902.11 hochladen"} 297 OUTPUTS = SUBMITTED_BY CONTRACTING_PARTY CONTROL_REASON CONTROLLING_LIST THIRD_PARTY_OWNERSHIP 298 FALLBACK = preserve-investigate 299 300 [kyc-check-form-vqf-902.12] 301 TYPE = FORM 302 # FIXME : This form will not be supported for the TOPS MVP 303 FORM_NAME = vqf_902_12 304 DESCRIPTION = "Ask user to supply VQF form 902.12" 305 DESCRIPTION_I18N = {"de":"Formular VQF 902.12 hochladen"} 306 # FIXME: list correct outputs for each form here (and update GANA) 307 OUTPUTS = LEGAL_ENTITY_TYPE 308 FALLBACK = preserve-investigate 309 310 [kyc-check-form-vqf-902.13] 311 TYPE = FORM 312 # FIXME : This form will not be supported for the TOPS MVP 313 FORM_NAME = vqf_902_13 314 DESCRIPTION = "Ask user to supply VQF form 902.13" 315 DESCRIPTION_I18N = {"de":"Formular VQF 902.13 hochladen"} 316 # FIXME: list correct outputs for each form here (and update GANA) 317 OUTPUTS = LEGAL_ENTITY_TYPE 318 FALLBACK = preserve-investigate 319 320 [kyc-check-form-vqf-902.15] 321 TYPE = FORM 322 # FIXME : This form will not be supported for the TOPS MVP 323 FORM_NAME = vqf_902_15 324 DESCRIPTION = "Ask user to supply VQF form 902.15" 325 DESCRIPTION_I18N = {"de":"Formular VQF 902.15 hochladen"} 326 # FIXME: list correct outputs for each form here (and update GANA) 327 OUTPUTS = LEGAL_ENTITY_TYPE 328 FALLBACK = preserve-investigate 329 330 #[kyc-measure-tops-check-controlling-entity] 331 #TYPE = SKIP 332 #CONTEXT = {} 333 #PROGRAM = tops-check-controlling-entity 334 335 [kyc-measure-preserve-investigate] 336 TYPE = SKIP 337 CONTEXT = {} 338 PROGRAM = preserve-investigate 339 340 [kyc-measure-default-investigate] 341 TYPE = SKIP 342 CONTEXT = {} 343 PROGRAM = default-investigate 344 345 346 # ##################### AML programs ######################### 347 348 [aml-program-freeze-investigate] 349 DESCRIPTION = "Fallback measure on errors that freezes the account and asks AML staff to investigate the system failure." 350 COMMAND = taler-exchange-helper-measure-freeze 351 ENABLED = YES 352 FALLBACK = freeze-investigate 353 354 [aml-program-default-investigate] 355 DESCRIPTION = "Fallback measure on errors that keeps default rules on the account but asks AML staff to investigate the system failure." 356 COMMAND = taler-exchange-helper-measure-defaults-but-investigate 357 ENABLED = YES 358 FALLBACK = freeze-investigate 359 360 [aml-program-preserve-investigate] 361 DESCRIPTION = "Fallback measure on errors that preserves current rules on the account but asks AML staff to investigate the system failure." 362 COMMAND = taler-exchange-helper-measure-preserve-but-investigate 363 ENABLED = YES 364 FALLBACK = freeze-investigate 365 366 [aml-program-inform-investigate] 367 DESCRIPTION = "Measure that asks AML staff to investigate an account and informs the account owner about it." 368 COMMAND = taler-exchange-helper-measure-inform-investigate 369 ENABLED = YES 370 FALLBACK = freeze-investigate 371 372 # this program should require context 'tos_url' and 'provider_name' 373 # and require attribute "ACCEPTED_TERMS_OF_SERVICE" 374 [aml-program-check-tos] 375 DESCRIPTION = "Measure that enables deposits after the ToS have been accepted." 376 COMMAND = taler-exchange-helper-measure-enable-deposits 377 ENABLED = YES 378 FALLBACK = freeze-investigate 379 380 [aml-program-preserve-set-expire-from-context] 381 DESCRIPTION = "Measure that preserves the current rules but sets them to expire based on the context. The successor measure to activate on expiration can also be specified in the context. Useful when AML staff merely wants to set an expiration date." 382 COMMAND = taler-exchange-helper-measure-preserve-set-expiration 383 ENABLED = YES 384 FALLBACK = freeze-investigate 385 386 [aml-program-preserve-set-expire-from-context] 387 DESCRIPTION = "Measure that modifies the current rules by combining them with those from the context. The expiration time and successor measure to activate on expiration can also be specified in the context. Useful when AML staff merely wants to update rules." 388 COMMAND = taler-exchange-helper-measure-update-from-context 389 ENABLED = YES 390 FALLBACK = freeze-investigate 391 392 [aml-program-tops-sms-check] 393 DESCRIPTION = "Program that checks that the user was able to receive an SMS at a Swiss mobile phone number. Enables receiving P2P payments by lifiting kyc-rule-p2p-domestic-identification-requirement and also lifts the kyc-rule-withdraw-limit-low. The new rules expire after 2 years." 394 COMMAND = taler-exchange-helper-measure-tops-sms-check 395 ENABLED = YES 396 FALLBACK = freeze-investigate 397 398 [aml-program-tops-postal-check] 399 DESCRIPTION = "Program that checks that the user was able to postal mail at a Swiss postal address. Enables receiving P2P payments by lifiting kyc-rule-p2p-domestic-identification-requirement and also lifts the kyc-rule-withdraw-limit-low. The new rules expire after 5 years." 400 COMMAND = taler-exchange-helper-measure-tops-postal-check 401 ENABLED = YES 402 FALLBACK = freeze-investigate 403 404 [aml-program-tops-kyx-check] 405 DESCRIPTION = "Program that determines what kind of KYC/KYB process should be run based on a first form supplied by the user. Determines the next checks to run. Always concludes by passing all results to an AML officer. Rules are preserved." 406 COMMAND = taler-exchange-helper-measure-tops-kyx-check 407 ENABLED = YES 408 FALLBACK = freeze-investigate 409 410 # FIXME: enable with new debian package... 411 #[aml-program-tops-check-controlling-entity] 412 #DESCRIPTION = "Program that checks if the 'Controlling entity 3rd persion' checkbox was set, and if so triggers the optional form VQF 902.9. Then in either case ensures we run the address validation logic. Always concludes by passing all results to an AML officer. Rules are preserved." 413 # COMMAND = taler-exchange-helper-measure-tops-3rdparty-check 414 #ENABLED = YES 415 #FALLBACK = freeze-investigate 416 417 418 ########### 419 # GLS Forms 420 ########### 421 422 [kyc-check-form-gls-onboarding] 423 TYPE = FORM 424 FORM_NAME = gls-onboarding 425 DESCRIPTION = "testing gls onboarding" 426 DESCRIPTION_I18N = {"de":"w"} 427 OUTPUTS = PERSON_FULL_NAME PERSON_LAST_NAME CONTACT_PHONE CONTACT_EMAIL ACCEPTED_TERMS_OF_SERVICE BUSINESS_DISPLAY_NAME BUSINESS_REGISTRATION_ID BUSINESS_LEGAL_JURISDICTION BUSINESS_REGISTRATION_DATE BUSINESS_IS_NON_PROFIT BUSINESS_INDUSTRY ADDRESS_STREET_NAME ADDRESS_STREET_NUMBER ADDRESS_COUNTRY_CC TAX_COUNTRY_CC TAX_IS_USA_LAW TAX_IS_ACTIVE TAX_IS_DEDUCTED BUSINESS_LEGAL_REPRESENTATIVES 428 FALLBACK = preserve-investigate