Aller au contenu

Payment Methods

Contrôleur HTTP qui gère les comptes bancaires (IBAN) utilisés pour les retraits Lemonway de l'investisseur. Source : payment-methods.controller.ts.

Tous les endpoints requièrent un JWT investisseur valide (JwtAuthGuard) et le rôle CUSTOMER (UserRoleGuard). La création (POST) impose en plus une validation 2FA.

GET /payment-methods

Renvoie les comptes bancaires actifs de l'investisseur utilisables pour un retrait.

Pré-conditions

  • JWT investisseur valide
  • Rôle CUSTOMER

Response

Tableau de PaymentMethodDto (entité PaymentMethod sans customerId). Filtre :

  • kind = IBAN_WITHDRAW
  • lemonwayBankAccountStatus ≠ Desactivated

Source : PaymentMethodsService.getActiveBankAccountForWithdrawal.

POST /payment-methods

Crée (ou réactive) un compte bancaire IBAN pour les retraits, et upload côté Lemonway le RIB associé.

Pré-conditions

  • JWT investisseur valide
  • Rôle CUSTOMER
  • Code 2FA valide (CheckCustomer2FACode) — header tfa requis, code stocké dans Redis sous la clé 2FA_<code>_<customerId>. Le code est invalidé après usage par TFAInterceptor.
  • BIC non interdit (businessRules.withdraw.forbiddenBankBICs)
  • CustomerProfile complet (nom + prénom pour individual, raison sociale pour business)

Request body

multipart/form-data (interceptor FileInterceptor('file')) :

  • iban — IBAN valide (ibanValidator)
  • bic — BIC valide (bicValidator)
  • file — fichier RIB (PDF/image), uploadé chez Lemonway en tant que document proofOfBankInformation ou otherDocumentsX

Validation du body via httpValidate(bankAccountCreationPayload).

Logique

PaymentMethodsService.createBankAccountForWithdrawal :

  1. Recherche d'un PaymentMethod existant (même IBAN, soft-deleted inclus)
    • Si trouvé → délègue à manageExistingBankAccount (réactivation Lemonway et/ou interne, ou re-upload du RIB selon le statut Lemonway)
  2. Sinon : upload du RIB chez Lemonway, création du compte Lemonway (createMoneyOutIban), persistance d'un nouveau PaymentMethod avec statut Lemonway initial

Response

Le PaymentMethod créé (ou la valeur de retour du flow de réactivation).

Erreurs

Code Statut Cause
2fa-code.invalid 403 Code 2FA absent ou incorrect
paymentMethods.bank-account.bic-not-allowed 400 BIC dans la liste interdite
paymentMethods.bank-account.holder-not-found 400 Profil incomplet (pas de holder calculable)
paymentMethods.bank-account.iban-of-another-customer 400 IBAN déjà rattaché à un autre customer
paymentMethods.bank-account.no-action-available-for-existing-account 400 Compte existant déjà actif côté Lemonway, aucune action possible
paymentMethods.too-many-ibans 400 Plus de slots de documents disponibles (≥7 IBAN existants)
paymentMethods.document.<reason> 400 Erreur business retournée par l'upload Lemonway
(aucun) 500 Échec de création du compte bancaire chez Lemonway, ou échec d'upload de document non-business

DELETE /payment-methods/:paymentMethodId

Désactive (soft-delete) un compte bancaire de l'investisseur.

Path param

  • paymentMethodId — UUID

Pré-conditions

  • JWT investisseur valide
  • Rôle CUSTOMER
  • Le PaymentMethod doit appartenir à l'investisseur courant (filtre customerId)
  • Aucun retrait en attente (WalletTransactionsStatuses.WAITING + kind = WITHDRAWAL) ne doit pointer vers ce paymentMethodId

Response

{ "status": "ok" }

Type StatusReturnDto.

Erreurs

Code Statut Cause
(aucun) 404 PaymentMethod introuvable ou n'appartenant pas à l'investisseur
paymentMethods.bank-account.has-waiting-withdraws 400 Un retrait en attente utilise ce compte

Liens