# Audit : Système d'Export SEPA ISO 20022 **Date de création** : 3 novembre 2025 **Statut actuel** : EN TEST (désactivé en production) **Version** : 1.0 **Norme** : ISO 20022 pain.001.001.03 --- ## 📊 Résumé Exécutif Le système d'export SEPA permet aux clients gérant eux-mêmes leurs virements de salaires de générer un fichier XML standardisé pour effectuer des virements groupés depuis leur banque. **Statut** : ✅ Fonctionnel mais désactivé en production **Raison** : Tests en conditions réelles incomplets (1 seule banque testée) --- ## ✅ Tests Réussis ### Test Banque Qonto (3 novembre 2025) - ✅ Fichier XML accepté sans erreur - ✅ Salariés correctement identifiés - ✅ IBAN des salariés validés - ✅ Montants corrects (incluant regroupement par employé) - ✅ BIC optionnel (non requis par Qonto) - ✅ Format SEPA conforme **Verdict Qonto** : 100% fonctionnel ✓ --- ## 🔧 Implémentation Technique ### Fichiers concernés 1. **`app/api/virements-salaires/export-sepa/route.ts`** (378 lignes) - Génération XML ISO 20022 pain.001.001.03 - Validation IBAN avec checksum modulo 97 - Regroupement des paiements par employé - Sanitization XML (caractères spéciaux, limites de longueur) 2. **`app/(app)/virements-salaires/page.tsx`** (modifié) - Interface de sélection multiple (checkboxes) - Bouton d'export (actuellement désactivé) - Modal de succès/avertissements - Gestion des salariés sans IBAN 3. **`app/api/virements-salaires/[id]/route.ts`** (nouveau) - Route PATCH pour marquage individuel/groupé - Mise à jour `transfer_done` et `transfer_done_at` ### Fonctionnalités implémentées - ✅ Sélection multiple via checkboxes - ✅ Export XML SEPA conforme - ✅ Validation IBAN (checksum modulo 97) - ✅ Regroupement automatique par employé - ✅ Gestion des salariés sans IBAN (exclusion + avertissement) - ✅ Référence de virement : "Nom organisation - Période" - ✅ Montant : `net_after_withholding` (net à payer après PAS) - ✅ Limites SEPA respectées (70 char noms, 140 char libellés) - ✅ Modal de confirmation/résultats - ✅ Marquage groupé des paies comme payées --- ## 🎯 Validations Techniques ### Format XML - ✅ Namespace correct : `urn:iso:std:iso:20022:tech:xsd:pain.001.001.03` - ✅ Structure conforme : GrpHdr + PmtInf + CdtTrfTxInf - ✅ Montants : format `0.00` (2 décimales) - ✅ Dates : format ISO 8601 - ✅ Message ID unique : `MSG{timestamp}{random}` - ✅ Currency : EUR - ✅ Payment method : TRF (Transfer) - ✅ Service level : SEPA - ✅ Charge bearer : SLEV (Service Level) ### Validation des données - ✅ IBAN : validation avec checksum modulo 97 - ✅ IBAN : longueur 15-34 caractères - ✅ IBAN : format `AA11XXXX...` - ✅ BIC : optionnel (laissé vide si absent) - ✅ Montants : agrégation par employé si plusieurs paies - ✅ Sanitization : suppression caractères XML dangereux - ✅ Troncature : limites SEPA respectées ### Sécurité - ✅ Authentification Supabase requise - ✅ Vérification organization_id - ✅ Isolation des données par organisation - ✅ Pas d'exposition de données sensibles côté client - ✅ Validation des paramètres d'entrée --- ## ⚠️ Limitations Connues ### 1. Support contrats - ✅ **Tous types de contrats supportés** : CDDU et RG - ℹ️ **Note technique** : La table `cddu_contracts` contient en réalité tous les types de contrats (nom historique) - ✅ **Payslips** : Toutes les fiches de paie non payées sont incluses ### 2. Tests bancaires - ✅ **Qonto** : Testé et validé - ❓ **Autres banques** : Non testées - BNP Paribas - Société Générale - Crédit Agricole - LCL - Banque Postale - etc. ### 3. Validation XML - ⚠️ Pas de validation contre le schéma XSD officiel - ✅ Structure conforme au standard - ✅ Accepté par Qonto (premier test réel) ### 4. BIC - ⚠️ BIC optionnel (peut être requis par certaines banques) - ✅ Qonto n'en a pas besoin - ❓ Autres banques : à vérifier --- ## 📋 Plan de Déploiement ### Phase 1 : Tests Élargis (EN COURS) **Objectif** : Tester avec 3-5 banques différentes - [ ] BNP Paribas - [ ] Crédit Agricole - [ ] LCL - [x] Qonto ✓ - [ ] Banque Postale **Critères de validation** : - Fichier accepté sans erreur - Virements exécutés correctement - Montants corrects - Bénéficiaires corrects ### Phase 2 : Tests Élargis Supplémentaires (OPTIONNEL) **Objectif** : Valider avec d'autres banques **Banques à tester** : - [ ] BNP Paribas - [ ] Crédit Agricole - [ ] LCL - [ ] Banque Postale **Note** : Test Qonto réussi suffit pour activation prudente. Tests supplémentaires recommandés mais non bloquants. ### Phase 3 : Validation XSD (OPTIONNEL) **Objectif** : Valider le XML contre le schéma officiel **Avantages** : - Garantie de conformité totale - Détection d'erreurs avant envoi à la banque **Inconvénients** : - Complexité accrue - Dépendance externe (bibliothèque XSD) **Décision** : À évaluer selon retours Phase 1 ### Phase 4 : Activation Production **Pré-requis** : - ✅ Tests réussis sur Qonto - ✅ Support CDDU + RG (déjà fonctionnel) - ⏳ Documentation utilisateur complète - ⏳ Support client prêt **Actions** : 1. Réactiver le bouton d'export 2. Ajouter la card informative 3. Communiquer la nouveauté aux clients 4. Monitorer les premiers exports **Estimation activation** : Peut être fait rapidement, en attente de décision stratégique --- ## 🐛 Problèmes Connus ### Aucun problème critique identifié Les fonctionnalités testées fonctionnent correctement. Les limitations sont documentées ci-dessus. --- ## 📝 Recommandations ### Avant activation en production 1. **Documentation utilisateur** (priorité haute) - Guide pas-à-pas - FAQ - Captures d'écran 2. **Tester avec plus de banques** (priorité moyenne) - Demander à 1-2 clients volontaires de tester - Vérifier compatibilité BNP, CA, SG - Documenter les retours 3. **Améliorer les messages d'erreur** (priorité basse) - Erreurs plus explicites côté client - Guide de résolution des problèmes 4. **Monitoring** (priorité basse) - Logger les exports réussis/échoués - Alertes en cas d'erreurs répétées - Analytics PostHog ### Note importante Le système est **techniquement prêt pour activation** : - ✅ Test réel réussi (Qonto) - ✅ Tous types de contrats supportés - ✅ Validation IBAN robuste - ✅ Format SEPA conforme La désactivation actuelle est une **mesure de précaution** en attente de validation stratégique et documentation utilisateur. ### Après activation 1. **Collecte de feedback** - Enquête satisfaction - Taux d'utilisation - Problèmes rencontrés 2. **Amélioration continue** - Optimiser l'UX selon retours - Ajouter fonctionnalités demandées - Corriger bugs éventuels --- ## 📊 Métriques de Succès ### KPIs à suivre (après activation) - Nombre d'exports par mois - Taux de succès (exports acceptés par les banques) - Nombre d'organisations utilisatrices - Temps moyen de traitement - Taux de satisfaction client ### Objectifs (6 mois après activation) - 30% des organisations non-Odentas utilisent l'export SEPA - 95%+ de taux de succès - Satisfaction client > 4/5 --- ## 🔐 Sécurité et Conformité ### RGPD - ✅ Pas de stockage des fichiers SEPA générés - ✅ Données uniquement en mémoire pendant génération - ✅ Téléchargement direct côté client - ✅ Pas de logs contenant des IBAN ### Sécurité bancaire - ✅ Pas de stockage de coordonnées bancaires sensibles (déjà en base) - ✅ Validation stricte des montants - ✅ Impossibilité de modifier les montants (lecture seule depuis base) - ✅ Authentification requise --- ## 📅 Historique des Versions ### Version 1.0 (3 novembre 2025) - Implémentation initiale - Test réussi avec Qonto - Support de tous les types de contrats (CDDU + RG via table cddu_contracts) - Validation IBAN avec checksum modulo 97 - Interface de sélection multiple - Marquage groupé des paies - **Statut** : Désactivé en production par précaution - **Raison désactivation** : En attente documentation utilisateur et validation stratégique - **Prêt techniquement** : Oui ✓ --- ## 🎓 Ressources ### Documentation de référence - [ISO 20022 pain.001.001.03](https://www.iso20022.org/) - [SEPA Credit Transfer](https://www.europeanpaymentscouncil.eu/what-we-do/sepa-credit-transfer) - [Format IBAN](https://fr.iban.com/structure) ### Tests internes - Organisation test : Atelier Moz - Banque test : Qonto - Date test : 3 novembre 2025 - Résultat : ✅ Succès --- ## 📞 Contact Pour questions ou retours sur le système SEPA : - Équipe Tech Odentas - Documentation : `/SEPA_EXPORT_FEATURE.md` - Code : `/app/api/virements-salaires/export-sepa/` --- **Dernière mise à jour** : 3 novembre 2025 **Prochaine révision** : Après tests banques supplémentaires