| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 5969 |
| Technical Name |
flexigo_france_pdp |
| License | OPL-1 |
| Website | https://flexigotech.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 5969 |
| Technical Name |
flexigo_france_pdp |
| License | OPL-1 |
| Website | https://flexigotech.com |
France E-Invoicing Connector for Odoo 19
Connect Odoo to a certified Plateforme Agrée, route B2B structured invoices, track the full DGFiP lifecycle, and file CGI Art. 290 e-reporting — all from inside Odoo.
Is your Odoo ready for France mandatory B2B e-invoicing?
- 1 September 2026 — Large companies and ETI must issue and receive structured e-invoices via a certified Plateforme Agrée.
- 1 September 2027 — SMEs and micro-enterprises follow. Every French B2B business must comply.
Standard Odoo 19 gives you the accounting backbone — but it does not include a connector to the DGFiP-mandated Plateforme Agrée infrastructure. Without one, your customers cannot legally issue or receive B2B invoices in France after the mandate kicks in.
- Manual invoice submission to PA portals: lost time, missed deadlines, reconciliation nightmares.
- No lifecycle visibility in Odoo: accountants must log into each PA portal separately to check acceptance status.
- E-reporting obligations (B2C, cross-border, reverse-charge) managed in spreadsheets outside Odoo.
- Credentials for PA APIs stored in plain text, creating security and GDPR exposure.
- No evidence archive ready for DGFiP inspection: assembling audit packs takes days.
How France E-Invoicing Connector solves it
This module embeds a complete PA connectivity layer directly into Odoo 19. From invoice confirmation to DGFiP acceptance, every step happens inside Odoo — no external dashboards, no manual re-entry.
- One-click PA routing: configure your Plateforme Agrée once per company; invoices route automatically on confirmation in UBL 2.1, UN/CEFACT CII, or Factur-X.
- Full lifecycle in Odoo: the Invoice Status Board shows all six DGFiP states (Submitted, Sent, Received, Rejected, Accepted, Cancelled) with colour coding and stall alerts.
- Three e-reporting types covered: B2C 10-day periods, cross-border monthly, and domestic reverse-charge monthly — all per CGI Art. 290, with 48-hour deadline reminders.
- Evidence archive on demand: one wizard packages all submission logs and e-reporting XML into a ZIP for DGFiP inspection, with 10-year retention enforced by the module itself.
What you get
Multi-PA Connectivity
- Built-in adapters: Basware, Sovos, Tradeshift, EDICOM, Docaposte
- Generic REST adapter for any DGFiP-certified PA
- Extensible adapter interface (FR-058) — add new PAs without modifying core files
- Per-company and per-partner PA routing
- mTLS certificate lifecycle management
- Webhook + polling reception, HMAC-SHA256 signature verification
Invoice Issuance & Reception
- Auto-submission on invoice confirmation
- Factur-X (all profiles: Minimum to Extended), UBL 2.1, UN/CEFACT CII
- EN 16931 pre-flight validation with BR-error codes before submission
- Credit note routing with correct document type code
- Inbound invoice parsing to draft vendor bills
- PO matching with confidence score and duplicate deduplication
Lifecycle & Status Board
- All 6 DGFiP lifecycle states with colour badges
- Invoice Status Board: list, pivot, and graph views
- Immutable status history log per submission
- Stall alerts for long-pending submissions
- Live counter refresh every 60 seconds on the compliance dashboard
E-Reporting (CGI Art. 290)
- B2C: 10-day calendar periods per DGFiP schedule
- Cross-border: monthly periods with ECB rate integration for non-EUR
- Reverse-charge: domestic monthly periods
- 48-hour deadline reminders via Odoo mail
- XML generation and PA submission in one action
Security & Encryption
- Fernet-encrypted PA credentials (AES-128-CBC) — never stored in plain text
- Credentials key in environment variable, not in Odoo DB
- 10-year retention enforcement (Code de Commerce)
- GDPR Art. 6(1)(c) legal basis documented
- Multi-company record isolation via Odoo record rules
- Immutable API call log, restricted to compliance admins
SIRENE & Partner Data
- INSEE SIRENE API for SIRET validation and lookup
- 24-hour cache to respect INSEE rate limits
- Bulk SIRET completion wizard for 500+ existing contacts
- EU VAT format validation per country (Luhn-style check digit for SIRET)
- Automatic SIRET propagation from SIRENE to partner record
Video walkthrough
A seven-minute narrated tour of every feature, captured from a live Odoo 19 environment with real invoice data. Expand the language you prefer.
English — 7-minute walkthrough
Español — recorrido de 7 minutos
Deutsch — 7-Minuten-Rundgang
See it in action
All screenshots captured from a live Odoo 19 instance with the module installed and realistic seed data (Acme Industries S.L., professional invoice data). No mockups, no AI-generated screens.
PA Setup & Configuration
registry_import action — no code change required when the DGFiP updates its accredited PA list.
Invoice Management & Lifecycle
Compliance Dashboard
E-Reporting (CGI Art. 290)
Audit & Evidence
Built for
- French companies (>50 employees) that must comply with the September 2026 large-company mandate and need a PA connector for their Odoo installation.
- SMEs and micro-enterprises preparing ahead of the September 2027 deadline to avoid last-minute scramble and PA integration risk.
- Odoo partners and integrators who manage Odoo deployments for French clients and need a production-ready compliance layer they can install and configure in a day.
- Accountants and compliance officers in French companies who want full invoice lifecycle visibility inside Odoo without switching to external PA portals.
- CFOs and finance directors who need a single source of truth for B2B invoice acceptance rates, e-reporting compliance, and audit evidence export.
l10n_fr_chorus_pro module is installed. The connector gracefully degrades if Chorus Pro is not present.
Compatibility
| Item | Value |
|---|---|
| Odoo version | 19.0 (Community and Enterprise) |
| License | LGPL-3 (free and open source) |
| Required Odoo modules | account, account_edi_ubl_cii, l10n_fr, base_setup, mail, base |
| Required Python packages | cryptography, requests, lxml |
| Required environment variable | FLEXIGO_FERNET_KEY — base64 Fernet key for PA credential encryption |
| Optional modules | l10n_fr_chorus_pro (B2G routing), l10n_fr_pa (co-existence), purchase (PO matching) |
| Multi-company | Yes — per-company PA configuration with full data isolation |
| Multi-currency | Yes — ECB rate integration for non-EUR e-reporting periods |
| Community edition | Yes — no Enterprise dependency; PA holds DGFiP accreditation, not the ERP |
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
— then set FLEXIGO_FERNET_KEY=<value> in your server environment. Without it, PA credential saving is blocked (credentials are never stored in plain text).
Optional module integrations
l10n_fr_chorus_pro— enables B2G invoice routing to Chorus Pro for public-sector buyersl10n_fr_pa— coexists with Odoo's native PA module, no view conflictspurchase— enables automatic PO matching for received inbound invoices with confidence score
Known limitations
- AFNOR XP Z12-013 e-reporting schema: the full standard is behind the AFNOR paywall. The
submit_ereport()method uses best-effort field mapping. Contact FlexigoTech if your deployment requires the certified AFNOR schema validator. - PA adapter coverage: built-in adapters for Basware, Sovos, Tradeshift, EDICOM, and Docaposte. For other certified PAs, use the Generic REST adapter with custom endpoint configuration.
- Webhook signature verification (FR-054): requires your PA to send an HMAC-SHA256 signature header. Verify your PA's webhook contract before enabling signature verification in production.
Pricing
- No per-database fee
- No annual subscription
- Full source code on GitHub
- Community support via GitHub Issues
- Professional support and integration services: flexigotech.com
Need a managed deployment, custom PA adapter, or SLA support? Contact us at comercial@flexigotech.com.
Frequently asked questions
Does FlexigoTech act as a Plateforme Agrée itself?
No. This module is a connector: it routes invoices from Odoo to an external DGFiP-certified Plateforme Agrée that your company has contracted with (Basware, Sovos, Tradeshift, EDICOM, Docaposte, or another via the Generic REST adapter). FlexigoTech does not hold DGFiP accreditation and does not process invoice data on its infrastructure. Your data flows directly from Odoo to your chosen PA via their published API.
Is this module compatible with Odoo Community edition?
Yes. The module is designed for Odoo 19 Community and Enterprise. It has no hard dependency on Enterprise-only modules. The PA holds DGFiP accreditation — the ERP connector does not require Enterprise. We recommend verifying compatibility requirements with your chosen PA provider and a French tax specialist before production deployment.
What is the FLEXIGO_FERNET_KEY environment variable and why is it required?
PA API credentials (API keys, OAuth2 tokens, mTLS private keys) are stored Fernet-encrypted in the Odoo database. The Fernet key is stored outside the database in a server environment variable — so even if the DB is leaked, credentials cannot be decrypted without the key. Generate a key with: python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())". Store it in your server's environment manager (Vault, Doppler, AWS Secrets Manager) and set FLEXIGO_FERNET_KEY=<value> before starting Odoo. If the variable is absent, credential saving is blocked — the module will never silently store credentials in plain text.
Which Plateformes Agrées are supported out of the box?
Built-in adapters ship for: Basware, Sovos, Tradeshift, EDICOM, and Docaposte. A Generic REST adapter covers any other DGFiP-certified PA that exposes a standard REST API. The adapter interface (FR-058) is published so Odoo partners can add new PA adapters as companion modules without modifying this module's core files. The PA catalog is refreshable from a DGFiP export JSON/CSV without a module upgrade (FR-056).
Does this module handle both B2B invoice issuance and B2C e-reporting?
Yes. The module covers the full compliance scope: B2B invoice issuance and reception (both structured formats and lifecycle tracking), and all three CGI Art. 290 e-reporting obligation types: B2C (10-day periods), cross-border (monthly), and domestic reverse-charge (monthly). Each e-reporting type can be enabled independently per company. E-reporting periods auto-populate from posted invoices; the accountant reviews, then submits to the PA in one click.
What happens if the Plateforme Agrée API is unavailable?
Invoice submissions are queued in Odoo and retried by a background cron job. The PA health status dashboard shows which PAs are unreachable so compliance officers can act before invoices go stale. Stall alerts fire on submissions pending beyond a configurable threshold. The API call log records every attempt with HTTP status code and response, giving a full history for debugging and DGFiP audit purposes.
Is the module ready for multi-company Odoo deployments?
Yes. Each Odoo company has its own independent PA configuration (including separate encrypted credentials, invoice format preferences, and primary issuance/reception flags). Odoo record rules enforce strict data isolation — users from Company A cannot see PA configurations, submission records, or e-reporting periods belonging to Company B. The compliance dashboard aggregates data per company, making multi-entity compliance management straightforward.
Ready to get compliant before September 2026?
Install France E-Invoicing Connector from the Odoo Apps Store. Configure your Plateforme Agrée in minutes with the guided setup wizard.
Support and integration services: comercial@flexigotech.com
flexigotech.com — FlexigoTech Odoo modules
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module