Documentation10 min de lecture

SEPA : virements fournisseurs et prélèvements clients dans Odoo

Les deux modules OCA de paiement SEPA pour Odoo 18 Community (`account_banking_sepa_credit_transfer` et `account_banking_sepa_direct_debit`, version 18.0.1.1.1, licence AGPL-3) génèrent les fichiers bancaires au format PAIN : **six versions** pour le virement, et `pain.008.001.02` par défaut pour le prélèvement. Le mandat, l'identifiant créancier, l'expiration à 36 mois et le module avec lequel ils sont incompatibles.

Billets comptés à la main au-dessus d'un bureau

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

ModuleSensMéthode crééeFormat par défautVersion
account_banking_sepa_credit_transferSortantSEPA Credit Transfer to supplierspain.001.001.0318.0.1.1.1
account_banking_sepa_direct_debitEntrantSEPA Direct Debit for customerspain.008.001.0218.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

FormatRemarque
pain.001.001.02Ancienne version, encore acceptée par certaines banques
pain.001.001.03Le format par défaut, le plus répandu
pain.001.001.04
pain.001.001.05
pain.001.001.09La version récente, demandée par un nombre croissant de banques
pain.001.003.03Variante 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

NotionValeursPourquoi elle compte
SchémaCORE ou B2BCORE pour les particuliers et TPE, avec droit de contestation étendu ; B2B entre professionnels, sans remboursement après débit
TypePonctuel ou récurrentUn mandat ponctuel s'épuise après un prélèvement
SéquencePremier / récurrent / finalLa 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

  1. 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.
  2. Installer le ou les modules — en vérifiant d'abord qu'account_sepa n'est pas installé si vous prenez le virement.
  3. Renseigner l'identifiant créancier dans Facturation ▸ Configuration ▸ Paramètres, section SEPA/PAIN.
  4. Créer ou vérifier les modes de paiement qui utilisent les méthodes créées automatiquement, et le format PAIN retenu sur chacun.
  5. Pour le prélèvement : créer les mandats, les faire signer, les valider. Un prélèvement sans mandat validé ne part pas.
  6. 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.03 vers pain.001.001.09 lors 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

ModuleDépôt OCAVersionLicenceDépend de
account_banking_sepa_credit_transferbank-payment18.0.1.1.1AGPL-3account_banking_pain_base
account_banking_sepa_direct_debitbank-payment18.0.1.1.1AGPL-3account_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

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.

Documentation OCAComptabilitéBanque

Partager

Fiches connexes

Relevés bancaires et pièces comptables sur un bureau
Relevé sur une instance Odoo 18 Community, le module OCA `account_reconcile_oca` (dépôt `account-reconcile`, version 18.0.1.1.14, licence AGPL-3) ajoute 2 modèles, 87 champs et 17 vues : il remplace le lettrage limité de la Community par deux écrans dédiés, bancaire et par compte. Ce qu'il ajoute à l'instance, où le trouver, ses quatre cas d'usage et ses limites connues.
Lire la suite
Documentation OCA, Comptabilité
Relevé bancaire et suivi des opérations sur un bureau
Odoo a retiré l'import de relevés bancaires de son édition Community à partir de la version 14 : les 3 modules OCA `account_statement_import_file` (18.0.1.0.3, LGPL-3), `_camt` et `_ofx` le rétablissent, avec la détection des transactions déjà importées. Comment ils s'articulent, ce que CAMT apporte de plus qu'OFX, et le piège du fichier sans IBAN.
Lire la suite
Documentation OCA, Comptabilité