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
| Champ | Description | Obligatoire |
|---|---|---|
| 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èce | Inclus ? | Condition |
|---|---|---|
| Facture de vente / avoir (B2C domestic) | ✅ | Facture validée (posted) |
| Facture de vente / avoir (B2B international) | ✅ | Facture validée |
| Facture d'achat fournisseur international | ✅ | Fournisseur 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>
| Cron | Fréquence | Rôle |
|---|---|---|
| Generate Flows | 1×/jour | Agrège les factures du jour en Flows PDP |
| Send Ready Flows | 1×/jour | Envoie les flows en état ready si mode auto |
| Sync Transport Statuses | 1×/heure | Ré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
| Bouton | Disponible quand | Action |
|---|---|---|
| Build Payload | pending ou error | Génère le fichier XML Flux 10 |
| Send | ready, pending, error | Envoie manuellement au PDP |
| Create Rectificative | sent ou completed | Cré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
| Erreur | Cause | Solution |
|---|---|---|
| Invoice not sent to customer | is_move_sent = False | Envoyer la facture par email/portail avant la clôture de période |
| Missing buyer VAT | TVA client absente (B2B international) | Renseigner le numéro de TVA intracommunautaire du client |
| Missing seller VAT | TVA société absente | Configurer la TVA de la société |
| Missing seller fiscal representative VAT | Facture exonérée sans TVA vendeur | Renseigner 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 :
| Champ | Utilité |
|---|---|
| l10n_fr_pdp_invoice_reference | Forcer l'identifiant facture dans le payload |
| l10n_fr_pdp_bt3_code | Code type facture BT-3 (TT-21) |
| l10n_fr_pdp_bt8_code | Code exigibilité TVA BT-8 (TT-24) |
| l10n_fr_pdp_contract_reference | Référence contrat BT-12 (pour BT-3=262) |
| l10n_fr_pdp_billing_period_start | Date début période de facturation BT-73 |
| l10n_fr_pdp_note_blu/txd/pai | Notes 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.