📄 E-reporting

E-reporting

Module en développement / Mise à jour le 09/03/2026


Pour le e-reporting, hors B2B France, Odoo dispose du module l10n_fr_pdp_reports .


🔍 À quoi ça sert ?

Ce module implémente le Flux 10 (e-reporting) PDP pour la France, conformément à la réforme de la facturation électronique obligatoire (PPF/PDP). Il gère l'envoi automatique des données de transaction et de paiement vers le portail public de facturation via un PDP (Plateforme de Dématérialisation Partenaire).


1. 🔧 Prérequis & Installation

Modules requis (dépendances)

odoo-dev / odoo / addons / l10n_fr_pdp_reports / __manifest__.py

'depends': [
'account_edi_proxy_client', # Connexion proxy EDI Odoo
'account_edi_ubl_cii_tax_extension', # Extension UBL/CII pour les taxes
'l10n_fr_account', # Localisation comptable France
]

Le module est installable uniquement pour les bases françaises (country_code = 'FR').


2. ⚙️ Configuration (obligatoire)

Tout se passe dans Paramètres → Sociétés → [votre société] → onglet "PDP e-Reporting" (visible uniquement si le pays = France).

odoo-dev / odoo / addons / l10n_fr_pdp_reports / views / res_company_views.xml

<page string="PDP e-Reporting" name="pdp_page" invisible="country_code != 'FR'">

Champs à configurer

ChampDescriptionObligatoire
Activer le PDP e-Reporting (l10n_fr_pdp_enabled)Active le module pour cette société✅ Oui
Mode d'envoi (l10n_fr_pdp_send_mode)Automatic cron (auto) ou Manual only✅ Oui
PDP Sender Matricule (l10n_fr_pdp_sender_id)Matricule expéditeur TT-8, 4 caractères — défaut : 0129✅ Oui
Déclarant SIREN Override (l10n_fr_pdp_declarant_siren)SIREN optionnel pour les jeux de test⚠️ Test
TVA du représentant fiscal (l10n_fr_pdp_fiscal_representative_vat)TT-122, utilisé sur les factures exonérées (catégorie E) sans TVA vendeur⚠️ Si exonération
Périodicité des transactions (l10n_fr_pdp_periodicity)Décade / Mensuelle / Bimestrielle / Trimestrielle — défaut : Décade✅ Oui
Périodicité des paiements (l10n_fr_pdp_payment_periodicity)Mensuelle / Bimestrielle — défaut : Mensuelle✅ Oui
Type de date d'exigibilité TVA (l10n_fr_pdp_tax_due_code)1=Débits / 2=Livraisons / 3=Encaissements — défaut : 3✅ Oui

⚡ Dès que vous activez le PDP (l10n_fr_pdp_enabled = True), Odoo crée automatiquement un journal comptable EREP (E-Reporting) pour la société.


3. 🔗 Configuration du proxy EDI (compte PDP)

Un proxy EDI Odoo de type pdp doit être enregistré sur la société (via account_edi_proxy_client). Sans cela, l'envoi lèvera l'erreur :

"No active PDP proxy user is configured for company X."


4. 🚀 Fonctionnement automatique — Ce qui se passe sur une facture/avoir

Déclenchement automatique

Le module fonctionne principalement en mode automatique via des crons quotidiens. Vous n'avez pas besoin d'agir sur chaque facture individuellement.

Périmètre des documents inclus

Type de pièceInclus ?Condition
Facture de vente / avoir (B2C domestic)Facture validée (posted)
Facture de vente / avoir (B2B international)Facture validée
Facture d'achat fournisseur internationalFournisseur hors France
Facture d'achat B2B domestic (entre entités FR)Hors périmètre Flux 10
Facture B2B domestic France (e-invoicing)Géré par le flux e-invoicing

Cycle de vie d'une facture (champ l10n_fr_pdp_status)

Code

[Brouillon]
↓ Validation (post)
[pending] ← facture dans le périmètre, pas encore agrégée
↓ Cron quotidien (génération des flows)
[pending/ready] ← incluse dans un Flow PDP
↓ Fin de période de grâce
[ready] ← payload XML prêt à envoyer
↓ Envoi (auto ou manuel)
[sent/completed] ← transmis au PDP

[error] ← erreur de validation (TVA manquante, non envoyé au client…)
[out_of_scope] ← hors périmètre (B2B France, brouillon…)
[cancelled] ← facture annulée après envoi → flow rectificatif créé

⚠️ Règle importante : une facture doit avoir le flag "Envoyée au client" (is_move_sent) pour être valide dans le flow. Sans cela, elle apparaît en error avec le message "Invoice/credit note has not been sent to the customer."


5. ⏱️ Les 3 crons automatiques

odoo-dev / odoo / addons / l10n_fr_pdp_reports / data / pdp_cron.xml

<!-- Cron 1 : Génération des flows (1x/jour) -->
<field name="name">PDP Generate Flux 10 Flows</field>
<field name="code">model._cron_generate_daily_flows()</field>

<!-- Cron 2 : Envoi des flows prêts (1x/jour) -->
<field name="name">PDP Send Ready Flux 10 Flows</field>

CronFréquenceRôle
Generate Flows1×/jourAgrège les factures du jour en Flows PDP
Send Ready Flows1×/jourEnvoie les flows en état ready si mode auto
Sync Transport Statuses1×/heureRécupère les accusés de réception du PDP

Le cron d'envoi ne fonctionne que si l10n_fr_pdp_send_mode = 'auto'. En mode manual, vous devez envoyer manuellement.


6. 🖥️ Interface utilisateur — Où trouver les flows

Menu d'accès

Comptabilité → Reporting → France → E-reporting

Vous y trouverez la liste de tous les flows PDP avec :

  • Référence, période, date d'échéance
  • Statut (Pending / Ready / Sent / Error / Completed / Cancelled)
  • Type (Transaction / Paiement)
  • Type de transmission (IN = Initial / RE = Rectificatif)

Actions disponibles sur un flow

BoutonDisponible quandAction
Build Payloadpending ou errorGénère le fichier XML Flux 10
Sendready, pending, errorEnvoie manuellement au PDP
Create Rectificativesent ou completedCrée un flow rectificatif (RE)


7. ⚠️ Cas particuliers à connaître

Annulation d'une facture déjà envoyée

  • Impossible de remettre en brouillon une facture en statut sent → erreur bloquante
  • Il faut créer un avoir (credit note) + nouvelle facture
  • L'annulation d'une facture sent crée automatiquement un flow rectificatif (RE)

Erreurs de validation fréquentes

ErreurCauseSolution
Invoice not sent to customeris_move_sent = FalseEnvoyer la facture par email/portail avant la clôture de période
Missing buyer VATTVA client absente (B2B international)Renseigner le numéro de TVA intracommunautaire du client
Missing seller VATTVA société absenteConfigurer la TVA de la société
Missing seller fiscal representative VATFacture exonérée sans TVA vendeurRenseigner l10n_fr_pdp_fiscal_representative_vat dans la société

Champs optionnels sur les factures (account_move)

Des champs spécifiques PDP sont disponibles sur la facture pour des cas avancés :

ChampUtilité
l10n_fr_pdp_invoice_referenceForcer l'identifiant facture dans le payload
l10n_fr_pdp_bt3_codeCode type facture BT-3 (TT-21)
l10n_fr_pdp_bt8_codeCode exigibilité TVA BT-8 (TT-24)
l10n_fr_pdp_contract_referenceRéférence contrat BT-12 (pour BT-3=262)
l10n_fr_pdp_billing_period_startDate début période de facturation BT-73
l10n_fr_pdp_note_blu/txd/paiNotes Flux 10.1 (TT-26/TT-27)


8. 📊 Résumé du flux complet

Code

Facture validée (posted)

[CRON quotidien] _cron_generate_daily_flows()
↓ agrège les factures du jour par période/devise/type
Flow PDP créé → état "pending"
↓ [fin de période de grâce]
_build_payload() → génère le XML Flux 10

état "ready" (si valide) ou "error" (si TVA manquante, etc.)

[CRON quotidien] _cron_send_ready_flows() ← si mode AUTO
OU bouton "Send" manuel

Envoi via proxy EDI → état "sent" / "completed"

[CRON horaire] _cron_sync_transport_statuses()
↓ accusé de réception PDP
état final : "completed" ✅ ou "error" ❌

En résumé : c'est quasi-automatique dès activation. La seule action manuelle critique est de s'assurer que les factures ont bien été envoyées au client avant la clôture de la fenêtre de reporting.