Ga van start¶
While some companies use Odoo from their first day of business, many companies need to transition to Odoo from a different legacy accounting software. The process for companies starting directly with Odoo is much simpler but still requires the following steps:
Configure the Accounting settings to meet the company’s business needs
The process for companies transitioning to Odoo involves the same steps as well as importing opening entries.
Time of execution |
General category |
Specific to-do item |
|---|---|---|
Fiscal localization |
Verify localization |
|
Bedrijfsgegevens
Tax return periodicity
Tax rounding and inclusion in prices
Default accounts
Financial year end date
Document sequencing
|
||
Notitie
The process of transitioning from a legacy software system to Odoo Accounting is complex and can vary greatly from one business to another. While these instructions provide the basic steps of the process, Odoo’s Success Packs allow you to get personalized instructions on how best to adapt the process to your business’s needs. Advanced users can use these instructions as a guide to transition to Odoo Accounting with the understanding that they may have individual needs not covered here.
Tip
It is recommended to practice this process in a test database and work in parallel with your prior accounting workflows in case there are any issues.
At database/company creation¶
Fiscal localization packages are country-specific modules that install pre-configured taxes, fiscal positions, charts of accounts, and legal statements on your database. Some additional features, such as the configuration of specific certificates, are also added to the Accounting app, following your fiscal administration requirements.
A fiscal localization package is automatically installed based on the country selected when the database is created. Some countries have multiple fiscal localization packages for different business types, so be sure to verify that the correct package is installed. To do so, go to and verify the correct localization is set in the Package field in the Fiscal Localization section.
Waarschuwing
Selecting another package is only possible if no journal entry has been posted yet.
Prior to implementation¶
Accounting master data¶
Master data is data that other records rely on. For example, an invoice requires a customer; the customer, or contact, is master data. Because other records rely on master data, the order in which accounting data is transferred into Odoo, whether manually or via import, is crucial.
Grootboekschema¶
The chart of accounts is the foundation of all accounting records, and as such, it needs to be created before other database records. A standard chart of accounts is included with each fiscal localization, but most businesses have their own chart of accounts with its own accounts. Some of these accounts likely serve the same purpose as some of Odoo’s standard accounts, but they may have a different name and/or code. Other accounts may not have an analogous account in Odoo’s standard chart of accounts. These two types of accounts should be handled differently:
For accounts in your chart that have an analogous account in Odoo’s standard chart of accounts, simply edit the account name and/or account code of the standard Odoo account to match your own.
For accounts in your chart that do not have an analogous account in Odoo’s standard chart of accounts, create them manually or import them.
Tip
Account codes, if used, must be unique per chart of accounts, so ensure that any newly created or imported accounts do not share the same code as an existing account.
Gevaar
Because certain standard accounts are set as the default accounts for various fields (on products, product categories, contacts, and in the Accounting settings), deleting them or changing their account type can break basic processes like creating an invoice. Instead of deleting accounts in Odoo’s standard chart of accounts, simply rename and recode them.
Currency¶
If additional currencies are required beyond the default of the company’s fiscal localization, activate them. Currency rates can be set to update automatically in the Currencies section of the Accounting settings.
Dagboeken¶
Standard journals such as a sales journal, a purchase journal, a bank journal, and more are created by default, but additional journals can be created to manage different situations, including:
tracking income through multiple sales journals
having multiple bank accounts, each with its own journal
managing loans, tax returns, payroll, and more with miscellaneous journals
Recording payments in bank, cash, and credit card journals can create journal entries or not, depending on the journal’s configuration. By default, no journal entries are created for payments. To configure a journal to create payments, set outstanding payments accounts on the journal’s payment methods.
Fiscale posities¶
Fiscal positions allow you to configure products to use different income/expense accounts and apply different taxes depending on the customer or vendor purchasing or selling them. They can also be configured to apply automatically based on the customer’s or vendor’s location. Default fiscal positions are included when installing a fiscal localization package, but existing fiscal positions can be adjusted, and new fiscal positions can be created manually.
BTW¶
BTW interact with many different aspects of accounting, including fiscal positions, accounts, and products. Default taxes are included when installing a fiscal localization package, but existing taxes can be adjusted, and new taxes can be created manually.
Betaalvoorwaarden¶
Payment terms detail the conditions of payment for records such as sales and purchase orders, customer invoices, and vendor bills. Payment terms also allow you to define installment plans for when one record’s payments should be made in multiple installments.
As they are both used to dictate when payment is due, payment terms and due dates are mutually exclusive: a record can only have one or the other.
Additional master data¶
Products and product categories¶
Import your products and product categories or create them manually. Multiple fields on the product category form relate to accounting, including:
Income Account
Expense Account
Stock Account
Price Difference Account (available only on product categories that use Perpetual (at invoicing) for their Inventory Valuation)
By default, products inherit their Income Account and Expense Account from their product category, but these accounts can be overridden on each product record. Other fields on the product form relate to accounting as well, including:
Invoicing policy
Sales Taxes
Cost (which is particularly important for importing the opening inventory)
Purchase Taxes
Tip
Import product categories before products so that each product’s category can be specified during the product import.
Contact banks and bank accounts¶
To send payments to vendors (such as with SEPA credit transfer or NACHA files) and collect payments from customers via SEPA direct debit, the customer’s or vendor’s bank account must be set on their contact record.
Import your contacts’ banks and bank accounts or create them manually.
Contacten¶
Import your contacts or create them manually. Multiple fields on the contact form affect the contact’s accounting records, such as invoices and bills, including:
Payment Terms for sales and for purchases
Account Receivable
Account Payable
Invoice sending preferences (visible only in developer mode)
eInvoice format
Peppol e-address (EAS)
e-invoicing endpoint
Additional e-invoicing fields may be available depending on the fiscal localization
Accounting configurations¶
The following primary accounting configurations are crucial to successfully setting up accounting records. The majority of these are found in the Accounting settings and accessible via .
Company information, such as its name, address, logo, phone, and email address
Rounding Method: Choose whether the total tax amount is rounded per line or per tax in the Taxes section of the Accounting settings.
Prices: Choose whether prices are Tax Excluded or Tax Included by default in the Taxes section of the Accounting settings.
Default accounts: Default accounts can be set in the following two sections of the Accounting settings:
Default accounts: Additional default accounts beyond those configured for each journal
Inventory valuation: Other default accounts regarding both inventory valuation and manufacturing accounting
At the time of implementation¶
Opening entries¶
Companies transitioning to Odoo with existing account balances, open invoices and bills, and an opening inventory count need to enter these opening entries in their Odoo database so that they are accurately represented.
The process of bringing in an opening trial balance and open invoices/bills introduces complications because it can cause duplicated values if done incorrectly.
Example
A company has a current balance of $1000 in its accounts receivable, reflecting the $1000 that it is owed for its open invoices.
If these open invoices and the balance of the accounts receivable are both created in Odoo without making any changes, the accounts receivable will mistakenly reflect a balance of $2000:
$1000 from the opening trial balance of the accounts receivable
$1000 from the creation of the open invoices in Odoo
The same concept applies to open vendor bills and the accounts payable.
To avoid this error, use clearing accounts, which are accounts that temporarily hold the value before being balanced (or “cleared”).
When to transition¶
There are three options for when to transition your accounting workflows to Odoo:
At the end of the fiscal year: this is the easiest option because it minimizes the data that needs to be transferred.
At the end of the tax period: with this option, you can choose to post all of the entries from the past period or only the balance of each account at the end of the period.
In the middle of a tax period: this option is not recommended because it causes additional work and complications. Splitting a tax period between a legacy software and Odoo complicates the tax filing process since the data from the two systems must be combined.
Prepare the following documents from your previous system(s):
Opening account balances
Open (unpaid) invoices and credit notes
Open (unpaid) vendor bills and refunds
Opening inventory count
Notitie
If journal entries have been created through the use of the Invoicing app or stock moves in a system with an automated inventory valuation, use the Invoicing Switch Threshold feature in the Accounting settings to cancel all journal entries before the specified date to start with a clean general ledger. Additionally, enter the appropriate starting balance on each bank journal’s first statement so that it matches the current bank account balance.
Waarschuwing
Before starting the process of creating opening entries in Odoo, verify that the data meets the following requirements:
The sum of the opening trial balances of all receivable accounts must equal the sum of the open customer invoices minus credit notes.
The sum of the opening trial balances of all payable accounts must equal the sum of the open vendor bills minus refunds.
The sum of the opening trial balance values of all inventory accounts must equal the sum of the value of the inventory (calculated by multiplying the product cost by the product quantity for each product and summing them together).
The opening trial balance itself must be balanced.
Open invoices and bills¶
Companies transitioning to Odoo need to import or manually create their open (i.e., existing but not yet fully paid) invoices and vendor bills (as well as any credit notes or refunds) in Odoo so that no invoice or bill is lost in the transition. Importing these records is largely the same process for both invoices and bills and is done in three steps:
Notitie
For simplicity’s sake, it is recommended to import each invoice/bill with only the total amount due, rather than individual invoice/bill lines. This avoids common errors, such as tax accounts being affected twice for the same record.
Prepare invoices and bills¶
Prepare the open invoices and bills using the import template available in Odoo. To access the import templates:
For invoices and credit notes, go to , click the (Actions) icon, and click Import. Click Template for Invoices to download the template.
For vendor bills and refunds, go to , click the (Actions) icon, and click Import. Click Template for Bills to download the template.
Prepare the following fields:
Field |
Omschrijving |
|---|---|
Relatie |
Customer name (must exactly match a contact record in Odoo) |
Number |
Invoice number (e.g., BILL/2026/00001): This number must not already exist in this database yet; otherwise, it will have to be resequenced |
Reference |
(Optional) Invoice reference (i.e., the name of the document that created this invoice) |
Invoice Bill Date |
Date the invoice was created. Ensure the year in the Number and the year in this field are the same to prevent errors. |
Due Date |
Date the invoice/bill is due. Each invoice/bill can have either a due date or payment terms, but not both. |
Payment Terms |
The payment terms of the invoice/bill. Each invoice/bill can have either a due date or payment terms, but not both. Payment terms are only recommended for open invoices/bills if they are used with payment installments. |
Dagboek |
(Optional) The journal name, if multiple sales journals or multiple purchase journals exist |
Invoice Lines / Label |
A label for the invoice (e.g., |
Invoice Lines / Account |
The receivable clearing account |
Invoice Lines / Unit Price |
The total amount due on the invoice. If partial payments have been made, this is for the remaining amount due (i.e., total minus partial payments). |
Currency |
Currency the invoice was issued in (if different from the company currency). If importing open invoices with different currencies, create a historical exchange rate for each invoice in a different currency before importing. |
Tip
To identify accounts when not using account codes, replace the Invoice Lines / Account field with Invoice Lines / Account / External ID and identify the account by its external ID.
Validate invoices and bills¶
Validate the following aspects of the open invoices, bills, credit notes, and refunds:
The sum of open bills minus the sum of open refunds equals the balance of accounts payable on the accounts payable of the opening trial balance.
The sum of open invoices minus the sum of open credit notes equals the balance of the accounts receivable on the opening trial balance.
Check for negative invoices and bills:
If any invoices are for negative amounts, they are credit notes and should be imported separately as a positive value under the menu. Change the Number from
INV/YEAR/NUMBERtoRINV/YEAR/NUMBER, and (optionally) change the Reference toReversal of: [INV Number].Similarly, if any bills are for negative amounts, they are refunds and should be imported separately as a positive value under the Accounting –> Vendors –> Refunds menu. Change the Number from
BILL/YEAR/NUMBERtoRBILL/YEAR/NUMBERand (optionally) change the Reference toReversal of: [BILL Number].
Check for different currencies: If importing open invoices/bills with different currencies, create a historical exchange rate for the date of creation for each invoice or bill in a different currency.
Import invoices and bills¶
Import the prepared fields from the appropriate menu:
For customer invoices, go to .
For vendor bills, go to .
For credit notes, go to .
For vendor refunds, go to .
The records are all imported as drafts. From the resulting list view, select the imported draft records, click Actions, and click Confirm Entries.
Repeat the process for each record type (invoices, bills, credit notes, and refunds).
Opening inventory¶
Notitie
The process of creating an opening inventory count and the associated inventory valuation is the same regardless of the accounting standard or valuation method.
The process of importing an opening inventory is done in three steps:
Prepare the inventory¶
If product costs were not already included when the products were created, update them, either manually in the Cost field on the product form, or via an import to update it.
Tip
To import products that use a FIFO costing method with multiple quantities at different costs, set the cost on the product form, then import the quantity at that cost. Repeat the process as many times as needed, once for each different cost.
Prepare the opening inventory count using the import template available in Odoo. To access the import template, go to , click the (Actions) icon, and click Import. Click Template for Inventory Adjustments to download the template.
Prepare the following fields:
Field |
Omschrijving |
|---|---|
Product |
The product name or internal reference. If using product variants, identifying the product is more
complicated as multiple variants could have the same product name. In this case, it is
recommended to use the external ID to identify the
product and change the column name to |
Counted |
The quantity of products in the opening inventory count |
Location |
If the Locations feature has been enabled in the settings, it is required to specify where each line of the opening inventory is located. |
Lot/Serial Number |
If the product is tracked by lot or serial numbers, specify the lot or serial number here. Each unique lot or serial number requires its own line. |
Validate the inventory¶
Verify that the sum of the opening trial balance values of all inventory accounts equals the sum of the value of the inventory. The value of the inventory is calculated by multiplying the product cost by the product quantity for each line and summing them together.
Example
Product |
Counted quantity |
Product cost |
Total value |
|---|---|---|---|
Desk |
10 |
$250 |
$2500 |
Table |
8 |
$350 |
$2800 |
Chair |
15 |
$50 |
$750 |
The sum of all the inventory is $6050 ($2500 + $2800 + $750). The value of the inventory account in the trial balance must equal $6050, or if there are multiple inventory accounts, their sum must be $6050.
Import the inventory¶
Import the prepared fields:
Go to .
Import the inventory count.
The records are all imported as drafts. From the resulting list view, click Apply All.
Enter an Inventory Reason (e.g.,
Opening inventory) and a Counting Date.Click Update Quantities.
Opening trial balance¶
The trial balance is the complete list of accounts with their current balance. It is crucial to input this data into Odoo so that accounts have the correct balances going forward.
The process of importing an opening trial balance is done in three steps:
Prepare the opening trial balance¶
Export the trial balance from your legacy software. The trial balance should be a list of all accounts in the chart of accounts, each with its balance as either a debit or a credit.
Prepare the opening trial balance by inserting the information from your legacy software into the journal entry import template available in Odoo. To access the import template for journal entries, go to , click the (Actions) icon, and click Import. Click Template for Misc. Operations to download the template.
Insert the data of the trial balance in the template with the following fields:
Field |
Omschrijving |
|---|---|
Reference |
A reference that identifies this journal entry (e.g., |
Date |
The date of this journal entry |
Dagboek |
The journal this journal entry should exist in. The default miscellaneous journal is recommended. |
Journal Items / Account |
The account code and/or name |
Journal Items / Debit |
The debit value of the account in the company’s main currency. If the line has a credit, this
field should be left blank. Do not enter |
Journal Items / Credit |
The credit value of the account in the company’s main currency. If the line has a debit, this
field should be left blank. Do not enter |
Journal Items / Label |
(Optional) A label that identifies this specific line of the trial balance |
Belangrijk
The Reference, Date, and Journal columns refer to the entire journal entry. As such, they should only be populated for the first line so that one journal entry is created containing all of the journal items within it.
Each line should have only one value in either the Journal Items / Debit or Journal Items / Credit column, and the other column of the line should remain blank. Do not enter
0.00or a negative value in any column.
Tip
To identify accounts when not using account codes, replace the Invoice Lines / Account field with Journal Items / Account / External ID and identify the account by its external ID.
Edit the opening trial balance spreadsheet, replacing the following accounts with clearing accounts:
Accounts Receivable –> AR Clearing (Type = Current Assets)
Accounts Payable –> AP Clearing (Type = Current Assets)
Notitie
In the final validation step, the clearing account types are changed to Off-Balance Sheet, so the account type is not critical.
If you use multiple accounts receivable or multiple accounts payable, they can be merged into a single clearing account.
Example
Reference |
Date |
Dagboek |
Journal Items / Account |
Journal Items / Debit |
Journal Items / Credit |
|---|---|---|---|---|---|
Opening trial balance |
01/01/2026 |
Diversen |
101404 Bank |
10,000 |
|
110100 Inventory Valuation |
30,000 |
||||
777777 AR Clearing |
5,000 |
||||
131000 Tax Paid |
2,000 |
||||
888888 AP Clearing |
4,000 |
||||
220000 Credit Card |
8,000 |
||||
251000 Tax Received |
6,000 |
||||
400000 Product Sales |
24,000 |
||||
690000 Miscellaneous Expenses |
5,000 |
Validate the opening trial balance¶
Verify that the trial balance meets the following requirements:
The sum of the opening trial balances of all receivable accounts must equal the sum of the open customer invoices minus credit notes.
The sum of the opening trial balances of all payable accounts must equal the sum of the open vendor bills minus refunds.
The sum of the opening trial balance values of all inventory accounts must equal the sum of the value of the inventory (calculated by multiplying the product cost by the product quantity for each product and summing them together).
The opening trial balance itself must be balanced.
Import the opening trial balance¶
Import the prepared fields.
The trial balance is imported as a draft. From the resulting list view, open the draft entry, review it, and click Post.
Opening bank and credit card transactions¶
For bank, credit card, and cash accounts, it is important to verify that the journal’s opening statement’s starting balance is updated to reflect the actual value of the account:
Once the first transactions are added (whether manually, via import, or via bank sync), create the opening statement with as many or few transactions as desired. Set the Starting Balance to the correct balance of the bank account before the first transaction.
Notitie
When synchronizing bank and credit card accounts, delete any transactions from before the date of the trial balance to ensure the account balance is correct.
Repeat this process for each bank, cash, or credit card journal.
Final validation¶
To complete the transition to Odoo, verify that all clearing accounts are now balanced, and remove them from reports by changing their Account Type to Off-Balance Sheet after the import.