Accounting and Finance
Simple yet powerful, Odoo Accounting module can be best described in these two words. You
can process your transactions quickly using Odoo. Odoo’s accounting is connected with all other
apps of Odoo like Sale, Purchase, inventory and Human resource. This makes working with Odoo
more simple and quick. To enable accounting features in you Odoo ERP you have to install
Accounting and finance app from Odoo Apps.
There are many things which make Odoo a unique product than any other ERP Accounting
modules. When we compare Odoo Accounting with other ERP suites like Microsoft Dynamics and
NetSuite we can see many features which Odoo alone have. For example, Quick reconciliation,
Automatic Sync, Batch Send, Third party follow-up, Payment automation, Alerts, and Expenses
etc. features can be found in Odoo. But neither NetSuite nor Dynamics support all of these
features but only some of them. Since all accounting transactions are associated with customers
or suppliers, you get reports to perform analysis per customer/supplier such as the customer
statement, revenues per customers, aged receivable/payable etc. Another exemplary option
available in Odoo is its business intelligence engine which will allow you to navigate through
company data in more organized manner. The graphs and diagrams plotted by BI engine is indeed
a useful tool in decision making. Of course, Odoo is mobile too. You can use it to check your
accounts on the go.
Following is the way Odoo deals with typical accounts and transactions.
Double-entry bookkeeping
Odoo automatically creates all the journal entries for each of your accounting transactions and
Odoo uses double-entry bookkeeping system i.e. all journal entries are automatically balanced.
Accrual and Cash Basis Methods
Odoo support both accrual and cash basis reporting. This allows you to report income / expense
at the time transactions occur.
Multi-companies
Odoo allows to manage several companies within the same database. Each company has its own
chart of accounts and rules. You can get consolidation reports following your consolidation rules.
23
Multi-currencies
Every transaction is recorded in the default currency of the company. For transactions occurring
in another currency, Odoo stores both the value in the currency of the company and the value in
the currency of the transaction. Odoo can generate currencies gains and losses after the
reconciliation of the journal items.
International Standards
Odoo accounting support more than 50 countries. The Odoo core accounting implements
accounting standards that is common to all countries and customized apps are available to
accommodate the specificities of individual country; like the chart of accounts, taxes, or bank
interfaces.
Accounts Receivable & Payable
By default, Odoo uses a single account for all account receivable entries.
Wide range of financial reports
In Odoo, you can generate financial reports in real time. Odoo's reports include:
Performance reports (such as Profit and Loss, Budget Variance)
Position reports (such as Balance Sheet, Aged Payables, Aged Receivables)
Cash reports (such as Bank Summary)
Detail reports (such as Trial Balance and General Ledger)
Management reports (such as Budgets, Executive Summary)
Import bank feeds automatically
Odoo makes bank reconciliation easy by frequently importing bank statement lines from your
bank directly into your Odoo account.
Inventory Valuation
Odoo supports both periodic (manual) and perpetual (automated) inventory valuations.
Easy retained earnings
Odoo automatically calculates your current year earnings in real time; so that no year-end journal
or rollover is required. This is calculated by automatically reporting the profit and loss balance to
your balance sheet report. [7]
24
System Users
Basically, there are three types of users in Accounting module, who have different type of access right to
the system.
● Billing
● Accountant
● Adviser
When we move from Billing Adviser, user will get more rights in application
The main thing a user with only ‘Billing’ access right can do is
create and process invoices.
Billing user can also create new customers and vendors,
Access product information, taxes, and fiscal positions.
25
This is all the menus available for a ‘Billing’ user.
26
Next level of access right is ‘Accountant’. Along with the rights available for billing user,
Accounts has more other rights.
Accountant have access to dashboard of accounting
Accountant can record payments from customers
and vendors.
He can generate all the PDF reports available.
Also Accountant can configure financial reports.
27
Advisor level user have more rights than any other users in Odoo accounting.
In addition to all the rights Accountant have,
Advisor can create products and services, they can create journal entries, Manage chart
of accounts, manual payments and invoice reconciliation, and advisor can make manual
tax adjustment.
Advisor level user can create new journals and new payment terms in Odoo.
28
Basic Configurations
First, we have to set up general configurations of the Accounting system. You can find the
basic and important configuration below.
Accounting>Configuration>Settings-> Chart of Accounts
Here we have selected the Indian chart of account. This is a Chart of account that comes along
with Odoo. Odoo will automatically select Chart of account related to the country you selected
while creating a database.
There is more than 50 chart of accounts comes with Odoo. You can choose as per your locality
and need.
Accounting>Configuration>Settings-> fiscal Year
In this section we can set-up our financial year (Fiscal Year) related controls.
From Odoo version 9 onwards, Odoo removed financial closing. But we can
configure financial year last day
Lock Entries are to prevent editing accounting entries
Lock Date for Non-Advisers means a Non-Adviser level user cannot edit an accounting entry
created on this date and prior. Usually, we use this for closing a period inside an open financial
year.
Lock Date means, not even advisor level user can edit accounting entries created on or prior to
this date.
29
So the benefit of this approach is we don't have to close financial year to get clean Profit &
Loss and Balance Sheet report. Reports will be always up-to-date without closing and
generating opening entries. It makes Odoo’s reporting much easier and powerful.
Accounting>Configuration>Settings-> Accounting and Finance
This section is very important.
This is where we are configuring what are the features we need in our Odoo accounting system.
First thing is Default Company Currency.
You can change the currency rate by clicking this button. It will open a window like
this
By clicking on ‘View Rates’ button at the top, you’ll see a list view of currency rates.
30
Add the current rate of your currency here by clicking <Create> button.
Note: All the options those are labeled as are available only in enterprise version
of Odoo. We will not discuss those things here.
Accounting>Configuration>Settings
● Analytic accounting.
This feature can be used for many purposes like Manage Cost center concept, Invoice
time spend on a task, Performance Analysis. This feature is also using for the budget
management.
We will discuss these matters later
● Asset management.
Choosing this feature let you purchase your asset and manage the depreciation of
those assets
● Budget management.
● Allow Tax Cash Basis.
Odoo supports both accrual and cash basis approach. This option allows your system
to generate report in cash basis.
31
Accounting>Configuration>Settings>Multi Currencies
Enabling this option allows handling multiple currencies in Odoo. System will give a new
option to select Rate Difference Journal when you check this checkbox.
If we receive payment against an invoice after a month of invoice creation, the exchange rate
most probably changed. This Rate Difference Journal is used to create journal entry of loss or
profit caused by the difference of currency exchange rate.
Accounting>Configuration>Settings>Invoicing and Payment
Under this section, if you check Allow pro-forma invoices, it will let you set your invoices into
a state called ‘Pro-forma’.
If you have to set up any restriction or a warning message for any partner while you create an
invoice for him, select An informative or blocking warning can be set on a partner option
under warning.
32
The tax selected as Default Sale Tax and Default Purchase Tax will be assigned as Customer
Tax and Vendor Tax of a Product/Service When you create a new one.
Configure payment acquiring methods Button will redirect you to the list of all Payment
acquires available in Odoo. You can install the payment acquirer from that list and you can also
configure them.
Enabling Use Anglo-Saxon Accounting will change your system’s behavior into Anglo-
Saxon. By default, Odoo uses continental accounting.
Bank account prefix and Cash account prefix are used to generate codes for bank and cash
accounts. And # of Digits represents the number of digits in account code.
You have two options in Tax calculation rounding method
● Round per Line
Tax amount will be rounded in each invoice line.
● Round Globally
Rounding occurs only on total tax amount.
Overdue payments Message is used on overdue report of partners. So that you can
generate the report and sent it to your customer/supplier without making any modification.
33
Let’s move to the other parts of configuration.
Configure Customer/Supplier
How to configure a customer and other related things are covered under CRM
module, however Accounting related fields is just mentioning here.
As we see in the picture, we can select Customer Payment Term and Vendor Payment
Term for this client. Total Receivable and Total Payable are only visible in developer
mode.
We can select the Degree of trust you have with this partner and also Fiscal Position.
Account Receivable and Account Payable will have a default value. But you can
change if you want.
Configure Products
Under the Invoicing tab of product form, we have
● Income Account
● Expense Account
● Customer Taxes
● Vendor Taxes
34
Add New Account
While we install Odoo, we had the option to choose our country. Using that data Odoo will install
that country specific COA(Chart of Accounts). If you need more accounts in COA. You can create
that from ‘Chart of accounts’ menu.
Accounting -> Advisor -> Chart of Accounts
We should be careful while selecting the Type of accounts. You can use the details
provided on the right side of the window to select correct type.
If we select any tax as Default Tax on an account, and we don’t have any tax
mentioned on product, then system will select this tax by default on invoices.
35
We have to check the Allow reconciliation option. This account is used for
Invoice and payment matching and reconciliation.
If we mark an account as Deprecated, we cannot use that account anymore. We
will get a warning message like this.
If you select an Account Currency, the system will force all moves for this account must have
same currency.
Configure Taxes
In Odoo we can create different type of taxes. To create a new tax or list all the taxes
in your system,
Accounting > Configuration > Accounting > Taxes
36
In the above picture you can see the mandatory fields for a tax.
● Tax Name
Name of the tax
● Tax Scope
Where to use this tax. If you select ‘None’, you can only use this tax with other tax
group.
● Tax computation
Odoo have four different types of tax computation
○ Group of taxes
○ Fixed
○ Percentage of price
○ Percentage of price tax included
Some other options are
● Tax account
The account, that will be used in the invoice tax lines. Later journal entries are
created using this account. If we leave it empty, then Odoo will take the default
debit/credit account of Journal.
● Tax account on refunds.
The account used in case of refund entry.
● Label on Invoices
This can be used on the invoice report to represent this
tax. We can add custom tags to create custom reports.
37
● Include in analytic cost
If we set this option, then the amount computed by this tax will assign to the same
analytic account mentioned the invoice line.
● Included in price
Set this option if this tax is included in the unit price of the product/service.
● Affect base of subsequent taxes
If you set this option, Base amount of subsequent taxes will be sum of current base
amount and tax amount of this tax.
● Tax adjustment
Set this option if you want this tax to be used in tax adjustment wizard.
● Group of taxes
This option lets us configure the tax as collection of many child taxes. Odoo will make
visible the table to select the child taxes when you select this option as tax computation
method.
Configure Fiscal Positions
Odoo can handle Multi Company and multi-currency concepts. Those who are dealing with us,
i.e. Customers and Suppliers, may be operating from another country or states. So the laws
and regulations will be different for them. Fiscal position comes in handy in this case. We can
map taxes and accounts using fiscal position.
38
Accounting > Configuration > Accounting > Fiscal Position
Tax mapping is another useful option to configure taxes.
For example:
Here this product’s vendor tax is configured as VAT 10%. What if I cannot purchase this product
from some vendors with this tax rate (assume the tax rate is more than 10%, let’s take it as
12%). In this case we can use tax mapping of fiscal position
39
Let’s specify this fiscal position on partner master.
Same we can do with accounts.
40
Configure Bank Accounts
Accounting > Configuration > Accounting > Bank Accounts.
Here you can see the list of all the bank accounts configured in this system. To configure a new one
click on the <Create> button. It will open a form to fill the details needed.
Show in Invoice Footer, if we enable this feature, this account details will be displayed on
Invoices and Sale orders.
Debit method is the method of collecting money and Payment method is the method for
sending money
Different modules provides different methods, select according to the need.
Create/Select the bank from list of banks
41
Configure Journals
Accounting > Configuration > Accounting > Journals.
Mandatory fields are
● Name
● Type
There are five types of journals in Odoo.
○ Sale: Using for customer invoice journal
○ Purchase
○ Cash
○ Bank
○ General
● Short Code:
Odoo will create a sequence number for each journal we create. Journal entries of this
journal uses this short code as the prefix of generating sequence.
There are some other fields
● Default Debit Account:
It is the default account for debit amount.
● Default Credit Account:
It is the default account for credit amount.
● Currency
We can specify the currency used to enter statements
42
here. Some additional options are available under ‘Advanced Settings’
Under Control-Access area, we can set some control on this journal. But these are only visible
in Developer Mode
● Account Types Allowed:
If we mention any accounts here, this journal can only create entries to that type of
accounts
● Accounts Allowed:
Just like types, if we mention accounts here, Journal can’t use accounts other than
that.
● Show Journal on dashboard:
Checking this option will add this journal details in to dashboard as a tile
Configure Payment Terms
We may have to use different payment terms like, immediate payment, 30% advance and
balance after one month, etc. in different situations. We can manage this with Odoo’s
payment terms
43
Payment term have different due types.
● Balance
● Percentage
● Fixed amount
Also different due date computation parameters
● No of day(s) after the invoice date
● No of day(s) after the end of invoice month
● Last day of following month
● Last day of the current month
We can use the combination of these to create a new payment term.
For example:-
Payment term: 30% Immediate and balance at the end of the current month. In this case,
we have to create a payment term with two of the above due types
44
As you can see in the above picture, we have added 'Percentage' and 'Balance' lines under
terms.
In percentage,
We have to select '0 Day(s) after the invoice date' and put the value as 30.0
In balance,
We choose the 'Last day of current month’.
45
Accounting Dashboard
Odoo have a nice and simple dashboard. You will get status of your accounts from the
dashboard itself.
You can also go to many other parts of your accounting app from this dashboard.
You can create new customer invoices, vendor bills, new Bank statements, and new cash
transactions from this dashboard.
When you click on ‘More‘, you’ll see more related options.
46
There is a lot of features accessible from Dashboard. You can go to the list of different records,
create new records, you can do payments matching from dashboard itself.
47
Creating and Processing an Invoice
Accounting> Sales> Customer Invoice> Create
Invoice in Odoo have five states.
1. Draft:
Draft status is used when a user is creating new or unconfirmed invoice
2. Pro-forma:
Pro-forma status is used when invoice don't have a sequence number. This status is not always
active. We have to enable this from account settings by checking “Allow pro-forma invoices“
3. Open:
An invoice becomes open when the user validates the invoice. From this stage onwards invoice
will have a sequence number generated by Odoo itself. Invoice will remain in this state till
the user registers payment for the full amount against this is voice.
4. Paid:
When the invoice is fully paid.
5. Cancel:
Cancel status is used when user cancels an invoice.
48
You can see the current status of the invoice in the status bar
Click Add an Item to add products to your Invoice
You can see other information related to this invoices under ‘Other info’ tab
Still our invoice is in ‘Draft’ state. A draft invoice won’t make any difference in accounting.
Accounting entries are created only after the validation of Invoice.
Validating an invoice will confirm the invoice. It will create a journal entry, invoice will get a
sequence number, and invoice state will be in ‘Open’. Now we can make the payment against
that invoice.
You can validate an Invoice by clicking ‘Validate’ button.
See the sequence code and journal entry created for this invoice in the picture below
49
This is the journal entry
See the debit and credit posting of the entry from this picture.
50
By clicking the ‘Register Payment’ you can record a payment against this invoice.
We can choose a payment journal (cash/bank/..) here and the payment amount will be the full
residual amount of that invoice. If we are recording a partial payment, then we can change the
value there.
State of the invoice will become ‘Paid’ once we record the full payment against it.
If the customer made any advance payment or he has any previous balance in our system, Odoo
will inform you that this way
51
You can assign that outstanding balance by clicking add button on that outstanding payment
Payments
You can Create/List all the list of customer payments and vendor payments from payments
menu.
Payments have four states
● Draft
● Posted
● Sent
● Reconciled
A Draft payment becomes Posted when the user clicks on validate button. Becomes Reconciled
when it is assigned against an invoice.
52
Manual Payment & Invoice Matching
This feature allows user to match the payments and invoices and reconcile them. Odoo itself will select
the most matching entry. If you want to change we can do that.
You can also access this from the dashboard.
53
Manual Tax Adjustment
This feature is used to manually correct the VAT declaration through a miscellaneous operation
Here you can only select the taxes marked as ‘Tax Adjustment’.
Submitting data will create a Journal entry with the details provided
Working with Bank Statement
You can create a new bank statement and map those transactions with the general ledger
transactions in Odoo.
Using the New Statement button we can create a new bank statement. That will open up a form
like this
54
Here you can put all the details of transactions. A bank statement have two states
● New
● Validated
We have to reconcile the statement to make it Validated.
Odoo will select the most matching bank transaction record from general ledger same as
payment matching.
Clicking the Reconcile button will complete the process.
55
Asset Management
Odoo’s asset management allows you to track your fixed assets like, equipment, furniture,
vehicles, land, etc. You can purchase, sell and manage depreciation using Odoo
We can configure asset categories in Odoo. This will make things easier for normal users by
providing complex details in category and use it in assets.
Create Asset Type
Accounting > Configuration > Management > Asset Type
Advisor can give the appropriate accounts for generating journal entries here. He can also
provide details to compute the depreciation. There are many things to provide
● Time method based on: Method to compute the depreciation date and number of
depreciation lines. We have two options here.
○ Number of depreciation: by choosing this option we are fixing the number of
depreciation and the time between two depreciations.
○ Ending date: This way, instead of giving the number of depreciation. We give
the date that depreciation will not go beyond
56
● Computation Methods: Here we can choose the method to use for computing the
depreciation amount. Here also we have two options
● Auto-confirm Assets: Ticking this option will auto confirm all the assets comes under
this category when they created from the invoices.
● Group Journal Entries: if you want to group the journal entries generated using the
category, tick this option.
Create Asset
We can create an asset in two ways:
Manually
From Supplier Invoice To create an asset manually,
Accounting> Advisor > Assets
57
Here we can fill the details of your asset
● Salvage value: this is the amount you plan to have that cannot depreciate
● Vendor: The vendor from we purchased this asset
● Invoice: The invoice related to the purchase of this asset
An asset have three states
● Draft
● Running
● Close
Once we created an asset, we should confirm it. We can also click on the Compute Depreciation
button to check the depreciation board before confirming the asset.
Then the asset will change to Running state you can see the depreciation board
58
The red button indicates that related journal entry is not created and green bullet means that
the journal entry has created for this line
You can sell or dispose the asset using the Sell or Dispose button on status bar. It will create a
journal entry to post the full expense of the asset. But it won’t create a sale entry or an invoice.
To modify the depreciation of an asset, Click on the <Modify Depreciation> button and provide
the values accordingly.
Creating an asset from supplier invoice is easier.
We just have to give the asset category. Odoo will create asset based on the data in category
and invoice. If we set asset category in product itself, then asset category in invoice line will be
automatically selected.
Asset will be automatically confirmed if we tick the asset category option Auto-confirm Assets.
59
Accounting> Advisor> Generate Asset Entries, is an option to trigger the generation
of asset depreciation entries
Analytic Accounting
Odoo have a feature called analytic accounting. This is an advanced feature that we can use for
different purposes. Like,
● Cost center concept
● Timesheet invoicing
● Project management
● Budget management
We have to enable analytic accounting first from settings to use this feature.
We have to create analytic accounts here,
Accounting> Configuration> Analytic Accounting>Analytic Account.
You can select a customer for an analytic account. Then, this will be added to the name of
analytic account. It will make the selection of analytic account easy.
60
Now you can select this analytic account in Invoices.
Let’s check the changes this makes.
Here we can see that each debit entry have analytic entries selected. This will create an analytic
entries in Odoo. You can see the analytic entries under Accounting> Advisor> Analytic Entries.
61
These are the analytic entries created. Unlike general accounting journal entry, analytic entry
don’t have debit/credit. It is handled with negative and positive value for ‘amount‘.
By clicking this Cost/Revenue smart button we can see the analytic entries of that account.
62
Budget Management
Budget management plays an important role in the success of any business. We can check our
financial status with the planned details using Odoo’s budget management section. Odoo uses
its general and analytic accounting in budget management.
We need to configure three things to work with Odoo budget management
Budgetary Positions
Analytic Accounts
Budget
Budgetary positions are a kind of mapping the general accounts with budgets Let’s create a
budgetary position.
We can create budgetary position from Budget form itself,
Or we can create from
Accounting>Configuration>management>Budgetary Position
We are now creating a budgetary position Income.
We have selected some General accounts under this budgetary position. Same way we are
creating another one, Expense.
63
Now we have two budgetary position in our system.
The role of analytic accounting comes when we have to get the details based on a specific
Customer/Supplier or a project. We already discussed how we can create an analytic account.
So we are moving to the configuration of budget.
As we can see on the picture, we have to give a Name for budget and also a
Period. Then we must add our budgetary positions we already created to this
budget.
64
At that time we have to provide our planned amount to that position.
Add other necessary fields you need.
Now you can see there is four columns in the table
Planned amount: The amount we gave
Practical Amount: It is the actual amount
Theoretical amount: It is the amount we could have spent/ received till today
“If the planned amount is 12000 then for one year, then on January 31st the
theoretical amount will be 1000. On May 31st it will be 5000, On December
31st it will be 12000.”
Achievement: percentage of practical amount with respect to theoretical
amount.
We have to Confirm and approve the budget
You can check the budget any time.
65