Trois corvées de trésorerie qu'Odoo 20 retire du bureau du comptable
Odoo 20 touche le volet trésorerie de Comptabilité à trois endroits. Les prêts gagnent la reconnaissance optique de caractères : vous téléversez l'échéancier d'amortissement envoyé par la banque et le service de numérisation est censé remplir les lignes. Les mandats de prélèvement quittent le module SEPA et deviennent une base autonome, account_direct_debit, sur laquelle se branchent SEPA et le format canadien CPA 005. Et les cartes de dépenses Stripe Issuing reçoivent les correctifs qui les rendent utilisables au quotidien, à commencer par une dépense créée au moment où la carte est utilisée.
Cet article s'adresse au chef des finances, au contrôleur et au gestionnaire de bureau qui gère les dépenses. Nous avons parcouru chaque écran ci-dessous sur une société de démonstration belge, ce qui compte pour les réserves régionales : le prélèvement SEPA est un schéma européen, le format canadien est un module distinct que nous n'avons pas installé, et Stripe Issuing n'est offert que dans les pays pris en charge par Stripe.
Observé sur la version préliminaire d'Odoo 20.0 Enterprise du 23 septembre 2026. Les noms, menus et disponibilités peuvent changer avant la version finale ; nous mettrons cette page à jour le cas échéant.
Prêts : téléverser l'échéancier de la banque au lieu de le saisir
Odoo enregistrait déjà un prêt, son échéancier d'amortissement et la répartition entre dette à long terme et à court terme. La partie fastidieuse était l'échéancier lui-même : soixante lignes recopiées d'un PDF bancaire. Le nouveau module account_loans_extract envoie ce PDF au service de numérisation d'Odoo et remplit les dates, le capital et les intérêts par période. Le réglage se trouve dans Comptabilité > Configuration > Paramètres, section Numérisation. Une correction au guide : sur cette version, le réglage Prêts n'offre que deux choix, Ne pas numériser et Numériser automatiquement, sans mode à la demande. L'extraction ne s'exécute que tant que le prêt n'a aucune ligne, elle n'écrase donc jamais un travail déjà fait.

La fiche de prêt porte le Montant emprunté, les Intérêts, la Date du prêt et la Durée, avec un onglet Tableau d'amortissement et des boutons Confirmer, Téléverser et Calculer. Nous avons téléversé un échéancier de démonstration sur deux ans d'une banque fictive ; Odoo l'a joint, a ouvert le PDF à côté du formulaire et l'a envoyé en numérisation. Le service a répondu « Crédit insuffisant pour numériser votre document », car la démo n'avait aucun crédit IAP. Nous pouvons donc montrer le parcours, pas l'échéancier rempli. Le guide décrit aussi une extension française, l10n_fr_account_loans, avec un solde théorique à mi-période par ligne ; la localisation française n'était pas installée sur notre démo.

Les mandats de prélèvement deviennent un module à part
Jusqu'à Odoo 19, le mandat de prélèvement était un morceau du module SEPA. Odoo 20 l'en extrait dans account_direct_debit, un module de base qui possède la fiche de mandat, son cycle de vie et le lien entre mandats, factures et paiements par lot. Selon le guide, le prélèvement SEPA pour les banques de la zone euro, le format canadien CPA 005 et le fournisseur de paiement SEPA du commerce électronique en dépendent tous. Notre démo a tourné avec SEPA sur une société belge ; nous n'avons pas testé le module canadien. Le guide ne mentionne aucun schéma américain.

Le formulaire est court : un Client, un Compte bancaire (IBAN, flouté sur nos captures), un Schéma SDD (CORE, « pour les consommateurs, remboursement possible »), une Pré-notification en jours, une date de Validité et une Société. En brouillon, l'en-tête propose Envoyer et imprimer pour la copie à signer, plus Valider et Annuler. Une fois validé, le mandat est Actif, l'en-tête passe à Clôturer et Révoquer, et un bouton intelligent Encaissements compte les prélèvements enregistrés par son intermédiaire. Le guide cite un second bouton, Factures payées, qui n'apparaît qu'une fois l'encaissement passé par la banque, ce qu'une démo privée ne peut pas faire.

De la facture à la tournée d'encaissement
Ce qui change pour la personne qui lance l'encaissement mensuel, c'est la visibilité. La liste des factures gagne un filtre A un mandat qui ne garde que les factures dont le client détient un mandat utilisable à la date de la facture. Quand vous enregistrez un paiement avec la méthode Prélèvement SEPA, Odoo vérifie qu'un mandat du bon type existe, enregistre le paiement et appose sur la facture le ruban vert En paiement. Il y reste jusqu'à ce que le fichier de lot soit envoyé et que la ligne bancaire soit lettrée, le moment où l'argent est réel.


Routine d'encaissement
Enregistrez le filtre A un mandat combiné à Comptabilisé comme favori dans la liste des factures. Tout ce qu'il affiche peut être encaissé ; tout ce qu'il cache exige d'abord un mandat ou une autre méthode de paiement.
Paiements envoyés par une connexion bancaire, et consentement qui prévient avant d'expirer
Le troisième volet est l'initiation de paiement par banque ouverte : Odoo envoie un ordre de paiement à la banque par le fournisseur de synchronisation. Le guide le dit plus fiable dans Odoo 20 parce que le proxy bancaire rappelle désormais Odoo par webhooks quand le statut d'un paiement change, et les paiements par lot affichent une colonne de statut d'initiation. Le consentement est aussi revu : Odoo suit la date d'expiration de chaque connexion, envoie un courriel quinze, trois et un jour avant l'échéance, et publie une page de renouvellement que le titulaire du compte peut utiliser sans identifiant Odoo.

Rien de tout cela n'a pu être vérifié de notre côté. Comptabilité > Configuration > Synchronisation en ligne était vide sur la démo, et l'initiation de paiement exige une connexion bancaire active par le proxy d'Odoo. Que votre banque la prenne en charge dépend de la couverture du fournisseur.
Cartes de dépenses : la dépense existe dès que la carte est utilisée
Les cartes Stripe Issuing permettent à une société de remettre aux employés une carte prépayée virtuelle ou physique et de voir la dépense dans Dépenses sans remboursement. La fonction s'active dans Dépenses > Configuration > Paramètres, sous Carte de dépenses : choisissez le journal Stripe, cochez les conditions générales et cliquez sur Connecter (démo). L'option n'apparaît que pour les sociétés dont le pays est pris en charge par Stripe Issuing ; sur notre base, c'était la société belge seulement.

Le changement qui compte le plus est le moment. Odoo créait la dépense quand le commerçant capturait les fonds, parfois un jour après l'achat. Il la crée désormais à l'autorisation, avec un ruban jaune Réservé tant que le montant est seulement bloqué, puis la transforme en dépense normale à l'arrivée de la capture. Les reçus sont joints pendant qu'on les a en main, et des autorisations non capturées ne peuvent plus dépasser une limite. Deux correctifs plus petits suivent : les cartes virtuelles affichent désormais leur NIP par le même élément sécurisé de Stripe, et un bouton Bloquer permet à un administrateur de retirer une carte physique coincée en expédition.

La fiche de carte que nous avons pu ouvrir montre un Titulaire, un Type (Physique ou Virtuelle), le Journal Stripe, un bouton Activer et une barre d'états Brouillon, Inactive, Active. L'onglet Politique de dépenses contient les Pays, les Catégories et deux limites, une par période et une par transaction. Le guide ajoute une action Suspendre, un kanban avec les quatre derniers chiffres et la limite en cours, et une fiche de litige qui soumet les preuves à Stripe et comptabilise le résultat en lignes de relevé sur le journal Stripe. Tout cela exige un compte Stripe connecté.
Les codes de catégorie de commerçant décident où atterrit un paiement
Chaque transaction par carte arrive avec un code de catégorie de commerçant qui classe le marchand, compagnie aérienne, hôtel ou quincaillerie. Odoo associe ces codes aux catégories de dépenses pour que la transaction atterrisse sur le bon produit et le bon compte ; la liste de la démo compte 296 codes et plages. Odoo 20 rend cela plus sûr : quand des codes se retrouvent sans correspondance après la suppression d'une catégorie ou la modification d'une association, Odoo avertit et journalise le code et son nom chaque fois que Stripe refuse une transaction.

Une correction au guide : la liste MCC n'a aucune entrée de menu sous Dépenses > Configuration sur cette version ; nous l'avons atteinte par son URL directe, et le menu n'apparaît qu'en mode développeur. Notez aussi ce qui a été retiré : un réglage pour basculer entre les modes test et production de Stripe a été annulé avant la sortie parce qu'il pouvait priver une société de l'accès à ses fonds réels. Ne le promettez pas.
Comment l'essayer sur une base de démonstration
- Ouvrez Comptabilité > Configuration > Paramètres, descendez à Numérisation et réglez Prêts sur Numériser automatiquement. Cela consomme des crédits IAP.
- Allez dans Comptabilité > Comptabilité > Prêts, cliquez sur Nouveau, puis Téléverser et choisissez le PDF de l'échéancier de la banque.
- Installez Prélèvement SEPA et renseignez l'identifiant créancier sur la société. Ouvrez Comptabilité > Clients > Mandats de prélèvement, cliquez sur Nouveau, choisissez le client et son IBAN, puis Valider.
- Ouvrez Comptabilité > Clients > Factures, ajoutez le filtre A un mandat, ouvrez une facture, cliquez sur Payer et choisissez Prélèvement SEPA.
- Sur une société d'un pays pris en charge par Stripe Issuing, ouvrez Dépenses > Configuration > Paramètres, cochez Carte de dépenses, choisissez le journal Stripe, acceptez les conditions et cliquez sur Connecter (démo). La base doit être joignable sur une URL https publique.
- Ouvrez Dépenses > Cartes, cliquez sur Nouveau, choisissez un Titulaire et le type Virtuelle, remplissez l'onglet Politique de dépenses et cliquez sur Activer.






Ce que nous n'avons pas pu vérifier sur la version préliminaire
L'échéancier de prêt rempli après numérisation : le service IAP a répondu « Crédit insuffisant ». Le solde théorique à mi-période français : la localisation française n'était pas installée. Le bouton Factures payées sur un mandat : il n'apparaît qu'après l'envoi du lot SEPA et le lettrage de la ligne bancaire. L'initiation de paiement par banque ouverte, l'expiration du consentement et la page publique de renouvellement : tout exige une connexion bancaire active par le proxy d'Odoo. Le kanban des cartes actives, Suspendre et Bloquer, le ruban Réservé, le NIP des cartes virtuelles, les litiges et l'avertissement de codes MCC sans correspondance exigent un compte Stripe connecté ; le connecteur de démo a refusé notre URL de webhook locale parce qu'elle n'était pas en https. Tout le reste de cette page a été parcouru sur la version 20.0 Enterprise du 23 septembre 2026.
Ce que cela change pour une mise à niveau
Si vous utilisez Odoo 17, 18 ou 19 avec le prélèvement SEPA, attendez-vous à ce que les données de mandat migrent vers la nouvelle base account_direct_debit pendant la mise à niveau, et vérifiez vos mandats actifs ensuite. La numérisation des prêts est un service IAP : prévoyez des crédits, et saisissez une fois à la main les échéanciers existants, puisque l'extraction ne remplit que les prêts vides. Si vous émettez déjà des cartes Stripe, revoyez l'association des codes MCC et prévenez les employés que les dépenses apparaissent désormais à l'autorisation. Chacune de ces fonctions dialogue avec un tiers, et Odoo a programmé pour la même version la suppression des points de terminaison XML-RPC et JSON-RPC : tout script qui pousse des paiements ou tire des dépenses vers Odoo passe d'abord par notre audit de migration RPC. Le reste fait partie du cadrage de notre service de migration, et l'article central de la série liste les autres changements de Comptabilité dans la même version.
Questions fréquentes
Odoo 20 peut-il lire un échéancier d'amortissement de prêt dans un PDF ?
Oui, grâce au nouveau module account_loans_extract. Téléversez l'échéancier de la banque sur un prêt encore sans lignes et le service de numérisation remplit les dates, le capital et les intérêts par période. Il ne s'exécute que si le réglage de la société est Numériser automatiquement, et il consomme des crédits IAP ; notre démo s'est arrêtée sur « Crédit insuffisant ».
Les mandats de prélèvement d'Odoo 20 fonctionnent-ils au Canada ou aux États-Unis ?
Le modèle de mandat est désormais une base générique, account_direct_debit, et le guide indique que le module canadien CPA 005 en dépend, au même titre que le prélèvement SEPA pour l'Europe. Nous n'avons testé SEPA que sur une société belge. Le guide ne mentionne aucun schéma de prélèvement américain : ne présumez pas d'une prise en charge ACH dans cette version.
Que signifie le ruban En paiement sur une facture réglée par prélèvement ?
Il signifie qu'un paiement par prélèvement SEPA a été enregistré sur la facture mais que la banque n'a pas encore confirmé les fonds. Le ruban reste jusqu'à l'envoi du fichier de lot et au lettrage de la ligne de relevé correspondante ; la facture passe alors à Payée et le bouton Factures payées du mandat apparaît.
Les cartes de dépenses Stripe Issuing sont-elles offertes dans mon pays ?
Seulement si Stripe Issuing prend en charge le pays de votre société. Odoo n'affiche l'option Carte de dépenses dans les paramètres de Dépenses que pour les sociétés admissibles ; sur notre démo multi-sociétés, une seule société belge l'était. Vérifiez votre propre page de paramètres avant de planifier un programme de cartes, et notez que le connecteur exige une URL https publique pour son webhook.
Puis-je basculer les cartes de dépenses entre les modes test et production de Stripe dans Odoo 20 ?
Non. Un réglage pour cette bascule a été ajouté pendant le développement puis annulé avant la sortie parce qu'il pouvait priver une société de l'accès à ses fonds réels. La version préliminaire se connecte par le proxy d'Odoo dans un mode fixe : prévoyez vos essais sur une base distincte plutôt que sur un interrupteur.
