TVA sur encaissement dans Odoo : comment automatiser ?

Résumé

Si vous êtes en v7 ou v8, utilisez le module tax_on_payment.

Si vous êtes en v9 ou v10, aidez-nous à financer le portage de ce module en v9 et v10 !

Introduction : Odoo et la compta

Avant de virer vers un modèle propriétaire et open-core à partir de la version 9.0, Odoo était un des rares logiciels de gestion vraiment open-source offrant un début réaliste de gestion comptable. C'était un point fort par rapport à d'autres solutions de gestion open-source comme Dolibarr ayant fait l'impasse sur la compta. Mais c'était aussi un point faible pour les gens qui ont vraiment essayé de l'utiliser. On en fait partie : toute la comptabilité Anybox est gérée dans Odoo, et à titre d'exemple on a même géré intégralement la paye d'Anybox pendant deux ans avec le module standard légèrement amélioré, avec toute la configuration des taux des cotisations sociales, CSG, CRDS, etc. Notre paie officielle est gérée en réalité par le TESE de l'URSSAF, mais ça nous a servi de comparaison et pendant deux ans les bulletins de paie que nous avons générés étaient identiques à ceux de l'URSSAF à 1 cent près ! Mais stop à la digression, aujourd'hui nous allons parler d'un autre sujet.

Parmi les nombreuses difficultés non résolues dans Odoo, il y a la gestion de la TVA sur encaissement. En quoi cela consiste ?

TVA sur les débits ou sur les encaissements ?

Pour résumer, en temps qu'entreprise assujettie à la TVA, la TVA que vous facturez à un client, est due à l'État. Et à l'inverse, vous vous faites rembourser la TVA que vous avez payée lors des achats. Par conséquent si vous êtes en situation de bénéfice, vous ne payez à l'État que la différence entre la TVA collectée lors des ventes et la TVA remboursable des achats (qu'on appelle TVA déductible). Par conséquent cette différence est bien une taxe sur la valeur ajoutée que vous créez avec votre entreprise au niveau purement opérationnel. Elle ne tient pas compte des autres charges, par exemple salariales.

Comme l'État est en déficit chronique, son objectif est de se faire payer le plus vite possible. Pour ça il existe en France deux modes de fonctionnement :

  • la TVA sur les débits
  • la TVA sur les encaissements

Le fonctionnement le plus naturel est la TVA sur encaissement : dès que vous encaissez le paiement d'un client, théoriquement en TTC, il faut rembourser la part de TVA correspondante, qui est indiquée sur la facture, et vous ne conservez que le HT. C'est le fonctionnement par défaut quand on vend du service.

L'autre mode est la TVA sur les débits. Les débits dont on parle sont ceux correspondant au compte de tiers du client : quand vous enregistrez comptablement une facture, il y a :

  • une écriture au crédit dans le compte de produits (classe 7), correspondant au montant hors-taxe, qui signifie en gros: j'ai réalisé ce montant en positif (crédit) au chiffre d'affaires.
  • une autre écriture au crédit dans le compte de tiers correspondant à l'État (classe 4), pour se rappeler que vous lui devez la TVA. C'est comme un surplus pour vous, donc c'est au crédit.
  • une écriture au débit dans le compte de tiers du client, pour le montant TTC. Ici on est au débit car ça représente un manque pour vous : vous n'avez pas encore été payé.

Pour en revenir au sujet, si vous êtes en TVA sur les débits, c'est au moment où vous faites l'écriture de débit client que vous devez rembourser la TVA à l'État.  Et là vous vous dites QUOI ? J'ai même pas encore été payé par le client que je dois déjà payer l'État. Oui. Désolé, c'est le cas de tous les commerçants, et la raison pour laquelle un commerçant doit prévoir sa trésorerie de manière très attentive, en calculant son fond de roulement. Un commerçant a ainsi intérêt à se faire payer le plus tôt possible et à facturer le plus tard possible. Mais tout ceci est cadré par la législation, la facture doit être émise au moment de la livraison. Pour du B2C ce n'est pas un problème, vous vous faites généralement payer par les particuliers dès la commande. Pour du commerce B2B c'est plus dangereux car vous facturez et vous livrez au client le plus tôt possible, et le client professionnel vous paye généralement le plus tard possible. Même si l'opération est positive d'un point de vue comptable, comme vous êtes coincé entre l'État et le client vous êtes très très vite en négatif au niveau tréso.

Et Odoo dans tout ça ?

Dans Odoo, les écritures comptables correspondant à une facture sont réalisées au moment de la validation de la facture. Donc l'écriture de crédit de TVA se fait au moment de la facturation. Si vous avez configuré dans votre objet « TVA 20% » le compte de TVA par défaut vous faites une écriture dans le compte de TVA due, par exemple un compte 4457. C'est-à-dire qu'Odoo fonctionne par défaut en mode TVA sur les débits : la TVA est due tout de suite !

Si vous êtes une société de service, vous voulez avoir plutôt une TVA sur les encaissements : il faut choisir un autre compte, typiquement un compte d'attente correspondant à la TVA encaissée mais pas encore due. Par exemple le compte 4458. Les comptables pourront éventuellement me corriger et choisir un autre compte, mais le principe est le même.
Ensuite quand le client vous paye, c'est là qu'il faut aller voir sur la facture et transférer la TVA en attente vers la TVA due.
Le problème est qu'il n'y a rien dans Odoo pour faire ce transfert de manière automatique. Vous en êtes réduit à calculer votre TVA à la main comme au bon vieux temps.

Le module de TVA sur encaissement (tax_on_payment pour V7/V8)

Ce que fait le module tax_on_payment que nous avons écrit est exactement cette écriture manquante automatique et rien d'autre.  En pratique il fait ça pendant le lettrage : c'est le lettrage qui permet de faire le lien entre un paiement et une facture. Donc sans lettrage vous êtes incapable de savoir combien de TVA vous avez dans un paiement TTC.

La configuration est simplissime. Exemple avec une TVA 20% sur encaissement :

  • Vous créez une taxe TVA 20% sur encaissement par duplication de la taxe TVA 20% d'origine
  • Sur cette taxe, vous configurez le compte de TVA à un compte d'attente (par exemple 445840 au lieu de 445711) :
  • Dans le compte de TVA en attente (445840), vous faites pointer le champ "destination account" vers le compte de TVA réellement due (445711). Le nom du champ peut éventuellement varier selon la traduction chargée :
  • Dans l'article souhaité, vous configurez la TVA 20% sur encaissement. :

C'est tout. Ensuite vous pouvez créer et valider une facture, puis constater que vous ne devez pas encore de TVA (voir le solde du compte 4457) car la TVA est en attente sur 4458 :

Puis vous pouvez enregistrer le paiement et constater que vous devez maintenant la TVA.  Ça fonctionne aussi avec les paiements partiels et avec les factures fournisseurs.

Attention, si vous enregistrez le paiement séparément, il faut effectuer le lettrage car le transfert de TVA a lieu pendant le lettrage et non pendant le paiement : c'est le seul moyen de connaître le vrai montant de TVA à payer. Donc n'oubliez pas de lettrer vos paiements avec vos factures, ou bien déclenchez le paiement depuis la facture pour que le lettrage et le transfert de TVA soient automatiques.

Quel est l'avis des comptables sur ce système ?

Ce fonctionnement est adapté à un système automatisé et intégré comme un ERP mais si vous discutez de ça avec des comptables, leur réaction initiale sera dubitative, car leur méthode de travail est différente. Des comptables sont des êtres humains et ne vont jamais recalculer le détail à chaque émission de facture comme peut le faire une machine. Ils font tout d'un coup à la fin du mois. Il faut expliquer à votre comptable qu'avec un ERP on peut se permettre d'avoir tout le détail car le traitement est automatique. S'il a encore un doute, demandez-lui comment il fait pour connaître le montant de TVA à payer et il sera bien obligé d'admettre que sans lettrage c'est impossible. Donc le bon endroit pour brancher cet automatisme est vraiment le lettrage. Au final nous avons eu la confirmation par notre expert comptable que ce système correspond exactement à la bonne façon de faire.

Il y a un seul bémol : les comptables font parfois des suppositions temporaires.  Par exemple si on reçoit un paiement mais qu'on est incapable de faire le lien avec une facture, il faut considérer qu'il s'agit d'une TVA au taux habituel, par exemple 20%, même si c'est faux, quitte à corriger le mois d'après. Si vous refusez de considérer que c'est 20%, ne vous inquiétez pas le contrôleur fiscal le fera à votre place ;-)

Ceci n'est pas prévu par le module, vous êtes vraiment obligé de faire le lettrage. Ce serait d'ailleurs assez complexe à implémenter.

Et Odoo 9 ? Et Odoo 10 ?

Ce module avait été démarré comme un POC il y a plus de 3 ans, puis un client a accepté de financer la finalisation de ce module, c'est à dire d'abord l'écriture de tests unitaires couvrant les cas de factures client et fournisseur avec paiement complets ou partiels, puis l'écriture d'une implémentation vraiment fonctionnelle.
Entre temps le monde a changé, Odoo 9 et 10 sont sortis, et avec eux une grosse réécriture des modules de comptabilité et notamment du système de lettrage. Ce module ne fonctionne pas encore (octobre 2016) en v9 ni v10, mais nous avons passé quelques heures à inspecter le fonctionnement comptable de la version 10 et le principe est similaire. Il faut donc trouver un financement pour effectuer le portage de ce module en v10, notamment avec la nouvelle API.

Si vous êtes intéressé contactez-moi ! Le portage de ce module devrait prendre quelques jours au plus.