Back to Blog

May 5, 2026

Odoo Now Lets French Businesses File VAT Returns Directly to DGFIP Without Leaving the ERP

Odoo adds an EDI VAT return feature to its French fiscal localization that submits tax declarations directly to DGFIP, with ROF validation, IBAN-based payment handling, and reimbursement request workflows built into the tax reporting interface.

Filing VAT returns in France has traditionally meant one of two things: logging into the DGFIP portal and entering numbers manually, or paying an accountant to do it for you. Either way, the data starts in your ERP and then gets re-entered somewhere else. The numbers are the same. The work is doubled. And every manual transcription is an opportunity for the kind of error that triggers a follow-up letter from the Direction Générale des Finances Publiques.

Odoo’s French fiscal localization now includes an EDI tax return feature that eliminates that middle step entirely. From inside the Accounting module, you can validate your VAT report and submit it directly to DGFIP. The declaration goes out as an XML file, DGFIP confirms receipt, and the submission status updates in real time. No portal login. No copy-pasting. No CSV exports that someone has to upload somewhere else.

How the Submission Actually Works

The workflow starts where VAT reporting always starts: in the tax report. After reviewing and validating the figures, you have two paths to the submission screen. You can click the Submit button directly, or navigate through the Tax Report (FR) button, open the gear menu, and select EDI VAT. Both routes land on the same submission form.

Before anything can be sent, the system checks for a valid Référence d’Obligation Fiscale — the ROF number that ties the declaration to the company’s fiscal identity. This is the identifier that DGFIP uses to match incoming declarations to registered businesses. If the ROF is missing or invalid, the submission won’t proceed. It’s a guardrail, not a nuisance — sending a declaration with an incorrect ROF is worse than not sending one at all, because it creates a mismatch in DGFIP’s records that takes time and paperwork to untangle.

Handling Payments and Reimbursements

French VAT returns don’t just report numbers — they also handle money. If the declaration shows VAT owed, the submission form includes fields for the company’s IBAN and BIC. The amount entered must match the “VAT to pay” figure from the tax report. If the numbers don’t align, the system raises an alert before submission. This is another guardrail: a mismatch between the declared amount and the payment amount would trigger a correction request from DGFIP, which means more paperwork and more delay.

Reimbursements work differently. When the declaration shows a VAT credit — meaning the business paid more VAT on purchases than it collected on sales — the submission form exposes a reimbursement request workflow. You enable the reimbursement comment option, select the type of request (first-time request or a request tied to assignment, cessation, death, or VAT group entry), provide the relevant dates, and enter the amount to receive. The reimbursement request is bundled with the declaration and sent to DGFIP in the same submission.

Real-Time Confirmation

After clicking “Send VAT Report,” the submission status changes from orange to green once DGFIP confirms receipt. This confirmation isn’t instantaneous — it depends on DGFIP’s processing queue — but it does arrive within the same session in most cases. The visual feedback matters because it replaces the ambiguity of the old workflow, where you uploaded a file to a portal and then hoped it went through, checking back hours or days later to see if anything bounced.

Every submitted declaration generates an XML file that’s stored in Odoo under Accounting → Reporting → EDI Exports. This archive serves as both an audit trail and a recovery mechanism. If DGFIP ever questions a declaration, the original XML is right there, with the exact data that was transmitted. No reconstructing from memory, no digging through email attachments.

The Express Mention Option

A small but important toggle on the submission form enables an “express mention” with an optional comment field. This is the mechanism for adding notes to the declaration that DGFIP needs to see — for example, explaining an unusual figure, flagging a correction to a previous period, or noting a change in the company’s fiscal situation. The comment travels with the XML file, so it arrives alongside the numbers rather than in a separate communication that might get lost.

What This Requires

The EDI VAT feature is part of the French fiscal localization and requires an Odoo Enterprise subscription. This isn’t a community feature, and it’s not available through third-party modules. The restriction makes sense given the compliance implications — the EDI connection to DGFIP needs to be maintained, tested against regulatory changes, and updated when the tax authority modifies its submission specifications.

Why This Matters for French Businesses on Odoo

VAT filing is a recurring obligation. Monthly or quarterly, depending on the filing regime, someone in the company has to extract numbers from the accounting system, enter them into a government portal, and submit. For a business already running its entire accounting stack in Odoo, the portal step is pure friction — the numbers are already computed, the report is already generated, and the only reason they leave the ERP is that the ERP couldn’t talk to DGFIP directly.

Now it can. The accountant reviews the tax report in Odoo, confirms the figures, enters payment or reimbursement details, and clicks submit. The declaration goes to DGFIP, confirmation comes back, and the XML is archived. The entire cycle — from review to confirmation — happens inside one application. For a task that repeats every month or every quarter, that simplification compounds into real time savings over the course of a fiscal year.

Ready to experience Odoo AI?

Join hundreds of teams using DearERP to customize Odoo in minutes, not weeks. Plans start at $29/month.