This module adds support for the French VAT declaration CA3 (monthly or quarterly):
- computation of the boxes of the CA3 form,
- print the CA3 PDF,
- generate the corresponding journal entry.
It can also be used for the smaller companies which have a yearly CA12 VAT declaration. But, for CA12, the generation of the PDF and the auto-fill of the form on impots.gouv.fr is not supported: you will have to manually copy the values on the online by finding, for each CA3 box, the equivalent box in the CA12.
This module also supports:
- declaration 3519 for the reimbursement of VAT credit,
- declaration 3310-A (CA3 Appendix) for the additional taxes
For the CA3 Appendix, the taxes that target few large companies such as taxe sur les sociétés d'autoroute, taxe sur les éoliennes en mer, taxe sur le débarquement de passagers en Corse, taxe sur les services numériques i.e. taxe GAFA,... are not maintained any more because it is a waste of time. If you need one of them, you can create the related boxes manually in the configuration menu.
auto_awesome What this module does
AI-generated from the code · Odoo 16.0Prepare, compute and file the French VAT return (CA3, CA12, 3310-A appendix and 3519 credit refund) directly in Odoo, with automatic box computation, PDF/Excel output and the corresponding journal entry.
This module turns Odoo into a tool for French VAT declarations. Users create a VAT return record for a period (monthly, quarterly or yearly) and Odoo automatically fills the CA3 boxes from posted journal items, using the box configuration stored in l10n.fr.account.vat.box.
- The return goes through states: Manual Lines, Automatic Lines, Sent and Posted, and can be tracked via chatter.
- It computes VAT on payment, autoliquidation lines, unpaid VAT on payment manual lines, and pushes amounts between boxes according to configured rates.
- It generates the CA3 PDF, an Excel file and a ZIP of deductible VAT justifications, and creates the corresponding journal entry in the configured VAT journal.
- It supports the 3519 reimbursement request when the VAT credit exceeds the legal minimum (760 €, or 150 € at year-end), and the 3310-A appendix for additional taxes.
- Company settings add VAT periodicity, exigibility, lock-date update, rounding accounts and analytic distribution for rounding.
- Fiscal positions get a French VAT type, and taxes get an autoliquidation flag used to detect total or partial self-assessment.
- Customer invoices get a computed 'VAT on Payment' flag, and a scheduled job and mail template are included.
Depends on
Required by other modules
Menus it adds
Models and fields (19)
- account.tax · extends an existing modelfr_vat_autoliquidation (Autoliquidation)
- res.company · extends an existing modelfr_vat_journal_id (Journal for VAT Journal Entry), analytic_precision, fr_vat_exigibility (VAT Exigibility), fr_vat_periodicity (VAT Periodicity), fr_vat_send_gateway (Default VAT Gateway), fr_vat_bank_account_id (Company Bank Account), fr_vat_remind_user_ids (Users to Remind), fr_vat_update_lock_dates (Update Lock Date upon VAT Return Validation), fr_vat_remind_deadline_day (VAT Return Deadline Day), fr_vat_income_analytic_distribution (Analytic Income Account for Rounding), fr_vat_expense_analytic_distribution (Analytic Expense Account for Rounding), fr_vat_remind_auto_generate_and_transmit (Auto-generate and Transmit on Deadline Day), fr_vat_manual_autoliq_line_default_option (Default for Manual Autoliquidation Line), l10n_fr_rounding_difference_loss_account_id (Expense Account for Rounding), l10n_fr_rounding_difference_profit_account_id (Income Account for Rounding)
- account.move · extends an existing modelout_vat_on_payment (VAT on Payment for Customer Invoices), fiscal_position_fr_vat_type (Fiscal Position Type)
- account.move.line · extends an existing model
- res.config.settings · extends an existing modelfr_vat_journal_id, analytic_precision, fr_vat_exigibility, fr_vat_periodicity, fr_vat_send_gateway, fr_vat_bank_account_id, fr_vat_remind_user_ids, fr_vat_update_lock_dates, fr_vat_company_partner_id, fr_vat_remind_deadline_day, fr_vat_income_analytic_distribution, fr_vat_expense_analytic_distribution, fr_vat_remind_auto_generate_and_transmit, fr_vat_manual_autoliq_line_default_option, l10n_fr_rounding_difference_loss_account_id, l10n_fr_rounding_difference_profit_account_id
- account.chart.template · extends an existing model
- account.fiscal.position · extends an existing modelfr_vat_type (Type)
- l10n.fr.account.vat.box · new modelcode, name (Label), active, manual, print_x (Print Position X), print_y (Print Position Y), edi_code (EDI Code), edi_type (EDI Type), negative, sequence, form_code (Form), nref_code (N-REF Code), push_rate, account_id, full_label, meaning_id (Meaningful ID), print_page (Page), push_box_id, push_rate_2, account_code (Generic Account Code), display_type, due_vat_rate (VAT Rate x100), push_box_2_id, push_sequence, accounting_method, due_vat_base_box_id (Due VAT Base)
- l10n.fr.account.vat.return · new modelname (Period), state, move_id (Journal Entry), end_date, line_ids (Return Lines), company_id, start_date, send_gateway (_send_gateway_selection), comment_dgfip (Comment for DGFiP), sent_datetime (Sent Date), bank_account_id (Company Bank Account), vat_periodicity (VAT Periodicity), autoliq_line_ids (Autoliquidation Lines), vat_credit_total (VAT Credit Total), ca3_attachment_id (CA3 Attachment), gateway_available, gateway_test_mode, company_partner_id (Company Partner), ignore_draft_moves, reimbursement_type (_reimbursement_type_selection), autoliq_manual_done, ca3_attachment_name (CA3 Filename), company_currency_id (Company Currency), ca3_attachment_datas (CA3 File), gateway_attachment_id (Data Sent via the Gateway), vat_on_payment_option (VAT on Payment Option), reimbursement_end_date (Event Date), reimbursement_min_amount, reimbursement_show_button (Show VAT Credit Reimbursement Button), deductible_vat_zip_file_id (Deductible VAT ZIP Attachment)
- l10n.fr.vat.autoliq.manual · new modelline_ids, fr_vat_return_id (FR VAT Return)
- l10n.fr.vat.draft.move.option · new modelend_date, draft_move_ids (Draft Journal Entries), draft_move_count, fr_vat_return_id (FR VAT Return)
- l10n.fr.vat.exigibility.update · new modelcompany_id, update_date (Update Since), update_type (Update), new_fr_vat_exigibility (New VAT Exigibility), current_fr_vat_exigibility (Current VAT Exigibility)
- l10n.fr.account.vat.return.line · new modelstate, value, box_id (Box), log_ids (Computation Details), box_code, box_name, parent_id (VAT Return), box_manual, company_id, value_bool (Value (Y/N)), value_char (Text), value_float (Value Before Rounding), box_edi_code, box_edi_type, box_negative, box_sequence, box_form_code, box_meaning_id, box_push_box_id, box_display_type, value_manual_int (Integer Value), box_push_sequence, manual_account_id (Account), analytic_precision, box_accounting_method, manual_analytic_distribution (Analytic)
- l10n.fr.vat.autoliq.manual.line · new modelref, date, debit, label, credit, option (Product or Service), parent_id, account_id, journal_id, partner_id, autoliq_type, move_line_id, product_ratio (Product Ratio (%)), autoliq_line_id, company_currency_id
- account.fiscal.position.template · extends an existing modelfr_vat_type (Type)
- l10n.fr.account.vat.return.line.log · new modelnote, amount, parent_id (VAT Return Line), account_id (Account), compute_type, origin_move_id (Source Invoice), parent_parent_id, analytic_precision, analytic_distribution (Analytic)
- l10n.fr.account.vat.return.autoliq.line · new modelref, date, debit, label, credit, move_id (Journal Entry), parent_id (VAT Return), account_id, company_id, journal_id, partner_id, autoliq_type (Type), compute_type, move_line_id (Journal Item), vat_rate_int (VAT Rate), product_ratio, company_currency_id
- l10n.fr.account.vat.return.reimbursement · new modelamount (Reimbursement Amount), end_date (Event Date), return_id (VAT Return), min_amount, vat_credit_total, reimbursement_type (_reimbursement_type_selection), company_currency_id, first_creation_date (Creation Date), reimbursement_comment_dgfip (Comment for DGFIP)
- l10n.fr.account.vat.return.unpaid.vat.on.payment.manual.line · new modelnote, amount (VAT Amount), parent_id (VAT Return), account_id (VAT Account), company_id, company_currency_id
Text generated by AI (DeepSeek) from reading the Odoo 16.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 14.0
Confirmed on 2026-11-03 in branch 14.0 of OCA/l10n-france.
terminal Installation and usage
No verified informationInstallation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.