sandcastle-ng

Scripts for the deployment of Sandcastle (GNU Taler)
Log | Files | Refs | README

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