Guide13 mars 2026

Déclaration TVA dans Odoo :
Guide complet de configuration

INTRODUCTION

Votre déclaration TVA ne devrait pas prendre une journée entière

Chaque trimestre (ou chaque mois, selon votre régime), c'est le même scénario : votre comptable exporte des données d'Odoo vers Excel, recalcule manuellement la TVA collectée et déductible, vérifie les écarts avec les factures fournisseurs, et saisit le tout sur le portail des impôts. Ce processus prend 4 à 8 heures à chaque échéance. Et à chaque étape manuelle, le risque d'erreur augmente.

Odoo possède un module de déclaration TVA intégré qui peut réduire ce processus à moins de 30 minutes — avec une traçabilité complète de chaque ligne de la déclaration jusqu'à la pièce comptable d'origine. Le problème : la plupart des implémentations ne configurent pas correctement les taxes, les positions fiscales et les groupes de taxes, ce qui rend le rapport TVA inutilisable.

Ce guide couvre la configuration complète de la TVA dans Odoo — des taxes de base aux positions fiscales, en passant par le rapport de déclaration TVA, l'autoliquidation intracommunautaire et les pièges qui coûtent cher en contrôle fiscal.

01

Configuration complète des taxes TVA dans Odoo : taux, groupes et grilles

La fondation d'une déclaration TVA fiable, c'est une configuration des taxes irréprochable. Odoo préconfigure les taxes pour chaque localisation (France, Belgique, Canada, Suisse, etc.), mais ces défaults ne couvrent pas tous les cas métier.

Comprendre la structure des taxes Odoo

ConceptModèle OdooRôleExemple
Taxeaccount.taxTaux de TVA appliqué sur une ligne de factureTVA 20 %, TVA 5.5 %, TVA 0 % (exonéré)
Groupe de taxesaccount.tax.groupRegroupe les taxes pour le rapport TVA« TVA collectée », « TVA déductible »
Grille de taxesaccount.tax.report.lineLigne de la déclaration TVA officielleLigne 08 (CA3), Ligne 20 (CA3)
Position fiscaleaccount.fiscal.positionSubstitue automatiquement les taxes selon le contexteIntracommunautaire, Export hors UE

Vérifier les grilles de taxes (Tax Grids)

C'est l'étape la plus souvent négligée. Chaque taxe Odoo est rattachée à des grilles de taxes (tax grids) qui déterminent dans quelle ligne de la déclaration CA3 le montant apparaît. Si les grilles sont mal assignées, le rapport TVA affiche des montants incorrects — et votre déclaration est fausse.

Odoo — Vérification des grilles via le shell
# Vérifier les grilles assignées à une taxe
env['account.tax'].search([
    ('name', 'like', '20%'),
    ('type_tax_use', '=', 'sale'),
]).invoice_repartition_line_ids.mapped(
    lambda l: (l.repartition_type, l.tag_ids.mapped('name'))
)

# Résultat attendu pour TVA 20% vente :
# [('base', ['+08']),     # Ligne 08 : base HT
#  ('tax',  ['+20'])]     # Ligne 20 : TVA collectée
Règle d'or

Avant chaque première déclaration TVA avec Odoo, vérifiez les grilles de chaque taxe utilisée dans vos écritures. Allez dans Comptabilité → Configuration → Taxes, ouvrez chaque taxe, et contrôlez l'onglet « Répartition ». Les tags (grilles) doivent correspondre aux lignes de votre formulaire CA3 ou de votre déclaration nationale.

Créer une taxe avec les bonnes grilles

XML — Taxe TVA intracommunautaire avec autoliquidation
<odoo>
  <!-- Taxe d'achat intracommunautaire 20% -->
  <record id="tax_purchase_intracom_20"
          model="account.tax">
    <field name="name">TVA 20% Achat Intracom.</field>
    <field name="type_tax_use">purchase</field>
    <field name="amount_type">percent</field>
    <field name="amount">20.0</field>
    <field name="tax_group_id"
           ref="l10n_fr.tax_group_tva_20"/>
    <field name="description">TVA IC 20%</field>
  </record>

  <!-- Lignes de répartition (grilles CA3) -->
  <record id="tax_purchase_intracom_20_base_line"
          model="account.tax.repartition.line">
    <field name="tax_id"
           ref="tax_purchase_intracom_20"/>
    <field name="repartition_type">base</field>
    <field name="document_type">invoice</field>
    <field name="tag_ids"
           eval="[(6, 0, [ref('l10n_fr.tax_tag_08'),
                          ref('l10n_fr.tax_tag_0B')])]"/>
  </record>

  <!-- TVA déductible (autoliquidation) -->
  <record id="tax_purchase_intracom_20_tax_line"
          model="account.tax.repartition.line">
    <field name="tax_id"
           ref="tax_purchase_intracom_20"/>
    <field name="repartition_type">tax</field>
    <field name="document_type">invoice</field>
    <field name="account_id"
           ref="l10n_fr.1_tax_paid_account"/>
    <field name="tag_ids"
           eval="[(6, 0, [ref('l10n_fr.tax_tag_20'),
                          ref('l10n_fr.tax_tag_20_ded')])]"/>
  </record>
</odoo>

L'autoliquidation intracommunautaire est le cas le plus complexe : la même opération génère à la fois de la TVA collectée (ligne 20 du CA3) et de la TVA déductible (ligne 20 déductible). Les deux montants s'annulent, mais les deux doivent apparaître sur la déclaration. Si les grilles sont mal configurées, l'un des deux montants manque et l'administration fiscale détecte l'écart.

02

Positions fiscales Odoo : automatiser la TVA intracommunautaire et l'export hors UE

Les positions fiscales sont le mécanisme d'Odoo pour appliquer automatiquement les bonnes taxes selon le contexte de la transaction. Au lieu de demander aux commerciaux de choisir manuellement entre « TVA 20 % » et « TVA 0 % export », la position fiscale le fait automatiquement en fonction du pays du client.

ScénarioPosition fiscaleSubstitutionLigne CA3
Vente FranceAucune (défaut)TVA 20 % → TVA 20 %Ligne 08 (base), Ligne 16 (TVA)
Vente intracommunautaire (B2B)Intra-UETVA 20 % → TVA 0 % ICLigne 06 (livraisons IC)
Achat intracommunautaireIntra-UE AchatsTVA 20 % → TVA 20 % autoliq.Ligne 0B + Ligne 20 (déductible)
Export hors UEExportTVA 20 % → TVA 0 % exportLigne 04 (exports)
Autoliquidation (sous-traitance BTP)Autoliquidation BTPTVA 20 % → TVA 0 % autoliq. BTPLigne 02 (autres opérations)

Détection automatique par numéro de TVA intracommunautaire

Odoo peut assigner automatiquement la position fiscale en fonction du pays du partenaire et de la présence d'un numéro de TVA intracommunautaire. Activez cette fonctionnalité dans Comptabilité → Configuration → Paramètres → Taxes → Détection automatique des positions fiscales.

XML — Position fiscale avec détection automatique
<odoo>
  <record id="fp_intracom_eu"
          model="account.fiscal.position">
    <field name="name">Intracommunautaire UE</field>
    <field name="auto_apply">True</field>
    <field name="vat_required">True</field>
    <field name="country_group_id"
           ref="base.europe"/>
    <field name="note">
      Exon&eacute;ration TVA art. 262 ter I du CGI.
      Livraison intracommunautaire.
    </field>
  </record>

  <!-- Substitution : TVA 20% → TVA 0% IC -->
  <record id="fp_intracom_eu_tax_map"
          model="account.fiscal.position.tax">
    <field name="position_id"
           ref="fp_intracom_eu"/>
    <field name="tax_src_id"
           ref="l10n_fr.1_tva_normale"/>
    <field name="tax_dest_id"
           ref="l10n_fr.1_tva_intracom_0"/>
  </record>
</odoo>
Validation VIES

L'exonération TVA intracommunautaire n'est valide que si le numéro de TVA du client est actif dans le système VIES. Odoo peut vérifier automatiquement les numéros de TVA via l'API VIES. Activez-le dans Paramètres → Comptabilité → Vérification du numéro TVA. Si la vérification échoue, Odoo bloque l'application de la position fiscale intracommunautaire — exactement ce que vous voulez pour éviter un redressement fiscal.

03

Le rapport de déclaration TVA Odoo : de la génération au dépôt

Si vos taxes et positions fiscales sont correctement configurées, le rapport TVA d'Odoo génère automatiquement les montants pour chaque ligne de votre déclaration. Voici le workflow complet :

Étape 1 : Générer le rapport

Accédez à Comptabilité → Rapports → Déclaration de taxe. Sélectionnez la période (mois ou trimestre) et cliquez sur « Rapport de taxe ». Odoo agrège toutes les écritures comptables contenant des lignes de taxes et les répartit dans les grilles configurées.

Étape 2 : Vérifier la traçabilité

Chaque montant du rapport est cliquable. Un clic ouvre la liste des écritures comptables qui composent ce montant. C'est cette traçabilité qui différencie Odoo d'un export Excel : chaque euro de votre déclaration est relié à une pièce justificative. En cas de contrôle fiscal, vous pouvez démontrer l'origine de chaque ligne en quelques clics.

Étape 3 : Clôturer et exporter

Une fois le rapport validé, cliquez sur « Clôturer ». Odoo :

  • Verrouille la période — plus aucune écriture ne peut être modifiée sur la période clôturée sans déverrouillage explicite.
  • Génère le fichier EDI — pour les localisations qui le supportent (France : fichier CA3 au format EDI-TVA, Belgique : intervat XML).
  • Crée l'écriture de TVA à payer — la différence entre TVA collectée et TVA déductible est comptabilisée comme dette fiscale (ou crédit de TVA).
Odoo Shell — Vérification programmatique du rapport TVA
# Vérifier le solde TVA d'une période
from datetime import date

report = env['account.generic.tax.report'].with_context(
    date_from=date(2026, 1, 1),
    date_to=date(2026, 3, 31),
).get_report_values()

for line in report['lines']:
    if line.get('level') == 0:
        print(f"{line['name']}: {line['columns'][0]['no_format']:.2f} EUR")
Conseil critique

Clôturez toujours la période avant de déposer la déclaration. Sans clôture, un utilisateur peut modifier ou supprimer une facture de la période après le dépôt. Votre déclaration déposée ne correspondrait plus aux données Odoo — c'est la définition même d'un risque de contrôle fiscal.

04

3 erreurs de configuration TVA Odoo qui coûtent cher en contrôle fiscal

1

Grilles de taxes manquantes sur les taxes personnalisées

Vous créez une taxe « TVA 10 % restauration » en dupliquant une taxe existante. Le taux est correct, le compte comptable aussi. Mais vous oubliez de vérifier les grilles de taxes sur les lignes de répartition. Résultat : cette taxe ne remonte pas dans le rapport TVA. Vos factures de restauration sont comptabilisées, la TVA est correctement calculée sur les factures, mais elle n'apparaît pas dans la déclaration. Vous sous-déclarez votre TVA collectée sans le savoir.

Notre solution

Après chaque création ou modification de taxe, nous effectuons un test de bout en bout : créer une facture de test avec cette taxe, la valider, puis vérifier que le montant apparaît dans le rapport TVA sur la bonne ligne. Ce test prend 2 minutes et évite des heures de débogage à la clôture.

2

Positions fiscales non appliquées sur les factures fournisseurs

Les positions fiscales fonctionnent automatiquement sur les factures de vente (via le partenaire client). Mais sur les factures fournisseurs, beaucoup d'équipes saisissent manuellement la taxe au lieu de laisser la position fiscale faire la substitution. Résultat : un achat intracommunautaire est enregistré avec « TVA 20 % standard » au lieu de « TVA 20 % autoliquidation ». La TVA déductible est comptabilisée mais l'autoliquidation ne remonte pas sur la déclaration.

Notre solution

Vérifiez que chaque fournisseur étranger a une position fiscale correctement assignée sur sa fiche partenaire. Activez la détection automatique par pays et numéro TVA. Formez l'équipe comptable à ne jamais écraser manuellement la taxe suggérée par la position fiscale sans raison documentée.

3

Ne pas clôturer les périodes fiscales dans Odoo

Vous déposez votre déclaration TVA du T1 en avril. En mai, un utilisateur modifie une facture de février (« le client a demandé un changement »). Le rapport TVA du T1 change rétroactivement. Votre déclaration déposée ne correspond plus aux données du système. Si l'administration fiscale demande un FEC (Fichier des Écritures Comptables), les montants ne correspondent pas à la déclaration. C'est une irrégularité formelle qui peut déclencher un contrôle approfondi.

Notre solution

Clôturez systématiquement chaque période dans Odoo immédiatement après le dépôt de la déclaration. Utilisez Comptabilité → Comptabilité → Verrouillage des dates pour empêcher toute modification. Si une correction est nécessaire, elle doit passer par une écriture d'OD (opération diverse) sur la période suivante, jamais par modification de la période clôturée.

ROI BUSINESS

Ce qu'une déclaration TVA automatisée fait gagner à votre entreprise

La TVA n'est pas un sujet glamour. Mais c'est un sujet qui coûte cher quand il est mal géré :

80 %Moins de temps sur la déclaration

De 4–8 heures à 30 minutes par période. Pour une déclaration mensuelle, c'est 40+ heures économisées par an.

0 €Pénalités fiscales

Grilles correctes + clôture de périodes = déclarations fiables. Les pénalités pour déclaration erronée démarrent à 10 % du montant omis.

TraçabilitéPrêt pour le contrôle fiscal

Chaque ligne de déclaration est drill-downable jusqu'à la pièce comptable. Le FEC est générable en un clic.

Au-delà des chiffres : une configuration TVA propre est un prérequis pour le FEC (Fichier des Écritures Comptables). Depuis 2014, toute entreprise française soumise à un contrôle fiscal doit produire un FEC conforme. Odoo génère ce fichier nativement — mais seulement si les comptes, taxes et grilles sont correctement paramétrés.

NOTES SEO

Métadonnées d'optimisation

Meta Desc

Guide complet pour configurer la déclaration TVA dans Odoo. Taxes, grilles CA3, positions fiscales, autoliquidation intracommunautaire et pièges à éviter.

Mots-clés H2

1. « Configuration complète des taxes TVA dans Odoo »
2. « Positions fiscales Odoo : automatiser la TVA intracommunautaire »
3. « 3 erreurs de configuration TVA Odoo qui coûtent cher en contrôle fiscal »

Votre TVA mérite mieux qu'un copier-coller depuis Excel

Chaque déclaration TVA construite manuellement à partir d'exports Excel est un risque : risque d'erreur de calcul, risque d'omission, risque de non-conformité. Odoo dispose de tous les outils pour automatiser ce processus de bout en bout — mais seulement si la configuration est faite correctement dès le départ.

Si votre déclaration TVA Odoo ne correspond pas à vos attentes — ou si vous n'utilisez pas encore le rapport TVA intégré — nous pouvons vous aider. Nous auditons votre configuration fiscale, corrigeons les grilles de taxes, paramétrons les positions fiscales et formons votre équipe comptable. Le résultat : une déclaration TVA en 30 minutes au lieu d'une journée, avec une traçabilité complète.

Réserver un audit fiscal gratuit