# A.9 — Gestion des paiements

Chapitre A.9 du Manuel PIGBF

# A.9.9.1 — Vue d'ensemble du module paiements

## 9.1 Vue d'ensemble du module paiements

Le module **Paiements** est le plus critique de la PIGBF du point de vue financier. Il orchestre l'intégralité du cycle de décaissement des bourses, depuis la préparation des instructions jusqu'à la confirmation de réception par les bénéficiaires et le reporting associé.

La PIGBF gère **deux circuits de paiement distincts** correspondant aux deux types de bénéficiaires financiers :

<table id="bkmrk-circuit-prestataire-"><thead><tr><th>Circuit</th><th>Prestataire</th><th>Destinataire</th><th>Mécanisme technique</th><th>Objet du paiement</th></tr></thead><tbody><tr><td>**Equity BCDC**</td><td>Equity Bank Congo</td><td>Comptes bancaires des écoles</td><td>Fichiers H2H via SFTP chiffré PGP</td><td>Frais scolaires (part école de la bourse)</td></tr><tr><td>**Vodacom M-Pesa**</td><td>Vodacom</td><td>Comptes mobile money des tuteurs ou élèves</td><td>API B2C (Business-to-Consumer)</td><td>Subvention directe (part tuteur/élève de la bourse)</td></tr></tbody></table>

Les deux circuits suivent le **même cycle en quatre étapes obligatoires et séquentielles** :

```
┌─────────────────────────────────────────────────────────────────┐
│ ÉTAPE 1 — GÉNÉRATION                                            │
│ Sélection des bénéficiaires éligibles pour la tranche,         │
│ calcul automatique des montants, création des lots en attente  │
└──────────────────────────┬──────────────────────────────────────┘
                           ↓
┌─────────────────────────────────────────────────────────────────┐
│ ÉTAPE 2 — VALIDATION                                            │
│ Contrôle humain des lots par le Validateur de paiement PAAF,   │
│ vérification des montants et des comptes, approbation ou rejet │
└──────────────────────────┬──────────────────────────────────────┘
                           ↓
┌─────────────────────────────────────────────────────────────────┐
│ ÉTAPE 3 — ENVOI                                                 │
│ Transmission sécurisée au prestataire :                        │
│ OTP par email obligatoire pour Equity / API directe pour M-Pesa│
└──────────────────────────┬──────────────────────────────────────┘
                           ↓
┌─────────────────────────────────────────────────────────────────┐
│ ÉTAPE 4 — SUIVI                                                 │
│ Réception et traitement des retours prestataires :             │
│ ACK/NACK/PSR pour Equity, confirmations API pour M-Pesa        │
└─────────────────────────────────────────────────────────────────┘

```

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Schéma du cycle de paiement en 4 étapes avec les deux colonnes (Equity BCDC / M-Pesa) et les acteurs impliqués à chaque étape (Admin PAAF génère, Validateur PAAF valide et envoie, Prestataire traite, Plateforme suit)</callout>`

🔒 **Restreint — Séparation des rôles :** L'architecture de sécurité financière de la PIGBF repose sur le principe fondamental que la même personne ne peut pas gérer à elle seule l'intégralité du cycle. Par défaut, **l'Admin PAAF** génère les instructions, et le **Validateur de paiement PAAF** (rôle autonome distinct) les valide et les envoie. Cette séparation des rôles est un contrôle interne indispensable.

Accès global : menu latéral → **Gestion des paiements**.

---

# A.9.9.2 — Gestion des prestataires

## 9.2 Gestion des prestataires

Les prestataires financiers (Equity BCDC et Vodacom M-Pesa) doivent être configurés dans la plateforme avec leurs paramètres techniques d'API avant de pouvoir effectuer des paiements.

### Accéder à la liste des prestataires

Menu latéral → **Prestataires**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page liste des prestataires : deux entrées (Equity BCDC et M-Pesa) dans le tableau, colonnes Nom, Type (Banque / Mobile Money), Statut (Actif en badge vert), Date de configuration, Actions Voir / Modifier</callout>`

### Informations d'un prestataire

Cliquez sur **Voir** pour consulter la configuration technique d'un prestataire.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fiche détaillée d'un prestataire M-Pesa : Type "M-Pesa / Bearer Token", trois sections JSON (Credentials, API Config, Tracking Config) affichées en lecture seule avec leur contenu</callout>`

### Configurer ou modifier un prestataire

1. Cliquez sur **Modifier** (crayon) du prestataire concerné.
2. Le formulaire de configuration s'ouvre avec trois éditeurs JSON :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Formulaire de modification d'un prestataire : sélecteur "Type de bénéficiaire" (Banque Token / M-Pesa), trois éditeurs JSON côte à côte avec titres "Credentials (JSON)", "Configuration API (JSON)", "Configuration Tracking (JSON)". Bouton "Formater test" et "Valider tout" sous chaque éditeur. Boutons Annuler et Modifier en bas</callout>`

**Credentials (JSON)** : contiennent les informations d'authentification auprès du prestataire : token d'accès, clés API, identifiants de connexion. Ces données sont hautement confidentielles.

**API Config (JSON)** : définit les paramètres des appels API de paiement : URL de l'endpoint, méthode HTTP (POST/GET), headers requis, structure du corps de la requête. Des placeholders dynamiques permettent d'injecter les valeurs à l'exécution (ex. : `{{token}}`, `{{montant}}`, `{{reference_prestataire}}`).

**Tracking Config (JSON)** : configure le suivi du statut des paiements après envoi : URL de l'endpoint de vérification, méthode, headers, structure de la réponse.

⚠️ **Attention critique :** La configuration des prestataires est une opération **hautement technique et sensible** réservée exclusivement à l'équipe IT GROUP ou au Super Admin technique. Une configuration incorrecte peut entraîner l'échec total ou partiel de tous les paiements, voire des virements vers des comptes incorrects. Ne modifiez **jamais** ces paramètres sans avoir obtenu les nouvelles valeurs techniques directement auprès du prestataire et sans avoir consulté l'équipe IT GROUP.

---

# A.9.9.3 — Paiements Equity BCDC — Cycle complet

## 9.3 Paiements Equity BCDC — Cycle complet

### 9.3.1 Étape 1 — Génération des instructions Equity

La génération consiste à préparer les lots de virements qui seront soumis à Equity Bank pour créditer les comptes bancaires des écoles sélectionnées.

#### Accéder à l'écran de génération

Menu latéral → **Paiements → Equity BCDC → Génération**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page génération Equity, état initial (avant sélection de tranche) : zone de filtres en haut avec Tranche de paiement (obligatoire, liste déroulante), PROVED, Sous-PROVED, École (multi-sélection). Message d'alerte "Veuillez sélectionner une tranche de paiement pour afficher les écoles éligibles" centré dans la zone du tableau</callout>`

#### Sélectionner la tranche de paiement

La sélection d'une **tranche de paiement est obligatoire**. Sans cette sélection, aucune école n'est affichée dans le tableau. Cette contrainte est intentionnelle pour éviter de générer des instructions sans contexte défini.

1. Dans la liste déroulante **Tranche de paiement**, sélectionnez la tranche à traiter (ex. : « Première Tranche 2024-2025 »). Les tranches disponibles sont celles configurées dans les Paramètres de l'année scolaire active.
2. Le tableau des **écoles éligibles** s'affiche automatiquement.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page génération Equity après sélection de la tranche : tableau avec colonnes École (nom), PROVED, Sous-PROVED, Compte Equity BCDC (numéro masqué partiellement), Élèves éligibles (nombre), Montant total (en CDF) ; cases à cocher à gauche de chaque ligne ; case "Sélectionner tout" en en-tête</callout>`

**Qui apparaît dans cette liste ?** Uniquement les écoles réunissant simultanément les conditions suivantes :  
\- **Validée pour paiement** (interrupteur activé dans le module Validation des écoles)  
\- Possédant un **compte Equity BCDC** configuré et actif dans leur fiche  
\- Ayant des **élèves validées pour paiement** pour la tranche sélectionnée  
\- N'ayant **pas encore reçu le paiement** de cette tranche (pour éviter les doublons)

#### Examiner les données avant génération

Avant toute sélection, prenez le temps d'examiner la liste :  
\- Vérifiez que le **nombre d'élèves éligibles** par école est cohérent avec vos données de terrain  
\- Vérifiez que le **montant total** par école est correct (= nombre d'élèves × montant par élève de la tranche)  
\- Identifiez les écoles absentes de la liste qui devraient y figurer (vérifiez leur validation pour paiement et leurs comptes)

Si vous souhaitez affiner la liste, utilisez les filtres **PROVED**, **Sous-PROVED** ou la sélection multi-écoles.

#### Sélectionner les écoles et générer

1. Cochez les écoles à inclure dans le lot. Utilisez la case en en-tête pour sélectionner toutes les écoles de la page.
2. Un bandeau récapitulatif apparaît en haut du tableau :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Bandeau récapitulatif de sélection active : "X écoles sélectionnées — Y élèves — Montant total estimé : Z CDF", boutons "Générer les instructions" (bleu, actif) et "Vider la sélection" (gris)</callout>`

3. Cliquez sur **Générer les instructions**.
4. La fenêtre modale **« Générer les instructions Equity »** s'ouvre :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Générer les instructions Equity" : bloc récapitulatif avec 3 métriques (Écoles sélectionnées : X, Élèves estimés : Y, Montant total estimé : Z CDF), champ "Commentaire (optionnel)" avec compteur de caractères, alerte informative bleue "Les instructions générées devront être validées avant l'envoi à Equity", boutons "Annuler" (gris) et "Lancer la génération" (bleu)</callout>`

5. Vérifiez les métriques récapitulatives (écoles, élèves, montant).
6. Saisissez un **Commentaire** descriptif (optionnel mais recommandé) : « Première tranche — Sous-PROVED Kamuesha — novembre 2024 ». Ce commentaire sera visible dans tous les écrans suivants du cycle de paiement et dans l'historique.
7. Cliquez sur **Lancer la génération**.

Les lots sont créés dans la base de données paiements avec le statut « Généré — en attente de validation ». Un lot distinct est créé pour chaque école sélectionnée.

---

### 9.3.2 Étape 2 — Validation des instructions Equity

Les lots générés passent dans la file de validation. Le **Validateur de paiement PAAF** doit examiner chaque lot, vérifier son exactitude et l'approuver ou le rejeter avant l'envoi à la banque.

#### Accéder à l'écran de validation

Menu latéral → **Paiements → Equity BCDC → Validation**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page validation Equity : zone de filtres (Date début / Date fin de génération, bouton Réinitialiser), tableau "Lots à valider" avec colonnes Référence du lot, École (nom), Nombre de paiements, Montant total (CDF), Généré par (nom utilisateur). Boutons Valider (coche verte) et Rejeter (croix rouge) en colonne Actions pour chaque lot</callout>`

#### Valider un lot individuellement

1. Repérez le lot dans le tableau. Vérifiez la référence, l'école, le nombre de paiements et le montant.
2. Pour un contrôle approfondi, cliquez sur la **Référence du lot** pour ouvrir le détail complet (liste des paiements individuels, commentaire saisi à la génération).
3. Cliquez sur **Valider** (coche verte).

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Valider le lot" : récapitulatif complet avec Référence du lot, Nom de l'école, Compte Equity BCDC (partiellement masqué), Nombre de paiements, Montant total en CDF, Nombre d'élèves concernées, Généré par (nom et date/heure), Commentaire saisi à la génération. Boutons "Annuler" et "Valider"</callout>`

4. Vérifiez une dernière fois l'exactitude de toutes les informations.
5. Cliquez sur **Valider**. Le lot passe au statut « Validé » et devient visible dans l'écran d'envoi.

#### Rejeter un lot

Si une anomalie est détectée — montant incorrect, compte bancaire erroné, école en doublon, cohérence douteuse — il faut rejeter le lot plutôt que de le laisser en attente.

1. Cliquez sur **Rejeter** (croix rouge) sur la ligne du lot concerné.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Rejeter le lot" : récapitulatif du lot, champ obligatoire "Raison du rejet" (zone de texte libre, ex. "Compte bancaire erroné — à corriger sur la fiche école"), alerte orange "Les paiements liés à ce lot resteront en attente. Un nouveau lot pourra être régénéré après correction.", boutons "Annuler" et "Rejeter" (rouge)</callout>`

2. Renseignez la **Raison du rejet** (obligatoire) : soyez précis et descriptif pour faciliter la correction.
3. Cliquez sur **Rejeter**. Le lot est marqué comme rejeté, les paiements associés restent en attente.

ℹ️ **Après un rejet :** L'administrateur doit corriger l'anomalie identifiée (généralement sur la fiche de l'école concernée), puis régénérer un nouveau lot via l'écran de Génération.

---

### 9.3.3 Étape 3 — Envoi des instructions vers Equity BCDC

C'est l'étape de **transmission effective et sécurisée** des instructions de paiement à Equity Bank. Elle est protégée par un code OTP (One-Time Password) envoyé par email, constituant une double vérification d'identité avant tout décaissement financier.

#### Accéder à l'écran d'envoi

Menu latéral → **Paiements → Equity BCDC → Envoi**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page envoi Equity : zone de filtres (Validé depuis / Validé jusqu'au, bouton Réinitialiser), tableau "Lots validés – prêts à l'envoi" avec colonnes Référence, École (nom + compte Equity partiel), Nombre de paiements, Montant total, Validé par (nom utilisateur) ; cases à cocher par lot</callout>`

#### Sélectionner les lots à envoyer

1. Filtrez par dates de validation si nécessaire.
2. Cochez un ou plusieurs lots validés. La case en en-tête coche tous les lots visibles.
3. Un bandeau d'alerte apparaît :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Bandeau d'alerte apparu après sélection de lots : "Sélection prête à l'envoi. Une validation OTP sera requise." en fond bleu clair, avec boutons "Envoyer vers Equity" (bleu) et "Désélectionner tout" (gris)</callout>`

#### Procédure d'envoi sécurisé par OTP — étape par étape

4. Cliquez sur **Envoyer vers Equity**.
5. La fenêtre modale **« Envoi vers Equity BCDC »** s'ouvre.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Envoi vers Equity BCDC", Étape 1 : récapitulatif de la sélection (Lots sélectionnés : X, Nombre total d'instructions : Y, Montant total à envoyer : Z CDF), bouton "Recevoir le code OTP" (bleu), message explicatif "Un code à usage unique sera envoyé à votre adresse email"</callout>`

6. **Étape 1 — Demande du code OTP :** Vérifiez le récapitulatif de la sélection. Cliquez sur **Recevoir le code OTP**. Un code à 6 chiffres à usage unique est envoyé à l'adresse email de l'utilisateur connecté. Une alerte verte confirme l'envoi et un **compte à rebours** indique la durée de validité du code.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale, Étape 2 : confirmation "Code OTP envoyé à votre email" en vert, compte à rebours visible (ex. "4:47"), champ "Code OTP" (6 chiffres, actif), bouton "Envoyer" (gris, inactif tant qu'aucun code n'est saisi)</callout>`

7. **Étape 2 — Saisie du code OTP :** Consultez immédiatement votre boîte email (vérifiez aussi le dossier spam). Copiez le code reçu et saisissez-le dans le champ **Code OTP**. Le bouton **Envoyer** s'active dès qu'un code valide est détecté.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale, Étape 2 avec code saisi : champ OTP rempli (ex. "483027"), bouton "Envoyer" devenu actif (bleu), compte à rebours toujours visible</callout>`

8. **Étape 3 — Confirmation finale :** Cliquez sur **Envoyer**. Le système effectue les opérations suivantes en séquence :  
     - Marque les lots sélectionnés au statut « Envoyé »  
     - Met à jour les instructions associées au statut « En attente de traitement »  
     - Déclenche la génération des fichiers H2H (format spécifique Equity Bank)  
     - Chiffre les fichiers avec la clé PGP d'Equity Bank  
     - Dépose les fichiers sur le serveur SFTP d'Equity pour traitement

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Message de confirmation après envoi réussi : "Vos instructions de paiement ont été envoyées à Equity BCDC avec succès. Les X lots sont maintenant en attente de traitement par la banque." en vert, bouton "Fermer"</callout>`

⚠️ **Important — Code OTP expiré :** Si le compte à rebours atteint 00:00 avant votre saisie, le code expire. Cliquez à nouveau sur **Recevoir le code OTP** pour en générer un nouveau. Vous pouvez demander plusieurs codes successivement sans limitation.

⚠️ **Important — Sécurité absolue du code OTP :** Le code OTP est votre signature électronique pour cette opération financière. Ne le partagez **jamais** avec une autre personne, y compris un supérieur hiérarchique. Si quelqu'un vous demande votre code OTP, refusez et signalez cet incident à l'équipe IT GROUP. La demande de votre OTP par une tierce personne est le signe d'une tentative de fraude.

---

### 9.3.4 Étape 4 — Suivi des paiements Equity H2H

Après l'envoi, Equity Bank traite les fichiers et renvoie des fichiers de retour (ACK = accusé positif, NACK = rejet, PSR = rapport de synthèse final). L'écran de suivi permet de monitorer en temps réel l'état de chaque fichier et de chaque instruction de paiement.

#### Accéder à l'écran de suivi

Menu latéral → **Paiements → Equity BCDC → Suivi**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page suivi Equity H2H : zone de filtres (Recherche textuelle, Statut — liste déroulante avec tous les statuts possibles, Date début / Date fin), tableau "Fichiers Equity H2H" avec colonnes Nom du fichier / Référence Equity, Statut (badge coloré avec libellé), Nb écoles (instructions dans le fichier), Montant total (CDF), Généré par (nom + date), menu Actions (bouton trois points)</callout>`

#### Comprendre les statuts des fichiers H2H

<table id="bkmrk-statut-couleur-du-ba"><thead><tr><th>Statut</th><th>Couleur du badge</th><th>Signification</th></tr></thead><tbody><tr><td>**Non envoyé**</td><td>Gris</td><td>Fichier généré côté plateforme, pas encore transmis au SFTP Equity</td></tr><tr><td>**Envoi en cours**</td><td>Bleu</td><td>Transmission SFTP en cours de traitement</td></tr><tr><td>**Envoyé**</td><td>Bleu ciel</td><td>Fichier déposé sur le SFTP Equity, en attente d'accusé de réception</td></tr><tr><td>**Reçu**</td><td>Vert clair</td><td>Accusé de réception (ACK) reçu — Equity confirme avoir le fichier</td></tr><tr><td>**Traité avec succès**</td><td>Vert foncé</td><td>Paiements exécutés par Equity — fonds décaissés</td></tr><tr><td>**Rejeté**</td><td>Rouge</td><td>Fichier rejeté par Equity (NACK) — voir fichier de rejet pour le motif</td></tr><tr><td>**Erreur**</td><td>Orange</td><td>Problème technique lors de la transmission SFTP</td></tr></tbody></table>

#### Actions disponibles sur un fichier (menu trois points)

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Menu Actions (trois points) ouvert sur une ligne de fichier Equity : options "Voir détails", "Télécharger — Fichier H2H envoyé", "Télécharger — Fichier ACK", "Télécharger — Fichier NACK", "Télécharger — Fichier PSR", "Renvoyer" (si non envoyé), "Supprimer" (si non envoyé)</callout>`

- **Voir détails** — ouvre la fenêtre modale de détail complet du fichier
- **Télécharger** — selon disponibilité : fichier H2H original, ACK, NACK, PSR
- **Renvoyer** — redéclenche le dépôt SFTP (uniquement pour les fichiers en statut "Non envoyé" ou "Erreur")
- **Supprimer** — suppression irréversible du fichier et des instructions associées

#### Consulter le détail d'un fichier

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Détails du fichier Equity H2H" : bloc "Informations fichier" (Nom, Référence Equity, Description/Commentaire, Statut avec badge, Date de génération, Date d'envoi, Liens de téléchargement si disponibles), séparateur, bloc "Instructions de paiement associées" — tableau avec colonnes École (lien cliquable), Référence instruction, Compte Equity, Agent, Montant total, colonne Workflow (Généré par X le DD/MM/YYYY, Validé par Y le DD/MM/YYYY, Envoyé par Z le DD/MM/YYYY), Statut paiement (Payé en vert / Échoué en rouge + motif / En attente en gris), bouton "Fermer"</callout>`

La fenêtre de détail permet à l'administrateur de descendre jusqu'au niveau de l'instruction individuelle (une école = une instruction) et de voir précisément le statut de chaque virement, qui a effectué chaque étape du workflow, et quand.

⚠️ **Attention — Suppression d'un fichier H2H :** La suppression d'un fichier H2H **supprime également toutes les instructions de paiement associées côté plateforme**. Cette opération ne peut pas annuler un virement déjà en cours de traitement ou exécuté chez Equity Bank. Elle ne doit être utilisée qu'en cas d'erreur manifeste sur un fichier **non encore envoyé**. Une fenêtre d'alerte forte récapitule le nom du fichier, la référence Equity, le nombre d'instructions et le montant total avant confirmation.

---

# A.9.9.4 — Paiements Vodacom M-Pesa — Cycle complet

## 9.4 Paiements Vodacom M-Pesa — Cycle complet

### 9.4.1 Étape 1 — Génération des instructions M-Pesa

La génération M-Pesa prépare les virements mobile money destinés aux tuteurs (ou directement aux élèves si elles sont désignées comme bénéficiaires perceptrices dans leur fiche).

#### Accéder à l'écran de génération

Menu latéral → **Paiements → M-Pesa → Génération**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page génération M-Pesa, état initial : zone de filtres (Tranche de paiement obligatoire — liste déroulante, École(s) — sélection multiple, Classe — liste déroulante, Option — liste déroulante, bouton Réinitialiser), message "Sélectionnez une tranche de paiement pour afficher les tuteurs éligibles"</callout>`

#### Sélectionner la tranche et afficher les tuteurs éligibles

1. Sélectionnez la **Tranche de paiement** dans la liste déroulante.
2. Le tableau des **tuteurs éligibles** s'affiche. Seuls les tuteurs réunissant ces conditions apparaissent :  
     - Ils ont des élèves **validées pour paiement** pour la tranche choisie  
     - Un compte **M-Pesa est configuré et coché "compte choisi pour paiement"** dans leur fiche

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Tableau des tuteurs éligibles M-Pesa : colonnes Nom du tuteur (complet), Nombre d'élèves rattachées pour cette tranche (ex. "3"), Montant total (3 × montant/élève = Z CDF), Compte mobile (numéro partiellement masqué + agent M-Pesa) ; cases à cocher à gauche ; case "Sélectionner tout" en en-tête ; bouton "▼" ou "+" à droite de chaque ligne pour déplier la liste des élèves</callout>`

3. Pour vérifier le détail des élèves incluses dans le calcul d'un tuteur, cliquez sur le bouton **▼** (déplier) de sa ligne :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Ligne tuteur dépliée montrant l'encart des élèves rattachées : tableau avec colonnes UID élève, Nom de l'élève, Classe, Option, Montant individuel (ex. "53 000 CDF"). 3 lignes visibles pour un tuteur avec 3 enfants bénéficiaires</callout>`

4. Affinez si nécessaire avec les filtres **École(s)**, **Classe** et **Option**.

#### Sélectionner et générer

1. Cochez les tuteurs à inclure. Le bandeau récapitulatif apparaît :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Bandeau récapitulatif M-Pesa : "X tuteurs sélectionnés — Y élèves — Montant total : Z CDF", bouton "Générer les instructions de paiement" actif</callout>`

2. Cliquez sur **Générer les instructions de paiement**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Générer les instructions de paiement" M-Pesa : bloc récapitulatif (Tuteurs sélectionnés : X, Total élèves : Y, Montant total : Z CDF), champ "Commentaire (optionnel)", boutons "Annuler" et "Générer"</callout>`

3. Ajoutez un **Commentaire** descriptif, cliquez sur **Générer**. Pour chaque tuteur sélectionné, le système crée un lot contenant un paiement individuel par élève (1 paiement M-Pesa = 1 virement = 1 élève).

---

### 9.4.2 Étape 2 — Validation des instructions M-Pesa

#### Accéder à l'écran de validation

Menu latéral → **Paiements → M-Pesa → Validation**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page validation M-Pesa : zone de filtres (Date de génération Du / Au, bouton Réinitialiser), tableau "Instructions en attente de validation" avec colonnes Tuteur (nom), Compte (numéro M-Pesa partiel), Date de génération, Généré par, Nombre d'élèves, Montant total (CDF) ; cases à cocher par ligne + "Sélectionner tout" ; boutons Valider (vert) et Rejeter (rouge) par lot</callout>`

#### Valider un lot individuellement

1. Cliquez sur **Valider** (coche verte) sur la ligne du lot.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Valider le lot M-Pesa" : Tuteur (nom complet), Référence du lot, Compte mobile (numéro + agent), Prestataire (M-Pesa), Nombre d'élèves, Montant total, Généré par (nom + date), Commentaire éventuel. Boutons "Annuler" et "Valider"</callout>`

2. Vérifiez toutes les informations. Cliquez sur **Valider**. Le lot passe au statut « Validé ».

#### Rejeter un lot

1. Cliquez sur **Rejeter** (croix rouge).

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Rejeter le lot M-Pesa" : récapitulatif du lot, champ obligatoire "Raison du rejet", boutons "Annuler" et "Rejeter"</callout>`

2. Renseignez la **Raison du rejet** (obligatoire). Cliquez sur **Rejeter**. Le lot est marqué rejeté, tous les paiements du lot passent au statut « Annulé ».

#### Validation ou rejet groupé

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Tableau M-Pesa avec plusieurs lots cochés (3 sélectionnés), boutons "Valider plusieurs instructions" et "Rejeter plusieurs instructions" actifs en haut du tableau, compteur "3 sélectionnés" visible</callout>`

1. Cochez plusieurs lots.
2. Les boutons **Valider plusieurs instructions** et **Rejeter plusieurs instructions** apparaissent.
3. Chaque action ouvre une fenêtre modale récapitulative :  
     - Pour la validation : nombre de lots, total élèves, montant global à confirmer  
     - Pour le rejet : même récapitulatif + champ **Raison du rejet** unique applicable à tous les lots sélectionnés

---

### 9.4.3 Étape 3 — Envoi des instructions M-Pesa

#### Accéder à l'écran d'envoi

Menu latéral → **Paiements → M-Pesa → Envoi**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page envoi M-Pesa : zone de filtres (Date de validation Du / Au, bouton Réinitialiser), tableau "Instructions en attente d'envoi" avec colonnes Tuteur, Compte (numéro M-Pesa), Date de validation, Validé par, Nombre d'élèves, Montant total ; cases à cocher ; bouton "Envoyer (n)" visible quand des lots sont sélectionnés</callout>`

1. Filtrez si nécessaire.
2. Cochez les lots à envoyer.
3. Cliquez sur **Envoyer (n)** (n = nombre de lots sélectionnés). Les paiements sont soumis en temps réel à l'API Vodacom M-Pesa. Chaque paiement individuel (un par élève) est initié séparément, permettant un suivi granulaire.

ℹ️ **Note sur la sécurité M-Pesa :** L'envoi M-Pesa ne nécessite pas de code OTP, contrairement à Equity. La sécurisation repose ici sur la stricte séparation des rôles (génération, validation et envoi peuvent être attribués à des personnes différentes) et sur la traçabilité exhaustive de chaque action dans le journal d'activités.

---

### 9.4.4 Étape 4 — Suivi des paiements M-Pesa

#### Accéder à l'écran de suivi

Menu latéral → **Paiements → M-Pesa → Suivi**.

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Page suivi M-Pesa : zone de filtres (Recherche par référence ou numéro de compte, Statut global — liste déroulante, Dates Du/Au, Réinitialiser), tableau "Suivi des paiements M-Pesa" avec colonnes Référence du lot, Tuteur / Compte (numéro M-Pesa partiel), Date d'envoi, Montant total, et 4 compteurs : Total paiements / Payé (vert) / En cours (bleu) / Échoué ou Annulé (rouge) ; bouton "Voir les détails" par lot</callout>`

#### Comprendre les compteurs par lot

Chaque lot M-Pesa contient un paiement individuel pour chaque élève rattachée au tuteur. Les quatre compteurs détaillent l'état en temps réel :

<table id="bkmrk-compteur-couleur-sig"><thead><tr><th>Compteur</th><th>Couleur</th><th>Signification</th></tr></thead><tbody><tr><td>**Total paiements**</td><td>Bleu</td><td>Nombre total de paiements dans le lot (un par élève)</td></tr><tr><td>**Payé**</td><td>Vert</td><td>Paiements reçus et confirmés par Vodacom M-Pesa</td></tr><tr><td>**En cours**</td><td>Orange</td><td>Paiements soumis, confirmation pas encore reçue de Vodacom</td></tr><tr><td>**Échoué / Annulé**</td><td>Rouge</td><td>Paiements échoués (numéro incorrect, compte inexistant, solde insuffisant) ou annulés manuellement</td></tr></tbody></table>

#### Consulter le détail d'un lot

Cliquez sur **Voir les détails** pour ouvrir la fenêtre modale de détail :

`<callout class="info">📸 <strong>Capture d'écran à insérer :</strong> Fenêtre modale "Détails du lot M-Pesa" : bloc résumé en haut (Tuteur : nom, Compte : numéro, Montant total, 4 compteurs Payé/En cours/Échoué/Total), séparateur, tableau des paiements individuels avec colonnes : Référence système, Référence Vodacom (ID de la transaction côté prestataire), UID de l'élève, Nom de l'élève, Montant, Statut (badge coloré : Payé/En cours/Échoué/Annulé), Date de paiement</callout>`

Cette vue granulaire permet à l'administrateur de :  
\- Vérifier qu'une élève spécifique a bien été payée (recherche par UID ou nom)  
\- Identifier les paiements échoués et leur motif (compte inexistant, numéro incorrect) pour correction  
\- Préparer les justificatifs individuels pour un audit ou une réclamation d'une bénéficiaire

---

# A.9.9.5 — Bonnes pratiques et points de vigilance — Paiements

## 9.5 Bonnes pratiques et points de vigilance — Paiements

**Vérifier les conditions d'éligibilité avant la génération.** Si une école ou un tuteur attendu n'apparaît pas dans la liste de génération, vérifiez méthodiquement : (1) validation pour paiement active, (2) compte bancaire ou M-Pesa correctement renseigné et coché « choisi pour paiement », (3) élèves validées pour paiement pour la tranche concernée, (4) tranche correctement configurée dans les Paramètres de l'année scolaire.

**Respecter la séparation des rôles.** Cette séparation n'est pas une contrainte administrative — c'est un contrôle interne fondamental contre la fraude et les erreurs. Une seule personne ne doit jamais être en mesure de générer ET valider ET envoyer un paiement.

**Commenter systématiquement les lots générés.** Un commentaire précis (tranche, zone géographique, date) facilite considérablement le suivi, le reporting et les investigations ultérieures. Il est visible dans tous les écrans du cycle et dans les exports.

**Ne jamais supprimer un fichier Equity H2H déjà envoyé.** Une fois un fichier déposé sur le SFTP Equity Bank, sa suppression côté plateforme ne l'annule pas côté banque. Tout problème sur un fichier déjà en cours de traitement doit être géré en coordination avec l'équipe technique IT GROUP et directement avec Equity Bank.

**Surveiller quotidiennement les statuts de suivi pendant les périodes de paiement.** Des paiements Equity en statut « Envoyé » depuis plus de 48h sans évolution vers « Reçu » ou « Traité » méritent une investigation. Des paiements M-Pesa « En cours » depuis plus de 24h peuvent indiquer un problème de callback API. Dans les deux cas, contactez l'équipe IT GROUP avec la référence du fichier ou du lot concerné.

**Documenter tous les rejets.** La raison de rejet saisie est enregistrée dans le journal d'activités. Des rejets répétés sur les mêmes écoles ou tuteurs signalent un problème structurel (compte bancaire systématiquement erroné, numéro M-Pesa invalide) qui doit être corrigé à la source dans les fiches correspondantes.

---

---