Skip to content
StableAudienceDevSécuritéQAAudit banqueComplianceOwner@product-teamDernière revue2026-05-21

Flow — Cash-out (intent)

Le consumer retire du cash physique chez un agent contre son solde Nex. Cette page documente le flow en détail, incluant le simulator CMMS et les variantes master-agent.

Pour la vue synthétique avec sequence diagram bout-en-bout, voir aussi /flows/cash-in-agent qui suit la même structure architecturale en miroir (cash-in ↔ cash-out).

Vue d'ensemble — points d'entrée

Inputs par point d'entrée

Point d'entréeInputs
Mobile Pro (Agent)Bearer token agent + QR code client
CMMS Simulateur (Admin)agentPhone + clientPhone — pas de QR, pas de token agent

Résolution dans l'IntentsController

  • resolveAgent() — si agentPhone fourni → customerService.findByPhoneauthService ; sinon → @CurrentUser() du token.
  • resolveAgentFromIntent() — si rôle admin ou operatorintent.initiatorUserId ; sinon → user.userId (le caller).

Flow step-by-step

Détail de chaque use-case

Use-caseActionsStatus sortant
CreateIntentUseCase1. Résoudre le client (phone ou QR token)
2. Risk engine evaluate()
3. Créer intent en DB (ledger)
CREATED
SendOtpUseCase1. Auth : générer OTP aléatoire (bcrypt hash)
2. Auth → Notif : envoyer OTP
OTP_SENT
Notifications — OtpRoutingCanal : préférence client → config système → WhatsApp par défaut. En non-production : whitelist seulement, copie email (Brevo) et copie WhatsApp (Tambila).
VerifyOtpUseCaseAuth : verify OTP (bcrypt compare)OTP_VERIFIED
VerifyPinUseCaseToken fourni → verifyPin(token, pin)
Pas de token → verifyPinByUserId(userId, pin)
3 tentatives max
PIN_VERIFIED
ConfirmIntentUseCase1. Résoudre comptes (agent wallet, client wallet)
2. Vérifier solde client
3. Risk engine confirm
4. Créer transaction P2P (client → agent)
5. Notification client + commission agent
PROCESSINGSUCCEEDED

Payload de retour

transactionId, referenceId, amount + fees, status: SUCCEEDED.

State machine de l'intent

Services impliqués

ServiceRôle
CMMS / App (Frontend)Initiation du cash-out (mobile-pro ou CMMS simulator).
Orchestrator (Stateless)Pilote le workflow, appelle les services downstream.
Ledger WalletsIntent + transaction (double-entrée).
AuthPIN, OTP.
Customer ProfilesRésolution du client par phone.
Risk EngineLimites, anti-fraude (preflight + confirm).
NotificationsWhatsApp, SMS, email (OTP, confirmations).

Nex — Plateforme fintech CEMAC