Frankreich¶
Module¶
The following modules related to the French localization are available:
Name |
Technische Bezeichnung |
Beschreibung |
---|---|---|
France - Accounting |
|
French fiscal localization package that applies only to companies based in mainland France and doesn’t include DOM-TOMs. |
France - Accounting Reports |
|
Export of the French VAT report, which can be sent to the DGFiP, an OGA, or a professional accountant. |
Frankreich - Personalabrechnung mit Buchhaltung |
|
Enthält die erforderlichen Buchhaltungsdaten für die Regeln der Personalabrechnung für Frankreich. |
Frankreich – Factur-X-Integration mit Chorus Pro |
|
Fügt die für die Einreichung von Rechnung bei Chorus Pro benötigten Felder hinzu. |
France - FEC Export |
|
Generates the FEC file as defined by the Decree of July 29, 2013. |
Frankreich - FEC-Import |
|
Import of standard FEC files, useful for importing accounting history. |
France - Adding Mandatory Invoice Mentions (Decree no. 2022-1299) |
|
Adds address fields required to comply with Decree 2022-1299. |
France - VAT Anti-Fraud Certification for Point of Sale (CGI 286 I-3 bis) |
|
Bemerkung
Die Kernmodule der Lokalisierung werden automatisch mit der Lokalisierung installiert. Der Rest kann manuell installiert werden: installed.
Lokalisierungsübersicht¶
The French localization package ensures compliance with French fiscal and accounting regulations. It includes tools for managing taxes, fiscal positions, reporting, and a predefined chart of accounts tailored to France’s standards.
The French localization package provides the following key features to ensure compliance with local fiscal and accounting regulations:
Kontenplan: a predefined structure tailored to French accounting standards
Steuerpositionen (Steuer- und Kontenzuordnung): automated tax adjustments based on customer or supplier registration status
Taxes: pre-configured tax rates, including standard VAT, zero-rated, and exempt options
Berichtswesen¶
Installing the France - Accounting
(l10n_fr
) module gives access to some accounting reports specific to France, such as:
Bilan comptable (FR) (Balance Sheet)
Compte de résultats (FR) (Profit and Loss)
Rapport de taxes (FR) (Tax Report)
Buchhaltung¶
Elektronische Rechnungsstellung¶
The Chorus Pro portal, managed by the AIFE (Agence pour l’Informatique financière de l’État), is the official platform for submitting electronic invoices to French public entities. It allows businesses to send and manage invoices, track their processing status, and access payment updates. Since January 2020, electronic invoicing has been mandatory for all business-to-government (B2G) transactions in France. Odoo supports integration with Chorus Pro to submit invoices generated in Odoo.
Konfiguration¶
To send invoices to Chorus Pro, the following configuration is required:
Install the France - Factur-X integration with Chorus Pro (
l10n_fr_facturx_chorus_pro
) module.Register with Peppol, as invoices are sent from Odoo to Chorus Pro via the Peppol network.
If you don’t already have a Chorus Pro account, go to the Chorus Pro page, click Créer un compte, and create one.
Siehe auch
Kunden¶
To submit invoices to Chorus Pro, configure the relevant customers‘ contact form as follows:
Verify the Country and Tax ID fields are filled out.
In the Sales & Purchase tab, ensure the SIRET field is completed.
In the Accounting tab, fill in the following fields in the Electronic Invoicing section:
Format: Select BIS Billing 3.0.
Peppol e-address (EAS): Select 0009 - SIRET-CODE.
Peppol Endpoint: Type
11000201100044
, the reference used by Chorus Pro.
Sending invoices to Chorus Pro¶
To send invoices to Chorus Pro, follow these steps:
Gehen Sie zu
und öffnen oder erstellen Sie die Rechnung.Make sure the following fields are filled in the Other Info tab:
Buyer Reference: Service Exécutant in Chorus Pro
Contract Reference: Numéro de Marché in Chorus Pro
Purchase Order Reference: Engagement Juridique in Chorus Pro
Bestätigen Sie die Rechnung.
Click Send & Print and, in the Send window, enable Peppol Bis Billing 3.0.
Click Send & Print.
Once the invoice is sent, the Peppol status of the invoice is updated to Done.
Siehe auch
FEC - Fichier des Écritures Comptables¶
An FEC Fichier des Écritures Comptables audit file contains all the accounting data and entries recorded in all the accounting journals for a financial year. The entries in the file must be arranged in chronological order. Since January 2014, every French company is required to produce and transmit this file upon request by the tax authorities for audit purposes.
FEC-Import¶
Install the France - FEC Import
(l10n_fr_fec_import
) module to import FEC files from other software.
To enable this feature, go to Accounting Import section, click Import and Import FEC. Then, in the FEC Import window, upload the FEC file and click Import.
. In theBemerkung
Importing FEC files from different years requires no particular actions or computations. However, if multiple files contain RAN Reports à Nouveaux with the starting balance for the year, these entries are automatically marked as unnecessary in Odoo and may need to be deleted.
Dateiformate¶
Bemerkung
FEC files must be in CSV format, as XML format is not supported.
The FEC CSV file is a plain text file structured as a data table. The first line serves as the header, defining the list of fields for each entry, and each following line represents a single accounting entry without any specific order.
FEC files must comply with the following technical specifications:
Codierung: UTF-8, UTF-8-SIG und iso8859_15.
Trennzeichen: eines von diesen:
;
or|
or,
oderUmschalttaste
.Zeilenabschlüsse: Es werden Zeichengruppen in Form von sowohl CR+LF (
\rn
) als auch LF (\n
) unterstützt.Datumsformat:
%Y%m%d
Beschreibung und Verwendung von Feldern¶
# |
Feldname |
Beschreibung |
Verwenden Sie |
Format |
---|---|---|---|---|
01 |
JournalCode |
Journalcode |
|
Alphanumerisch |
02 |
JournalLib |
Journalbezeichnung |
|
Alphanumerisch |
03 |
EcritureNum |
Spezifische Nummerierung für jede Journalsequenznummer der Buchung |
|
Alphanumerisch |
04 |
EcritureDate |
Buchungsdatum |
|
Datum (JJJJMMTT) |
05 |
CompteNum |
Kontonummer |
|
Alphanumerisch |
06 |
CompteLib |
Kontoname |
|
Alphanumerisch |
07 |
CompAuxNum |
Sekundäre Kontonummer (akzeptiert Null) |
|
Alphanumerisch |
08 |
CompAuxLib |
Sekundärer Kontoname (akzeptiert Null) |
|
Alphanumerisch |
09 |
PieceRef |
Dokumentreferenz |
|
Alphanumerisch |
10 |
PieceDate |
Dokumentdatum |
|
Datum (JJJJMMTT) |
11 |
EcritureLib |
Bezeichnung des Kontoeintrags |
|
Alphanumerisch |
12 |
Soll |
Sollbetrag |
|
Schwebend |
13 |
Haben |
Habenbetrag (Feldname „Crédit“ ist nicht erlaubt) |
|
Schwebend |
14 |
EcritureLet |
Querverweis auf Buchungsposten (akzeptiert Null) |
|
Alphanumerisch |
15 |
DateLet |
Datum des Buchungsposten (akzeptiert Null) |
nicht verwendet |
Datum (JJJJMMTT) |
16 |
ValidDate |
Validierungsdatum des Buchungspostens |
nicht verwendet |
Datum (JJJJMMTT) |
17 |
Montantdevise |
Währungsbetrag (akzeptiert Null) |
|
Schwebend |
18 |
Idevise |
Währungs-ID (akzeptiert Null) |
|
Alphanumerisch |
These two fields appear in the same order as the others, replacing them.
12 |
Montant |
Betrag |
|
Schwebend |
13 |
Sens |
Kann „C“ für Haben oder „D“ für Soll sein |
bestimmt |
Zeichen |
Implementierungsdetails¶
The following accounting entities are imported from the FEC files: Accounts, Journals, Partners, and Moves. The module automatically determines the encoding, line terminator, and separator used in the file. Next, a check is performed to ensure that each line has the correct number of fields matching the header. If the check is successful, the entire file is read, stored in memory, and scanned. Accounting entities are then imported one type at a time in the following order.
Konten¶
Each accounting entry is associated with an account identified by the CompteNum field.
Code-Abgleich¶
If an account with the same code already exists, the existing one is used rather than creating a new one. In Odoo, account numbers follow the default digit length of the fiscal localization. Since the FEC module is tied to the French localization, the default account length is 6 digits. This means that trailing zeros in account codes are removed, and the comparison between the account codes in the FEC file and those already in Odoo is made based only on the first six digits of the codes.
Example
The account code 65800000
in the file is matched with an existing 658000
account in Odoo,
and the existing account is used instead of creating a new one.
Abstimmbare Kennzeichnung¶
An account is technically flagged as reconcilable if the first line in which it appears has the EcritureLet field filled out, indicating that the accounting entry will be reconciled with another one.
Bemerkung
The field can be left empty on the line, but the entry must still be reconciled with an unrecorded payment. The account is flagged as reconcilable once the import of the move lines requires it.
Kontotyp und Vorlagenabgleich¶
Since the account type is not specified in the FEC format, new accounts are created with the default type Current Assets. After the import process, they are matched against the installed Chart of Account templates. The reconcile flag is also determined this way.
The matching is performed by comparing the left-most digits, starting with all digits, followed by 3 digits, and then 2 digits.
Example
Name |
Code |
Vollständiger Vergleich |
3-Ziffern-Vergleich |
2-Ziffern-Vergleich |
---|---|---|---|---|
Vorlage |
|
|
|
|
CompteNum |
|
|
|
|
Ergebnis |
Gefundene abgleichen |
The account type is then flagged as payable and reconcilable based on the account template.
Journale¶
Journals are checked against the existing ones in Odoo to avoid duplicates, even when importing multiple FEC files.
If a journal with the same code already exists, the existing journal is used instead of creating a new one.
New journals have the prefix FEC- added to their name. For example, ACHATS becomes FEC-ACHATS.
Bemerkung
Journals are not archived, allowing the user to manage them as desired.
Bestimmung des Journaltyps¶
The journal type is not specified in the format (similar to the accounts) and is initially created with the default type general.
At the end of the import process, the journal type is determined based on the following rules regarding related moves and accounts:
- bank: Moves in these journals always include a line (debit or credit) impacting a liquidity account.cash / bank can be interchanged, so bank is assigned when this condition is met.
- sale: Moves in these journals mostly have debit lines on receivable accounts and credit lines on tax income accounts.Buchungszeilen für Verkaufserstattungen werden Haben/Soll umgewandelt.
- purchase: Moves in these journals mostly have credit lines on payable accounts and debit lines on expense accounts.Buchungszeilen für Einkaufserstattungen werden Haben/Soll umgewandelt.
- general: Used for everything else.
Bemerkung
A minimum of three moves is required to identify the journal type.
A threshold of 70% of the moves must meet the criteria for a journal type to be determined.
Example
Suppose we are analyzing the moves that share a certain journal_id.
Buchungen |
Anzahl |
Prozentsatz |
---|---|---|
die eine Verkaufskontozeile und keine Einkaufskontozeile haben |
0 |
0 |
die eine Einkaufskontozeile und keine Verkaufskontozeile haben |
1 |
25 % |
die eine Liquiditätskontozeile haben |
3 |
75 % |
Gesamt |
4 |
100 % |
The journal type would be bank, because the bank’s move percentage (75%) exceeds the threshold (70%).
Kontakte¶
Each contact keeps its Reference from the CompAuxNum field.
Bemerkung
These fields are searchable based on previous FEC imports for fiscal/audit purposes.
Tipp
Similar and potential duplicate contacts can be merged using the Data Cleaning App.
Buchungen¶
Entries are posted and reconciled immediately upon submission, with the EcritureLet field used to match the entries.
The EcritureNum field represents the name of the moves, but it may sometimes be left empty. In such cases, the PieceRef field is used instead.
Rundungsprobleme¶
A rounding tolerance is applied based on currency precision for debit and credit amounts (i.e., 0.01 for EUR). If the difference falls under this tolerance, a new line is added to the move, called Import rounding difference, targeting the following accounts:
658000
Charges diverses de gestion courante, for added debits758000
Produits divers de gestion courante, for added credits
Fehlende Buchungsbezeichnung¶
If the the EcritureNum field is not filled out and PieceRef field is not suited to determine the move name (it may be used as an accounting move line reference), it becomes impossible to identify which lines should be grouped into a single move, and effectively preventing the creation of balanced moves.
In such cases, a final attempt is made to group all lines by the same journal and date (JournalLib, EcritureDate). If this grouping generates balanced moves (sum(credit) - sum(debit) = 0), then each different combination of journal and date creates a new move.
Example
ACH
+ 2021/05/01
–> neue Buchung auf Journal ACH
mit Name 20210501
.
If this attempt fails, an error message is displayed, listing all the move lines that are considered unbalanced.
Contact information¶
If a line includes contact information, it is copied to the accounting move itself, provided the targeted journal is of type payable or receivable.
FEC Export¶
To download the FEC, install the France - FEC Export`(`l10n_fr_fec) module, then go to . In the FEC window, fill in the following fields:
Start Date
End Date
Test File: Enable this option to test the FEC file generation.
Excluded Journals
Then, click Generate.
Liasse fiscale¶
Die liasse fiscale (Steuererklärung) ist eine Sammlung von standardisierten Finanzdokumenten, die Unternehmen jährlich bei den Steuerbehörden einreichen müssen. Sie gibt einen umfassenden Überblick über die finanziellen Aktivitäten des Unternehmens und bestimmt die Unternehmenssteuern.
Teledec ist eine Plattform zur Erstellung und Übermittlung von Steuererklärungen auf der Grundlage von Daten aus der Buchhaltung. Um Ihre in Odoo gespeicherten Buchhaltungsdaten mit Teledec zu synchronisieren und die liasse fiscale Ihres Unternehmens elektronisch an die DGFiP (Direction Générale des Finances Publiques) zu senden, gehen Sie wie folgt vor:
Erstellung eines Teledec-Kontos¶
Um ein Teledec-Konto einzurichten, rufen Sie die Seite zur Einrichtung eines Teledec-Kontos auf und geben Sie in das Feld Adresse e-mail (E-Mail-Adresse) eine E-Mail-Adresse ein. Wählen Sie ein sicheres Passwort, akzeptieren Sie die allgemeinen Geschäftsbedingungen, indem Sie das Kästchen ankreuzen, und klicken Sie zum Speichern auf S’enregistrer (Registrieren). Geben Sie dann die SIREN-Nummer des Unternehmens ein.
Bemerkung
Wenn Sie bereits ein Konto erstellt habe, klicken Sie auf Déjà enregistré? (schon registriert?).
Unternehmensregistrierung und Informationen zum Geschäftsjahr¶
Um Ihr Unternehmen auf Teledec zu registrieren, gehen Sie zu Vos entreprises (Ihre Unternehmen) und klicken Sie auf Enregistrer votre entreprise (Ihr Unternehmen registrieren). Geben Sie in den Feldern Coordonnées de l’entreprise (Unternehmensdaten) und Représentant légal (Gesetzlicher Vertreter) die folgenden Unternehmensdaten ein:
Nom de l’entreprise: Name des Unternehmens.
Forme juridique: Wählen Sie die Rechtsform des Unternehmens.
Les comptes sont clôturés le: Abschlussdatum.
Régime d’imposition, choix de la liasse: Wählen Sie das Steuerschema und die Option zu Steuererklärung aus.
Adresse du siège social: Adresse des Hauptsitzes.
Nom du représentant légal: Name des gesetzlichen Vertreters.
Agissant en qualité de: Funktion des gesetzlichen Vertreters.
Numéro de téléphone: Telefonnummer.
Klicken Sie auf Sauvegarder (Speichern), um den nächsten Schritt Informations générales sur l’exercice déclaré (Allgemeine Informationen über das deklarierte Geschäftsjahr) anzuzeigen. Geben Sie dann Informationen über das Geschäftsjahr ein, wie z. B. das Datum des Beginns und des Endes des Geschäftsjahres oder das Abschlussdatum und die Dauer der vorangegangenen Steuerperiode. Nach dem Speichern wird die Liste der in der liasse fiscale enthaltenen Dokumente angezeigt, die sowohl Standard-Steuerformulare als auch für die Steuererklärung des Unternehmens angepasste Formulare enthält.
Tipp
Die Spalte Etat (Status) zeigt den Fortschritt der Dokumenteinreichung an.
Klicken Sie auf Compléter (vervollständigen), um das Dokument auszufüllen, und dann auf Sauvegarder (Speichern).
Um eine leere Version der Erklärung zu drucken, klicken Sie auf Imprimer la déclaration (Erklärung drucken) und wählen Sie die Option Imprimer la déclaration avec les notices (Die Erklärung mit den Notizen drucken).
Odoo-Synchronisierung¶
Damit Odoo die Daten für die Liasse fiscale automatisch ausfüllt, klicken Sie oben rechts auf Autres actions (Andere Aktionen) und wählen Sie Synchroniser avec un logiciel tiers (Synchronisieren mit Software von Drittanbietern), dann Synchroniser cette liasse avec Odoo (Diese Erklärung mit Odoo synchronisieren).
Geben Sie im Fenster Synchroniser cette liasse avec Odoo (Diese Erklärung mit Odoo synchronisieren) die folgenden Informationen ein, um die Synchronisierung abzuschließen:
Nom / URL complète de la base de données Odoo: Odoo database name or URL. To provide the full URL of the database, enable Je voudrais donner une url complète hors .odoo.com option.
Nom de l’utilisateur: der mit dem Odoo-Konto verbundene Benutzername.
Clé API: von der Odoo-Instanz generierte API-Schlüssel.
Bemerkung
In a multi-company setup, the following configurations are required in Odoo:
Klicken Sie anschließend auf Importer (Importieren), um die Daten aus Odoo zu synchronisieren. Im Fenster Confirmation de la synchronisation de liasse avec Odoo (Bestätigung der Synchronisierung der Erklärung und Odoo) überprüfen Sie die Beträge und nehmen gegebenenfalls Änderungen vor. Klicken Sie dann auf Importer la balance (Saldo importieren), um die Synchronisation der liasse fiscale mit Odoo zu bestätigen und den Saldo zu importieren.
Wichtig
Durch Klick auf Importer la balance (Saldo importieren) werden manuelle Änderungen, die vorher vorgenommen wurden, wahrscheinlich überschrieben.
Um eine Zahlung durchzuführen und die Erklärung an Steuerbehörden zu senden, klicken Sie auf Paiement & envoi de la déclaration (Zahlung & Versand der Erklärung).
Point of sale¶
VAT anti-fraud certification¶
Since January 2018, new anti-fraud legislation has been in effect in France and its overseas territories (DOM-TOM). This legislation establishes specific requirements for the integrity, security, storage, and archiving of sales data. Odoo complies with these legal requirements by providing a module and a downloadable certificate of conformity.
Anti-fraud cash register software, such as Odoo (CGI art. 286, I. 3° bis), is required for companies taxable in France or DOM-TOM, where some customers are private individuals (B2C). This rule applies to all company sizes, but auto-entrepreneurs exempt from VAT are unaffected.
Odoo certification¶
The tax administration requires all companies to provide a certificate of conformity confirming that their software complies with anti-fraud legislation. In case of non-compliance, a €7,500 fine may be imposed.
Bemerkung
This certificate is granted by Odoo SA to Odoo Enterprise users.
To get the certification, follow these steps:
Install the France - VAT Anti-Fraud Certification for Point of Sale (CGI 286 I-3 bis) (
l10n_fr_pos_cert
) module.Set the Country field on the company record to encrypt entries for the inalterability check.
Download the mandatory certificate of conformity delivered by Odoo SA.
Funktionen zur Betrugsbekämpfung¶
Das Betrugsbekämpfungsmodul bietet die folgenden Funktionen:
Unveränderlichkeit¶
All methods to cancel or modify key data in POS orders, invoices, and journal entries are deactivated for companies located in France or any DOM-TOM.
Bemerkung
In a multi-company environment, only the documents of such companies are impacted.
Sicherheit¶
To ensure inalterability, every order or journal entry is encrypted upon validation. This number (or hash) is calculated from the document’s key data and the hash of the precedent documents. The module introduces an interface to test the data’s inalterability. The test will fail if any information is modified on a document after its validation. The algorithm recomputes all the hashes and compares them against the initial ones. In case of failure, the system points out the first corrupted document recorded in the system.
Only users with administrator access rights can initiate the inalterability check:
For POS orders, go to
;For invoices or journal entries, go to
.
Lagerung¶
The system also processes automatic sales closings daily, monthly, and annually. Such closings compute the sales total for the period and the cumulative grand totals from the very first sales entry recorded in the system.
To access closings, either go to
or .Bemerkung
Abschlüsse berechnen die Summen für Journalbuchungen von Verkaufsjournalen (Journaltyp = Verkauf).
In Umgebungen mit mehreren Unternehmen werden solche Abschlüsse nach Unternehmen durchgeführt.
POS orders are posted as journal entries at the closing of the POS session. Closing a POS session can be done anytime. To prompt users to do it daily, the module prevents them from resuming a session that was opened more than 24 hours ago. Such a session must be closed before selling again.
A period’s total is computed from all the journal entries posted after the previous closing of the same type, regardless of their posting date. Recording a new sales transaction for a period already closed will be counted in the very next closing.
Tipp
For test & audit purposes, closings can be manually generated in developer mode. To do so, go to . In the scheduled actions list view, open the desired Sale Closing action and click Run manually.
Verantwortlichkeiten¶
Uninstalling this module will reset the security hashes. This means the system will no longer guarantee the integrity of the past data.
Users are responsible for their Odoo system and must operate it carefully. Modifying source code responsible for ensuring data integrity is not allowed.
Odoo is not responsible for any issues with this module’s functionality if caused by uncertified third-party applications.