Le sujet du prélèvement arrive rarement par la porte des moyens de paiement. Il arrive par la trésorerie. Un dirigeant ou un DAF constate que ses clients sous contrat, ceux qui ne contestent jamais rien, paient quand même en retard, tous les mois. La relance fonctionne, mais elle mobilise du temps pour des factures qui ne posent aucun problème de fond.
Le prélèvement SEPA inverse la logique : c'est vous qui déclenchez l'encaissement, à une date que vous avez annoncée. Odoo sait le faire, et plutôt proprement. Encore faut-il connaître les conditions d'édition, les règles bancaires qui encadrent l'exercice et deux ou trois pièges que nous croisons régulièrement en intégration. On déroule le circuit complet, du mandat au rejet.
Le seul moyen de paiement où vous choisissez la date
Un prélèvement est une opération à la main du créancier. Vous demandez à votre banque de débiter le compte de votre client, sur la base d'une autorisation signée qui s'appelle le mandat. La Banque de France le rappelle sur sa page de référence : sans mandat valide, aucun prélèvement ne doit être présenté.
Deux identifiants structurent le dispositif. L'ICS, identifiant créancier SEPA, désigne votre entreprise de façon unique. Il est attribué par la Banque de France, par l'intermédiaire de votre banque, sur présentation d'un Kbis. La RUM, référence unique de mandat, identifie chaque autorisation signée. C'est vous qui la créez et la communiquez au client, et elle apparaîtra sur ses relevés bancaires.
Une obligation mérite d'être traitée avant toute mise en production : la pré-notification. Vous devez informer votre client au moins 14 jours calendaires avant la date du prélèvement, sauf accord prévoyant un autre délai, avec au minimum la date et le montant. La facture elle-même peut servir de support. Sur nos projets, la date de prélèvement, le montant et la RUM figurent directement sur le modèle de facture, et l'obligation est couverte sans processus supplémentaire.
Dernier point de cadrage : il existe deux schémas. Le Core, ouvert à tous, laisse au débiteur un droit au remboursement sans justification pendant huit semaines après le débit, et treize mois si le prélèvement n'était pas autorisé. Le B2B, réservé aux entreprises, supprime ce droit une fois le prélèvement exécuté, mais il impose que la banque du débiteur enregistre le mandat avant le premier passage. Le B2B sécurise donc votre encaissement au prix d'une démarche côté client, ce qui freine souvent son adoption en pratique.
Ce qu'Odoo sait faire, et dans quelle édition
Commençons par le point qui fâche : le prélèvement SEPA natif est une fonctionnalité Enterprise. Nous avons vérifié dans le dépôt public odoo/odoo ce 14 juillet, et côté Community, aucun module de prélèvement n'existe. Seul account_qr_code_sepa est présent, et il sert à autre chose, à savoir ajouter un QR code de virement sur vos factures. Pour une instance Community, la piste sérieuse reste les modules de la communauté OCA dédiés aux paiements bancaires. Vérifiez leur disponibilité pour votre version avant de bâtir un projet dessus.
En Enterprise, y compris en SaaS, le circuit est propre. Vous activez le prélèvement SEPA dans les paramètres de la comptabilité et vous renseignez votre ICS. Vous créez ensuite vos mandats depuis le menu Clients de la comptabilité, avec la RUM, les dates de validité et l'IBAN du client. Odoo génère le formulaire à faire signer, puis la validation du mandat l'active. La documentation officielle décrit chaque écran du parcours.
À l'encaissement, vous enregistrez les paiements des factures concernées avec la méthode prélèvement, puis vous les regroupez dans un paiement par lot. Odoo produit un fichier XML au format pain.008, le standard que les banques de la zone SEPA acceptent, et vous le déposez sur votre interface bancaire. Le dispositif fonctionne uniquement en euros, ce qui va de soi pour la France mais mérite d'être dit sur les dossiers multi-devises. Une fois le lot crédité, le rapprochement marque les factures comme payées.
Deux automatismes méritent le détour. Odoo clôture automatiquement un mandat 36 mois après le dernier prélèvement, ce qui correspond à la règle SEPA de caducité rappelée par la Banque de France : un mandat resté inutilisé pendant 36 mois ne doit plus servir. Et en cas de rejet, le plus souvent pour provision insuffisante, la banque reprend les fonds qu'elle avait crédités. Odoo enregistre alors une transaction négative qui matérialise le rejet dans vos comptes.
Les pièges qu'on retrouve en mission
Le premier concerne la fin de vie des mandats. Odoo distingue la clôture, qui fixe la date de fin à aujourd'hui, et la révocation, qui désactive le mandat immédiatement. La documentation précise un détail que beaucoup ratent : les paiements déjà enregistrés avant la révocation partent quand même dans le prochain fichier XML. Si un client demande l'arrêt des prélèvements, vérifiez les paiements en attente avant de générer le lot suivant, pas après.
Le deuxième surgit pendant les migrations. Quand une entreprise bascule vers Odoo depuis un autre outil, les mandats existants doivent être repris avec leur RUM d'origine et leur date de signature. Régénérer des références neuves revient à créer de nouveaux mandats aux yeux des banques, sans signature du client pour les appuyer. Sur une reprise de données, la liste des mandats actifs fait partie des fichiers que nous demandons dès le cadrage, au même titre que les balances.
Le troisième touche les groupes. L'ICS identifie une entité juridique. En multi-sociétés, chaque société émettrice de prélèvements doit disposer de son propre identifiant et de ses propres mandats, et le paramétrage se fait société par société.
Le dernier est comptable. Un prélèvement Core encaissé n'est pas définitif pendant huit semaines. Pour une entreprise dont les clients sont des particuliers, ce retour possible doit entrer dans la lecture du poste clients : un lot crédité en début de mois peut partiellement revenir avant la clôture suivante. Chaque rejet doit ensuite déclencher une relance. Nous avons justement détaillé fin juin où la V19.3 a déplacé les relances, et les deux sujets se combinent bien.
La facture électronique commence à porter le mandat
Le 7 juillet, un commit est arrivé sur la branche master du dépôt public d'Odoo : quand un mandat de prélèvement valide existe, les factures exportées au format UBL embarquent un bloc PaymentMandate avec la référence du mandat et le compte du payeur, conformément aux exigences Peppol BIS 3 (836929fc). Le message du commit donne l'origine du besoin : certains partenaires exigent que le compte bancaire du payeur figure dans le XML de la facture.
Ce changement vise la version 20 et le circuit Peppol, pas directement le flux français de septembre. Il illustre pourtant une direction de fond. Dans une facture structurée, les informations de paiement font partie du document, au même niveau que les lignes et la TVA, et la norme européenne dont dérivent les formats français prévoit des champs dédiés au prélèvement, dont la référence de mandat.
La conséquence pratique arrivera vite : vos RUM et les IBAN de vos mandats vont circuler dans des documents lus par des machines, chez vos clients et sur leurs plateformes. Un mandat mal renseigné dans l'ERP restait jusqu'ici un problème interne. Il devient une donnée exposée. Le nettoyage du référentiel tiers, déjà au cœur des chantiers de facturation électronique, vaut donc aussi pour les mandats.
Côté code Odoo cette semaine
Notre dernier tour d'horizon du dépôt public odoo/odoo date du 26 juin, alors on rattrape deux semaines et demie d'un coup : environ 900 commits sur master entre le 26 juin et le 14 juillet. Le rythme ne faiblit pas, et en dehors du sujet du jour, quelques changements méritent qu'on s'y arrête.
Le changement de liste de prix recalculera les prix tout seul
Un commit mergé le 7 juillet modifie le comportement des devis : changer la liste de prix recalcule immédiatement les prix des lignes, alors qu'il fallait jusqu'ici cliquer sur un bouton Mettre à jour les prix (e78f729d). L'évolution vise la version 20. Les équipes commerciales qui changeaient volontairement de liste sans recalculer, pour conserver des prix négociés, devront revoir leur façon de faire. C'est le genre de changement silencieux qui n'apparaît dans aucune note de version et qu'on découvre en migration.
Une salve d'optimisations pour les grosses bases
La semaine du 3 au 10 juillet compte neuf commits de performance, un volume inhabituel. Le plus parlant concerne le widget de rapprochement bancaire : le message du commit reconnaît que son ouverture prend beaucoup de temps sur les grosses bases, et il allège les données chargées côté navigateur (66b043ea, 10 juillet). La recherche de clients au point de vente et la création de reliquats en stock ont reçu le même traitement. La base installée d'Odoo grossit, et ça se voit dans les priorités du dépôt.
Le module congés français poursuit sa mise à niveau
Dans le prolongement de notre article du 26 juin sur les congés, Odoo a corrigé le 2 juillet le calcul des demi-journées dans l10n_fr_hr_holidays (5a88c9d3), puis un plantage du menu Congés le 11 juillet. La France manque en revanche toujours à la liste des vingt pays dont les jours fériés se génèrent automatiquement à l'installation, et nous avons revérifié ce point le 14 juillet. La saisie manuelle reste de mise.
Vous voulez mettre en place le prélèvement sur votre Odoo, ou fiabiliser un circuit existant avant la rentrée ? Parlons-en.
Sources
- Le prélèvement SEPA, Banque de France. Lire l'article
- Se faire payer par prélèvement SEPA, Les Clés de la Banque (FBF). Lire l'article
- SEPA Direct Debit (SDD) customer payments, documentation Odoo 19. Lire l'article
- Commit 836929fc, PaymentMandate dans les factures UBL, GitHub odoo/odoo. Voir le commit
- Commit e78f729d, recalcul automatique des prix, GitHub odoo/odoo. Voir le commit
- Commit 66b043ea, performance du rapprochement bancaire, GitHub odoo/odoo. Voir le commit
Métadonnées
- title : Prélèvement SEPA dans Odoo : le circuit complet côté DAF
- slug : prelevement-sepa-dans-odoo-le-circuit-complet-cote-daf
- excerpt : Mandats, ICS, fichiers pain.008, rejets et pièges de migration : le circuit complet du prélèvement SEPA dans Odoo, vu par un intégrateur terrain.
- metaTitle : Prélèvement SEPA dans Odoo : mandats, fichiers, rejets
- metaDescription : Mandats, ICS, fichiers pain.008, rejets et pièges de migration : le circuit complet du prélèvement SEPA dans Odoo, vu par un intégrateur terrain.
- tags : prélèvement SEPA, trésorerie, comptabilité, facturation électronique
- catégorie : guide-pratique