The ultimate guide for a successful odoo-ERP-implementation   Free Download

What you need to know about Datev and Odoo

The most frequent Google search in Germany is for “Odoo Datev.” We have written many blogs about this topic. When Odoo was still OpenERP, we were confronted with it during our very first project, as two young developers who had founded “openfellas“ who later became Odoo partners. As inexperienced as we were at the time, we tried to leave the accounting until the very end of the project.

Our approach is entirely different today: Accounting is one of the top features to be tackled in every project and is handled by experienced consultants, indeed by our own highly specialized team.

A few years ago, Odoo also recognized this subject’s importance and started providing a Datev export option as part of the two localizations available in Germany, SKR03 and SKR04.

Before we get to the actual process of how data is transferred from Odoo to Datev, here are a few answers to clarify some of the most frequently asked questions.

Why should data be transferred from Odoo to Datev?

Exporting to Datev is a prerequisite and sometimes a mandatory criterion, especially in medium-sized companies. However, since Odoo has a comprehensive accounting and finance module, this is not actually a necessary requirement. On the contrary, keeping the accounting in Odoo at least until the month-end closing would be more advisable to increase efficiency and transparency.

The reasons for this are that

  1. Odoo automatically recognizes ARAP (deferred expenses and accrued income) and PRAP (deferred income and accrued expenses) and proposes them as posting batches for the month-end closing;
  2. assets can be recognized in the same way as a) from the incoming invoice, automatically depreciated every month and added to the asset schedule;
  3. the inventory valuation may be done with an automatically maintained valuation price, taking into account the acquisition costs;

The integration of bank posting offers the possibility of an integrated dunning process and increases transparency by a further significant factor.

One prerequisite for this is the GoBD-compliant configuration of the accounting system.

Of course, you can also do the periodic VAT return using Odoo. However, the export to Datev could occur in advance, and the Elster report from Datev. In other words, the answer to whether a transfer should be made from Odoo to Datev is actually only that the tax consultant can be more easily connected this way.

What type of data gets transferred?

As we will see later, the standard Datev export of the Odoo Enterprise version transfers the master data of debtors and creditors, all posting records of the selected journals (theoretically all of them: A/R and A/P invoice book, bank, cash, ARAP, PRAP, depreciation of assets, travel expenses, inventory valuation, etc.), and all associated receipts. An export function could not be more complete.

What options are there for transferring posting data from Odoo to Datev?

The most obvious way is probably the export implemented in Odoo Enterprise, as it is the most comprehensive. Should it prove insufficient, you should review what exactly is missing. Obviously, you could extend the export by customizing it (the answer to everything supposedly missing in Odoo), but the reason behind it is usually that the responsibility for data sovereignty between the systems and processes has not been clearly defined until the evaluations are requested.

The easiest way is to close the sub-ledger in Odoo and transfer it to Datev after the month-end closing. The evaluation of cost units and cost center accounting should remain solely in Odoo. Any mixing requires individualization of the standard export and decreases transparency, apart from the fact that processes usually become more complex.

But let’s move on to the implementation of the Datev export itself.

General remarks

When considering traditional accounting systems, there is a distinction between the general ledger and sub-ledger accounting. In the sub-ledger, the accounts payable and receivable, as well as the OPOS, are managed on both sides (i.e., receivables and payables). At the end of the month, the balance is transferred to the general ledger and then closed.

Double-entry bookkeeping

Odoo shares this point of view but solves it a little differently than some classic candidates. Above all, it should be noted that if the setup is successful accounting is largely automated, meaning that it is usually the department with the most significant increase in efficiency and transparency at the end of the ERP implementation. At the same time, the need for manual postings is reduced to a minimum.

Odoo’s approach is to view double-entry bookkeeping not as two separate accounting areas but as one. In other words, in Odoo, a posting record is simultaneously assigned to a sub-ledger account and a general ledger account if a posting record is generated by a debit or credit document.

As you can see from the screenshot of an Odoo demo version, we group by journal, G/L account (general ledger) and partner (sub-ledger):

The respective financial reports specify whether the analysis will be done on the general ledger accounts of the posting lines (such as balance sheet, income statement, and audit reports) or the partners or sub-ledger accounts (OPOS receivable, OPOS payable).

Even if it is irrelevant at this point, the advantage of month-end closing should be emphasized, as it is much simpler based on this technical structure. This means that the posting and financial periods only need to be fixed for the month-end closing, and no balance transfer is necessary from the sub-ledger accounts to the respective general ledger account.

Export and process

Let us move on to the process of transferring Odoo to Datev: Since Odoo 14, the Datev export function has been included in the Odoo Enterprise delivery package. The file generated in this process must be imported into Datev Accounting and contains the posting records, master data, and if desired, the document images (if available).

Note: This process does not generate any missing document images; it only exports existing ones.

Step 1

The first step is to prepare the month-end closing period by clicking on ”Lock Dates” in the “Accounting” menu. In the screen that now appears, we set the top left date:

As a result, all users with sub-ledger authorization (i.e., “Billing“ and “Accounting“) are no longer allowed to enter or create any further documents or postings for the period before the set date.

Step 2

All necessary steps for the month-end closing (generating depreciation and accruals) are now performed. These steps were determined, defined, and trained with you as part of the implementation project.

Step 3

Now, you call up the same dialog again and set the right-hand date identically to the left-hand date, closing the period for each authorization level (including the administrative authorization).

Step 4

To start the Datev export, we go to the general ledger in the “Reporting“ menu:

This is where we now find our export:

This generates a ZIP file that you can import directly into Datev Accounting without any further intermediate steps, including the following:

The files contain the following information:

  • EXTF_accounting_entries.csv: All posting records for the selected period
  • EXTF_customer_accounts.csv: Master data of all debitors (account and name)
  • EXTF_vendor_accounts.csv: Master data of all creditors (account and name)

In addition, the voucher images are exported as a PDF, with the file name corresponding to the booking number. In our example, no voucher image was generated for any invoice in the demo data, so the archive file only contains posting and master data.

What is not part of the export

The transfer of KOST1 and KOST2 is not part of the standard export. Odoo always focuses on the essentials when assigning fields. Apart from the fact that the number of fields provided by Datev is very extensive, there is also the issue of split postings. In contrast to Datev, Odoo allows a much more complex account assignment without the need to split the posting record. However, this also means the interface must bring two different rationales together. Since any additional complexity in such situations entails a high potential for error, a conscious decision has been made to minimize the amount of information, especially as the document images are also part of the transfer.

Since Odoo contains fully integrated cost center and cost unit accounting, we recommend using them, mainly since they can also record cost posting via the activity recording/hour posting in project management or production generating expenses on the corresponding cost centers. However, these postings have no reference to general ledger accounting. The same applies to recorded vacation or sick leave. These data cannot be transferred to Datev independently, regardless of the already-mentioned data structure. As Odoo provides sophisticated integrated analysis options, a transfer to Datev has no added value.

Consecutive Numbers

Many criticize that Odoo supposedly does not create debtor or creditor accounts. Usually, people look under the Accounting tab. But this tab only shows the two general ledger accounts of the respective localization for receivables and corresponding payables:

As far as it goes, this is correct. A common mistake is incorporating Datev’s process approach here and creating a separate customer and vendor account for each company data record in the chart of accounts. Apart from the manual effort involved, this would lead to an incorrect assignment of the posting record. A sub-ledger account would appear where Odoo stores the general ledger account and expects the corresponding financial reports to appear.

This raises the question of how Odoo generates a unique account number for the sub-ledger for the Datev export.

If you look at the two master data files in the export, you will see that the data record ID is used and – depending on the localization specifications – provided with a prefix for debtors or creditors, respectively. As a data record ID must be unique, the uniqueness of the account is also guaranteed.

Many web modules offer the generation of additional, consecutive numbers. But to make it clear, even if it feels nicer, it is neither technically nor legally necessary.

The configuration for controlling the Datev export

The configuration for controlling the size of the sub-ledger accounts to be generated may be found in the accounting or finance settings. You will find a separate option for this on the settings page:

In addition, the Datev consultant and client number should, of course, be configured in the client or company:

Check record according to GoBD

In the last several versions, a posting record has been provided with a hash value when posted since Odoo allows the correction of a posting record in the standard version within an open financial period with the need to generate a correction posting record. The hash value can be used to subsequently determine which posting record has been changed. Whether this offers any advantages is open to debate. The function can be activated or deactivated for each journal/book and is called ”Lock Posted Entries with Hash“:


In short, whoever activates this entry seems to follow the “what’s posted is posted” principle.

Checking across all journals is easy. There is an option “Download the Data Inalterability Check Report, “which calls up a PDF with a corresponding integrated overview:

In our case, however, this means that each journal now allows this and that each should be closed.

How should inventory data be handled?

In the case of a data transfer, the previously assigned account numbers must be allocated to the respective customer or vendor in the new system so that no new values need to be assigned.

If you look in the list of fields (the screenshot shows the export screen), you will find two self-explanatory options:

The fields “DateV Customer“ (for the Customer ID) and “DateV Vendor“ (for the Vendor ID) are available here.

Should a manual correction be necessary, both fields can also be made visible in the address data record with a little trick. You need to switch to developer mode, and then they will appear below the general ledger accounts:


Why is there no data from Datev to Odoo?

Individual modules enable and advertise the return of correction postings from Datev to Odoo. However, if the month-end closing has been performed in Odoo and the financial period has been closed, a return is unnecessary and requires a process to make this period postable again.

Since Odoo is intended to automate accounting as much as possible, we need to ask why a return should be necessary. After all, if the tax consultant has correction postings, this would imply that there are errors in the configuration of the accounting in Odoo or that the master data has been created incorrectly.

These errors would not be corrected if the correction batches were simply imported. It is, therefore, advisable to obtain the error list, localize the causes in Odoo, and fix them to transfer a new image to the tax consultant.

Parameter Decision in Odoo Part 1
Essential Parameters Impacting Your System Decision