post-kyc-wallet.rst (2934B)
1 .. http:post:: /kyc-wallet 2 3 The ``/kyc-wallet`` POST endpoint allows a wallet to notify an exchange if 4 it will cross a balance threshold. Here, the ``balance`` specified should be 5 the threshold (from the ``wallet_balance_limit_without_kyc`` array) that the 6 wallet would cross, and *not* the *exact* balance of the wallet. The exchange 7 will respond with a wire target UUID. The wallet can then use this UUID to 8 being the KYC process at ``/kyc-check/``. The wallet must only proceed to 9 obtain funds exceeding the threshold after the KYC process has concluded. 10 While wallets could be "hacked" to bypass this measure (we cannot 11 cryptographically enforce this), such modifications are a terms of service 12 violation which may have legal consequences for the user. 13 14 Setup KYC identification for a wallet. Returns the KYC UUID. 15 This endpoint is used by compliant Taler wallets when they 16 are about to hit the balance threshold and thus need to have 17 the customer provide their personal details to the exchange. 18 The wallet is identified by its long-lived reserve public key 19 (which is used for P2P payments, not for withdrawals). 20 21 **Request:** 22 23 The request body must be a `WalletKycRequest` object. 24 25 **Response:** 26 27 :http:statuscode:`200 Ok`: 28 The balance 29 is below the threshold that requires KYC, or this 30 wallet already satisfied the KYC check for the 31 given balance. The `WalletKycCheckResponse` body 32 give details about the next applicable KYC check 33 requirements. 34 :http:statuscode:`204 No Content`: 35 KYC is disabled at this exchange. 36 :http:statuscode:`403 Forbidden`: 37 The provided signature is invalid. 38 This response comes with a standard `ErrorDetail` response. 39 :http:statuscode:`451 Unavailable for Legal Reasons`: 40 The wallet must undergo a KYC check. A KYC ID was created. 41 The response will be a `LegitimizationNeededResponse` object. 42 43 **Details:** 44 45 .. ts:def:: WalletKycRequest 46 47 interface WalletKycRequest { 48 49 // Balance threshold (not necessarily exact balance) 50 // to be crossed by the wallet that (may) trigger 51 // additional KYC requirements. 52 balance: Amount; 53 54 // EdDSA signature of the wallet affirming the 55 // request, must be of purpose 56 // ``TALER_SIGNATURE_WALLET_ACCOUNT_SETUP`` 57 reserve_sig: EddsaSignature; 58 59 // long-term wallet reserve-account 60 // public key used to create the signature. 61 reserve_pub: EddsaPublicKey; 62 } 63 64 .. ts:def:: WalletKycCheckResponse 65 66 interface WalletKycCheckResponse { 67 68 // Next balance limit above which a KYC check 69 // may be required. Optional, not given if no 70 // threshold exists (assume infinity). 71 next_threshold?: Amount; 72 73 // When does the current set of AML/KYC rules 74 // expire and the wallet needs to check again 75 // for updated thresholds. 76 expiration_time: Timestamp; 77 78 }