Vue d’ensemble
Le Workflow de Décaissement de Prêt dans Agatabo décrit le processus de création des prêts, de validation appropriée et d’enregistrement du décaissement avec une comptabilité exacte.ACTIVE et décaissé immédiatement.Le statut PENDING existe dans le schéma de base de données, mais il n’est pas actuellement utilisé par l’API. Un workflow d’approbation en plusieurs étapes pourra être ajouté dans de futures versions.Vue d’ensemble du workflow
Étape 1 : Préparation avant le prêt
Qui : Agent de crédit ou Administrateur Avant de créer le prêt dans le système :Vérifier l'éligibilité du membre
- Le Membre a le solde d’Épargne requis (généralement 20 à 30 % du montant du prêt)
- Le Membre n’a aucun prêt existant
ACTIVEouDEFAULTED - Le Membre a le rôle “member” assigné (requis pour l’éligibilité au prêt)
- Le Membre est actif dans l’organisation
Évaluer la capacité de remboursement
- Examiner les sources de revenu du Membre
- Vérifier l’historique de prêt du Membre (défauts passés ?)
- Vérifier que le Membre peut payer les échéances
- Évaluer la solvabilité générale
Collecter les garanties
- Garants : autres membres actifs qui cosignent
- Nantissements : actifs physiques (propriété, équipement) avec valeurs estimées
- Exigence d’Épargne : solde d’Épargne minimum que le Membre doit maintenir
- Documents : photos, titres, évaluations, accords
Calculer les conditions du prêt
- Déterminer le montant du Capital (dans les limites de l’organisation)
- Décider la Période du prêt (mois)
- Définir le taux d’Intérêt (selon la politique de l’organisation)
- Choisir la méthode de calcul de l’Intérêt
- Calculer les échéances estimées
- ✅ Membre éligible au prêt
- ✅ Garanties suffisantes pour couvrir le montant du prêt
- ✅ Conditions du prêt conformes aux politiques de l’organisation
- ✅ Documentation requise collectée
- ✅ Approbation du comité de prêt obtenue (si requise par l’organisation)
Étape 2 : Création et Décaissement du Prêt
Qui : Utilisateur avec la permissionloans:write
Endpoint API : POST /loans
Requête
Ce qui se passe automatiquement
Lorsque le prêt est créé, le système effectue ces actions atomiquement dans une seule transaction de base de données :Valider l'éligibilité du membre
- Le Membre existe dans l’organisation
- Le Membre est actif
- Le Membre a le rôle “member” assigné
- Le Membre n’a aucun prêt existant
ACTIVEouDEFAULTED
Valider les politiques de l'organisation
- Le montant du Capital est dans les limites configurées
- La Période est dans le maximum autorisé (si configuré)
- Capital ≤ (Épargne du membre × max_loan_percentage)
- L’échelle du montant correspond aux paramètres de devise de l’organisation
Valider les garanties
- Valeur totale des garanties ≥ montant du prêt
- Les Garants sont des membres actifs
- L’exigence d’Épargne ne dépasse pas l’Épargne disponible du Membre
- Toutes les valeurs de garantie utilisent la bonne précision décimale
Calculer les échéances
- Calcule l’EMI (échéance mensuelle équivalente)
- Génère l’échéancier
- Calcule l’Intérêt total
- Applique les règles d’arrondi configurées
Créer l'enregistrement du prêt
- Statut défini sur ACTIVE (pas PENDING)
- Numéro de compte unique assigné au prêt
- Échéancier verrouillé
- Garanties stockées en JSON
Créer les comptes du Grand Livre
- Compte
LOAN_RECEIVABLE(suivi du Capital) - Compte
INTEREST_RECEIVABLE(suivi de l’Intérêt) - Compte
PENALTY_RECEIVABLE(suivi des Pénalités)
Comptabiliser l'Écriture Comptable de décaissement
- Si les frais sont déduits de l’Épargne : écriture
DISBURSEMENT_FEE_PAYMENTséparée - Si l’Intérêt est payé d’avance depuis l’Épargne : écriture
INTEREST_PAID_IN_ADVANCEséparée - Si l’Intérêt est payé d’avance depuis la caisse :
INTEREST_RECEIVABLEn’est pas débité,CASHest réduit de l’Intérêt - Si frais bancaires : écriture
BANK_CHARGEsupplémentaire
Envoyer la notification
- E-mail envoyé à l’emprunteur avec les détails du prêt
- SMS envoyé avec le message d’approbation du prêt
- Le message inclut le montant de l’échéance et l’échéancier
Réponse
Succès (201 Created) :Erreurs
Étape 3 : Après le Décaissement
Qui : Agent de crédit, TrésorierActions immédiates
Décaisser les fonds au membre
- Le système a déjà déduit le montant du compte d’Épargne du Membre
- Le Membre reçoit en espèces : Capital - (frais si depuis la caisse) - (Intérêt si depuis la caisse et payé d’avance)
- Compter l’argent en présence du Membre
- Le Membre signe le reçu
- Virer depuis le Compte Bancaire de l’organisation vers le compte du Membre
- Enregistrer le numéro de référence bancaire
- Montant : Capital - (frais/Intérêt déduits de la caisse)
- Retirer depuis la banque de l’organisation
- Remettre l’argent au Membre
- Le Membre signe le reçu
Classer la documentation du prêt
- Contrat de prêt signé
- Documents de Nantissement (titres, évaluations, photos)
- Accords de Garant
- Reçu de Décaissement
- Documents de Garantie
Fournir l'échéancier au membre
- Exporter l’échéancier depuis le système
- L’imprimer et le remettre au Membre
- Expliquer les méthodes de paiement
- Confirmer que les dates d’échéance sont comprises
- Fournir les coordonnées du trésorier
Configurer les rappels de paiement
- Ajouter le prêt à la liste de suivi
- Configurer des rappels automatiques de paiement (3 à 5 jours avant l’échéance)
- Noter la date de la première échéance
- Configurer les règles de Pénalité si applicable
Suivi continu
Suivre les paiements
- Surveiller les dates d’échéance
- Envoyer des rappels avant les échéances
- Enregistrer rapidement les paiements avec
POST /loans/{loanId}/repay - Mettre à jour le statut de paiement (à temps, en retard, manqué)
Gérer les retards
- Identifier immédiatement les paiements en retard
- Relancer le Membre (appel téléphonique, visite)
- Appliquer les Pénalités selon la politique de l’organisation
- Escalader au comité de prêt si nécessaire
- Envisager une restructuration pour les cas difficiles
Surveiller la santé du prêt
- Examiner régulièrement les arriérés (rapport Prêts en Cours)
- Suivre les jours de retard
- Classer les prêts (courant, 1-30 jours, 31-90 jours, 90+ jours)
- Mettre le statut à
DEFAULTEDsi nécessaire
Options de frais de Décaissement et de paiement de l’Intérêt
Options de déduction des frais
Option 1 : frais déduits de la caisse (par défaut) :disbursementFeeFromSavings: true) :
Options de calendrier de paiement de l’Intérêt
Option 1 : Intérêt payé avec les échéances (par défaut) :interestPaymentTiming: "IN_ADVANCE") :
interestPaymentTiming: "IN_ADVANCE" et advanceInterestFromSavings: true) :
Configuration depuis les paramètres de l’organisation
Plusieurs paramètres de prêt utilisent par défaut les paramètres globaux de l’organisation (champloanSettings) :
Checklist complète du workflow
Avant la création
- ✅ Éligibilité du Membre vérifiée (Épargne, historique de prêt, statut actif)
- ✅ Garanties documentées (Garants, Nantissements, documents)
- ✅ Conditions du prêt calculées et conformes aux politiques
- ✅ Documents requis collectés
- ✅ Approbation du comité de prêt obtenue (si requise par l’organisation)
- ✅ Le Membre comprend les conditions de remboursement
Pendant la création (via API)
- ✅ En-tête
x-idempotency-keyfourni - ✅ Tous les champs requis dans le corps de la requête
- ✅ Montant du prêt dans les limites de la politique
- ✅ Garanties suffisantes pour couvrir le prêt
- ✅ Le Membre n’a aucun prêt
ACTIVE/DEFAULTEDexistant - ✅ L’appel API réussit (réponse 201)
Après le Décaissement
- ✅ Fonds décaissés au Membre (espèces ou virement bancaire)
- ✅ Le Membre signe le reçu de Décaissement
- ✅ Documents de prêt classés
- ✅ Échéancier fourni au Membre
- ✅ Membre ajouté à la liste de rappels de paiement
- ✅ Premier rappel de paiement planifié
Suivi continu
- ✅ Paiements enregistrés rapidement
- ✅ Paiements en retard suivis immédiatement
- ✅ Pénalités appliquées selon la politique
- ✅ Statut du prêt mis à jour si nécessaire (
COMPLETED,DEFAULTED)
Problèmes courants
Le membre a déjà un prêt actif
Le membre a déjà un prêt actif
ACTIVE ou DEFAULTEDSolution :- Attendre que le prêt existant soit entièrement remboursé (statut =
COMPLETED) - Ou déclarer le prêt existant en défaut si approprié (
POST /loans/{id}/default) - Impossible d’avoir plusieurs prêts simultanés par Membre
Garanties insuffisantes
Garanties insuffisantes
- Ajouter plus de Garants
- Augmenter la valeur du Nantissement
- Réduire le montant du prêt
- Exiger un solde d’Épargne plus élevé
Le capital dépasse le maximum autorisé
Le capital dépasse le maximum autorisé
max_loan_percentage)Exemple : Épargne = 100 000, max_loan_percentage = 3.0, maximum autorisé = 300 000Solution :- Réduire le montant du prêt
- Demander au Membre d’épargner davantage d’abord
- Demander à l’organisation d’augmenter le paramètre
max_loan_percentage
La période dépasse le maximum
La période dépasse le maximum
max_period de l’organisationSolution :- Réduire la Période du prêt
- Demander à l’organisation d’augmenter le paramètre
max_period
Besoin d'annuler le prêt après création
Besoin d'annuler le prêt après création
- Le Membre peut rembourser immédiatement tout le Capital
- Enregistrer le paiement :
POST /loans/{id}/repay - Le statut du prêt passe à
COMPLETED
- Le Membre doit rembourser selon l’échéancier
- Ou négocier une restructuration avec l’agent de crédit
- Impossible de supprimer un prêt décaissé (fonds déjà remis)
Les paramètres de prêt ne s'appliquent pas
Les paramètres de prêt ne s'appliquent pas
- Les
loanSettingsde l’organisation sont-ils configurés ? - Les champs du corps de requête remplacent-ils les paramètres ?
- Vérifier les paramètres avec
GET /organizations/{id}
Amélioration future : workflow en plusieurs étapes
Le statut PENDING existe dans la base de données, mais n’est pas actuellement utilisé. Une future version pourra implémenter :- POST /loans avec status=PENDING (demande de prêt en brouillon)
- Endpoint PUT /loans//approve pour changer PENDING → ACTIVE
- DELETE /loans/ pour annuler les prêts PENDING
- États de workflow et processus d’approbation
- Demandes de prêt soumises pour examen
- Approbation du comité avant Décaissement
- Séparation de la demande et du Décaissement
- Annulation des prêts non approuvés
ACTIVE et décaissés.