Payer ses fournisseurs par virement et encaisser ses clients par prélèvement sont deux gestes bancaires normalisés en Europe. Les deux reposent sur un fichier XML au format PAIN, déposé sur le portail de la banque ou transmis par EBICS.
Odoo Community ne génère pas ces fichiers. Deux modules communautaires le font, avec tout ce que la norme exige autour : le mandat, l'identifiant créancier, la séquence du prélèvement et la date d'échéance.
Résumé
account_banking_sepa_credit_transfer crée une méthode de paiement sortante « SEPA Credit Transfer to suppliers » et le moteur qui construit le fichier de virement : en-tête de groupe, bloc de paiement, transactions. Il prend en charge six versions du format PAIN et sait émettre des virements instantanés. account_banking_sepa_direct_debit crée la méthode entrante « SEPA Direct Debit for customers » et enrichit le mandat bancaire des notions propres au prélèvement : schéma CORE ou B2B, mandat ponctuel ou récurrent, séquence premier / récurrent / final.
Trois points décident de la mise en service : l'identifiant créancier SEPA doit être renseigné avant toute génération de fichier de prélèvement ; une tâche planifiée fait expirer les mandats inutilisés depuis 36 mois ; et le module de virement est incompatible avec le module account_sepa d'Odoo, avec lequel il ne peut pas coexister.
L'essentiel
- Virement : méthode créée automatiquement, format par défaut
pain.001.001.03, six versions prises en charge, virement instantané disponible. - Prélèvement : méthode créée automatiquement, format par défaut
pain.008.001.02, mandat obligatoire, compte bancaire du client non requis. - Mandat : schéma CORE ou B2B, type ponctuel ou récurrent, séquence premier / récurrent / final — les trois notions que la banque contrôle.
- Impression et envoi par e-mail du mandat pré-rempli, depuis la fiche du mandat.
- Expiration automatique des mandats valides inutilisés depuis 36 mois, par une tâche planifiée active dès l'installation.
- Conflit déclaré avec
account_sepa: les deux ne s'installent pas ensemble.
Ce que ces modules ajoutent à l'instance
| Module | Sens | Méthode créée | Format par défaut | Version |
|---|---|---|---|---|
account_banking_sepa_credit_transfer | Sortant | SEPA Credit Transfer to suppliers | pain.001.001.03 | 18.0.1.1.1 |
account_banking_sepa_direct_debit | Entrant | SEPA Direct Debit for customers | pain.008.001.02 | 18.0.1.1.1 |
Les deux sont sous licence AGPL-3, dans le dépôt OCA bank-payment, et aucun n'ajoute de menu : ils enrichissent les écrans de méthodes de paiement, de modes de paiement et de mandats fournis par les modules dont ils dépendent.
L'usage quotidien passe par l'écran des ordres de paiement, traité dans la fiche sur les ordres de paiement : ces deux modules n'en sont que le moteur de génération de fichier.
Le virement fournisseur : six formats, et un conflit
À l'installation, la méthode de paiement « SEPA Credit Transfer to suppliers » est créée automatiquement : type sortant, compte bancaire requis, format pain.001.001.03 par défaut, et un avertissement si le bénéficiaire n'est pas marqué comme compatible SEPA.
Les versions prises en charge
| Format | Remarque |
|---|---|
pain.001.001.02 | Ancienne version, encore acceptée par certaines banques |
pain.001.001.03 | Le format par défaut, le plus répandu |
pain.001.001.04 | |
pain.001.001.05 | |
pain.001.001.09 | La version récente, demandée par un nombre croissant de banques |
pain.001.003.03 | Variante allemande |
Le format attendu est imposé par la banque, pas par Odoo : c'est la première question à lui poser, avant tout paramétrage. Un fichier au mauvais format est rejeté au dépôt, sans message utile.
Un détail de mise à jour à connaître : une migration livrée avec le module bascule automatiquement les méthodes existantes de pain.001.001.03 vers pain.001.001.09 lors d'une montée de version. Aucune action utilisateur n'est demandée — et aucune alerte non plus. Si votre banque n'accepte pas encore la version 09, vérifiez ce réglage après chaque mise à jour.
Le virement instantané
Le module sait marquer un virement comme instantané — le service qui exécute le transfert en quelques secondes, soumis à un plafond et à une tarification propres à chaque banque. L'option existe côté Odoo ; son acceptation dépend entièrement de la convention bancaire.
Point bloquant à vérifier avant installation : le module est déclaré en conflit avec
account_sepa, le module de virement SEPA d'Odoo. Les deux ne peuvent pas fonctionner ensemble sur la même instance. Sur une base existante, c'est un arbitrage, pas une addition.
Le prélèvement client : le mandat avant tout
Prélever suppose une autorisation écrite du débiteur : le mandat. C'est la pièce que la banque et le client peuvent réclamer, et ce que ce module structure.
Ce que le mandat porte désormais
| Notion | Valeurs | Pourquoi elle compte |
|---|---|---|
| Schéma | CORE ou B2B | CORE pour les particuliers et TPE, avec droit de contestation étendu ; B2B entre professionnels, sans remboursement après débit |
| Type | Ponctuel ou récurrent | Un mandat ponctuel s'épuise après un prélèvement |
| Séquence | Premier / récurrent / final | La banque contrôle la cohérence de cette séquence sur un même mandat |
Deux actions sont disponibles directement depuis la fiche du mandat : imprimer un PDF pré-rempli, et l'envoyer par e-mail au client avec un modèle de message prêt. C'est ce qui évite le document rédigé à la main, et surtout le mandat qui ne revient jamais signé.
L'identifiant créancier, et les 36 mois
- L'identifiant créancier SEPA se renseigne sur la société — ou sur le mode de paiement si l'entreprise en possède plusieurs — dans Facturation ▸ Configuration ▸ Paramètres, section SEPA/PAIN. Sans lui, aucun fichier de prélèvement ne peut être généré. En France, il est délivré par la Banque de France via votre banque, et le demander prend des jours.
- Une tâche planifiée fait passer à « expiré » tout mandat valide inutilisé depuis 36 mois. Elle est active dès l'installation. C'est la règle SEPA elle-même : un mandat dormant depuis trois ans cesse d'être utilisable, et le module l'applique plutôt que de laisser passer un prélèvement contestable.
Troisième élément de configuration : les actions Valider, Annuler et Remettre en brouillon d'un mandat sont réservées au groupe de sécurité des paiements. Qui valide un mandat est une question d'organisation autant que de droit d'accès.
Le module ne demande pas le compte bancaire du client sur la méthode de paiement — c'est le mandat qui porte la référence du compte à débiter.
Mettre en service : l'ordre des opérations
- Demander à la banque le format PAIN attendu pour les virements, et l'identifiant créancier SEPA pour les prélèvements. Ces deux réponses conditionnent tout le reste.
- Installer le ou les modules — en vérifiant d'abord qu'
account_sepan'est pas installé si vous prenez le virement. - Renseigner l'identifiant créancier dans Facturation ▸ Configuration ▸ Paramètres, section SEPA/PAIN.
- Créer ou vérifier les modes de paiement qui utilisent les méthodes créées automatiquement, et le format PAIN retenu sur chacun.
- Pour le prélèvement : créer les mandats, les faire signer, les valider. Un prélèvement sans mandat validé ne part pas.
- Générer un premier ordre, déposer le fichier à la banque, et vérifier qu'il est accepté avant d'industrialiser.
La dernière étape n'est pas une formalité. Le premier dépôt révèle à peu près toujours quelque chose : un IBAN mal saisi, un format refusé, un libellé tronqué. Mieux vaut le découvrir sur dix virements que sur trois cents.
Limites connues
- Conflit déclaré avec
account_sepa: les deux modules de virement ne coexistent pas. - La migration bascule silencieusement le format de
pain.001.001.03verspain.001.001.09lors d'une mise à jour : à revérifier si votre banque n'accepte pas la version récente. - Sans identifiant créancier SEPA, aucun fichier de prélèvement n'est généré — et l'obtention de cet identifiant ne dépend pas de vous.
- Les mandats expirent à 36 mois d'inactivité, automatiquement : un client prélevé une fois par an reste valide, un client dormant depuis trois ans devra re-signer.
- Le virement instantané dépend de la convention bancaire : l'option existe dans Odoo, son acceptation non.
Identité technique
| Module | Dépôt OCA | Version | Licence | Dépend de |
|---|---|---|---|---|
account_banking_sepa_credit_transfer | bank-payment | 18.0.1.1.1 | AGPL-3 | account_banking_pain_base |
account_banking_sepa_direct_debit | bank-payment | 18.0.1.1.1 | AGPL-3 | account_banking_pain_base, account_banking_mandate |
Les deux figurent dans nos packs négoce et option finance et RH, au-delà du socle commun.
Questions fréquentes
Quel format PAIN faut-il choisir ?
Celui que votre banque accepte — c'est elle qui l'impose, pas Odoo. Le module prend en charge six versions pour le virement (pain.001.001.02 à .09, plus une variante allemande) et retient pain.001.001.03 par défaut. Un fichier au mauvais format est rejeté au dépôt, souvent sans message exploitable.
Peut-on installer ces modules à côté d'account_sepa ?
Non pour le virement : account_banking_sepa_credit_transfer déclare un conflit avec account_sepa et les deux ne peuvent pas fonctionner ensemble. Sur une instance où account_sepa est déjà en place, c'est un arbitrage à faire avant l'installation, pas une addition de fonctionnalités.
Qu'est-ce que l'identifiant créancier SEPA, et où le renseigner ?
C'est l'identifiant qui vous désigne comme créancier dans chaque prélèvement. Il se renseigne sur la société — ou sur le mode de paiement si vous en avez plusieurs — dans Facturation ▸ Configuration ▸ Paramètres, section SEPA/PAIN. Sans lui, aucun fichier de prélèvement n'est généré. En France, il est délivré via votre banque et l'obtenir prend du temps : anticipez.
Que se passe-t-il pour un mandat non utilisé pendant 36 mois ?
Une tâche planifiée, active dès l'installation, le fait passer à l'état « expiré ». C'est la règle SEPA : un mandat dormant depuis trois ans n'est plus utilisable. Le client devra signer un nouveau mandat. Un client prélevé même une fois par an n'est pas concerné.
Quelle différence entre un mandat CORE et un mandat B2B ?
Le schéma CORE s'adresse aux particuliers et aux très petites structures, avec un droit de contestation étendu après débit. Le schéma B2B est réservé aux professionnels et ne permet pas le remboursement après exécution, en contrepartie d'une vérification du mandat par la banque du débiteur. Le choix figure sur le mandat.
Se faire accompagner
Les paiements SEPA sont le dossier où le retard ne vient jamais du logiciel : il vient de l'identifiant créancier qu'on demande trois semaines trop tard, du format que la banque n'a jamais confirmé, ou des mandats qu'on découvre non signés le jour de la première échéance.
Nous menons donc ce chantier à l'envers du réflexe habituel : la banque d'abord, Odoo ensuite. Nous cadrons le format, l'identifiant et la campagne de mandats, puis nous paramétrons et testons un dépôt réel avant d'industrialiser. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Ordres de paiement : préparer et exécuter les règlements
- Importer les relevés bancaires au format CAMT et OFX
- Automatiser la comptabilité d'une PME avec Odoo
En résumé
Deux modules, deux sens de flux, et un même moteur de fichier PAIN. Ce qui décide de la réussite n'est pas dans Odoo : le format imposé par la banque, l'identifiant créancier à obtenir, les mandats à faire signer — et la migration qui change le format toute seule lors d'une mise à jour. Parlons de vos flux bancaires.