Odoo does not "close off" your income and expense accounts: it computes the result on its own. The real closing work is elsewhere. Here is the step-by-step, framed for the Luxembourg rules.
In short. Closing a financial year in Odoo is not about "closing off" your income and expense accounts: Odoo computes the result automatically and carries it into equity. The real work is elsewhere: tidy up day-to-day bookkeeping, post the adjusting entries (depreciation, provisions, accruals), allocate the result after the shareholders' meeting, then set lock dates to freeze the year. Here is the sequence, framed for the Luxembourg rules (PCN 2020 chart of accounts, eCDF, FAIA).
Year-end is when many owners discover the real state of their books: the suspense accounts never cleared, the forgotten depreciation, the VAT that does not tie out. In Odoo the mechanics are simpler than they look, once you understand what the software does on its own and what stays a genuine accounting task. Here are the five steps of a clean close in Luxembourg, and the traps to avoid along the way.
What is year-end closing in Odoo?
Year-end closing is the set of operations that finalise a period's accounts and prepare the financial statements. In Odoo it does not go through entries that zero out the profit-and-loss accounts: the software computes the result continuously and shows it in equity. Closing therefore means to reconcile, adjust, allocate the result, then lock.
Step 1: tidy up the day-to-day bookkeeping
A close is not prepared in December, it is prepared all year. Before any adjusting entry, the year's bookkeeping must be complete and reconciled. Three areas carry most of the work.
First, bank reconciliation: every statement line must be matched to an invoice, a payment or an entry. A suspense account still carrying unallocated amounts is the first obstacle to a correct close, because those sums distort the result. Next, customer and vendor invoices: no invoice from the year should still sit in draft, or it will be missing from the result even though the expense or income exists. Finally VAT: the period's returns must be reconciled with the VAT accounts, a check that a clean setup makes easy through the VAT return in Odoo.
A useful habit: print the aged receivable and payable before closing. An old receivable may call for an impairment provision, a forgotten payable may reveal an unrecorded invoice. This is the moment to deal with them, not after.
Step 2: adjusting and cut-off entries
These entries attach to the year what truly belongs to it, regardless of the invoicing or payment date. This is the accounting heart of the close, and Odoo posts none of them for you. The main ones are:
- Depreciation. If your fixed assets live in the dedicated module, Odoo generates the schedules and the depreciation entries under the chosen method. The pace must stay consistent with the PCN 2020 chart of accounts and the asset's real use, a topic we cover in the Luxembourg accounting setup in Odoo.
- Provisions. A provision for a doubtful receivable, for a probable risk or charge: these are posted as manual entries, on a case-by-case judgement.
- Accruals and deferrals. Accrued expenses, accrued income, prepaid expenses, deferred income: a January rent paid in December, a subscription cashed in advance, an insurance premium straddling two years. These entries bring each euro back into the right period.
- The change in inventory, where relevant, from the physical year-end count.
None of these entries is automatic. This is exactly where the difference shows between books kept as you go and a file rebuilt under pressure.
Step 3: the year's result, computed by Odoo
Here is the point that puzzles anyone coming from older software. In Odoo you do not post an entry to "close off" the class 6 and 7 accounts into a result account. The software continuously computes the difference between the year's income and expenses and shows it as current year earnings in the equity section of the balance sheet. You therefore see your profit or loss up to date at any moment, with no technical close first.
When you move into the new year, Odoo automatically carries that result into previous years' unallocated earnings. In other words, the "close" in the software sense is transparent: it needs no manual operation on the result accounts. What the software does not decide for you is the fate of that result. That is the next step.
Step 4: allocate the result after the meeting
The result Odoo computes stays "unallocated" until the shareholders decide. Once the annual accounts are approved by the general meeting, the allocation becomes a manual entry that splits the result between its destinations: the legal reserve, free reserves, retained earnings, and any dividend.
That decision is not fully free. The law requires at least 5 % of the net profit to go to the legal reserve each year, until it reaches 10 % of share capital, before any dividend. We set out this mechanism, with a worked example, in our piece on the legal reserve and profit allocation in Luxembourg. In Odoo, the allocation entry is posted at the opening of the new year, once the meeting has been held, not before.
Want to see your distributable result and the state of your reserve before the meeting, not eight months after the close?
Talk about your closeStep 5: set lock dates and archive
Once the year is reliable, it must be frozen. Odoo lets you set an entries lock date: beyond it, no one can change or create an entry on the closed period, which protects the integrity of the filed accounts. You set a tax lock date the same way after each VAT return is filed, to stop a backdated entry from contradicting a return already sent.
Two habits round off the close. Generate a test FAIA on the closed year and have it reviewed: it takes little time and turns a possible tax audit into a formality. And prepare the file for the annual accounts filing: Odoo produces the balance sheet and the profit-and-loss account on the PCN 2020 structure, in the format the eCDF platform expects, but the filing at the RCS stays a step to carry out with a LuxTrust authentication.
The Odoo closing checklist
| Step | What you do | What Odoo does |
|---|---|---|
| Day-to-day bookkeeping | Bank reconciliation, invoices out of draft, VAT reconciled | Assisted matching, reconciliation proposals |
| Adjusting entries | Provisions, accruals, change in inventory (accounting judgement) | Depreciation generated from the Assets module |
| Year's result | Nothing to close off manually | Automatic computation and carry-over into equity |
| Profit allocation | Manual entry after the meeting (legal reserve, retained earnings, dividend) | Records the entry, updates the balance sheet |
| Lock and archive | Set the lock dates, prepare the filing | Period locking, FAIA export and financial statements |
The mistakes we see
On the files we take over, a few gaps show up at every close. The first is the suspense account never cleared: dozens of bank lines left on a transit account, inflating or shrinking the result for no traceable reason. The second is the invoice left in draft: it exists in Odoo, but until it is validated it enters neither the result nor the FAIA. The third is the close set too early: lock dates are placed before depreciation or the allocation is posted, and the period then has to be reopened, which breaks the whole protection logic. The last, rarer but costly, is the profit allocation entered twice, once by Odoo's automatic carry-over and once by hand, which unbalances equity.
None of these problems is serious caught in time. All become so when found under a filing or audit deadline. A calm close depends less on Odoo than on how steadily the books are kept during the year.
Frequently asked questions
Do you need entries to close off the income and expense accounts in Odoo?
No. Odoo computes the result continuously and shows it in the equity section of the balance sheet, then carries it automatically into unallocated earnings at the year change. No entry to zero out the class 6 and 7 accounts is needed, unlike some older software.
How do you record profit allocation in Odoo?
With a manual journal entry posted after the accounts are approved by the general meeting, at the opening of the new year. It splits the unallocated result between the legal reserve, free reserves, retained earnings and any dividend, respecting the minimum 5 % allocation to the legal reserve.
How do you prevent changes to a closed year in Odoo?
By setting an entries lock date: beyond that date, creating and editing entries on the period is blocked. A separate tax lock date also protects periods already declared for VAT.
Does Odoo file the annual accounts at the RCS?
No. Odoo produces the balance sheet and profit-and-loss account on the PCN 2020 structure and generates the FAIA export, but the submission via eCDF and the filing at the RCS stay steps to carry out, with a LuxTrust authentication.
Read on
- Legal reserve and profit allocation in Luxembourg
- Filing annual accounts in Luxembourg: deadlines, late fees and preparing them in Odoo
- Setting up Luxembourg accounting in Odoo: PCN, FAIA and eCDF
- FAIA export from Odoo: answering an AED audit
- Odoo in Luxembourg: is it the right ERP for your SME?
Why Advena?
We keep the books of Luxembourg SMEs of 1 to 50 employees inside the Odoo we deploy ourselves, on a fixed fee from 325 € per month, all in: day-to-day accounting, VAT and eCDF filing, annual accounts and RCS filing, payroll, a monthly review with a dedicated manager and permanent real-time access to your books. In practice, the close is not a June stress peak: adjusting entries are prepared through the year, and you reach the meeting with accounts already done. For a complex holding or transfer-pricing issues, we will tell you plainly that this is not our ground.
Want to reach your next close with books already kept and a year ready to lock?
Book a free diagnosticInformation current as of September 2026. The legal reserve rule stems from the amended law of 10 August 1915 on commercial companies (Legilux); the filing duties and the eCDF format come from the Guichet.lu guides. The behaviour described relates to Odoo 19, the latest stable version. This article is informational and not personalised accounting advice.