Accounting Pro Closing for Odoo 19 Community documentation
A guide to Accounting Pro Closing: close checklists and closing periods, the review and the automatic checks, closing and reopening with the lock dates of Odoo, the audit log, the year-end closing entry and the profit appropriation, and the Close Status report on screen, in PDF and in Excel.
Documents version 1.0.0Updated Oct 29, 2026
Start here
Who it is for: accountants, finance managers and controllers who close the books, and auditors who ask how and when they were closed. The add-on counts and lists what is in the way and never corrects an entry. It posts only the year-end closing entry (and its reversal) and the profit appropriation, and it moves the lock dates when you close or reopen a period. It is an accounting tool, not legal advice: closing rules and reserve limits depend on the law that applies to your company, so check them with your auditor.
The examples: the pictures show two demo companies on 28 October 2026. Atlas Trading Co. (USD, fiscal year = calendar year) has the 17 closing periods of 2026: January to September and Q1 to Q3 are closed, October is under review, the rest is open. Atlas Logistics LLC, a sister company (USD, fiscal year ending 30 June), made the closing entry of its year 2024-2025 on 2 September 2025 and appropriated the profit on 25 September 2025; its year 2025-2026 is not closed yet. Omar Khalid (accountant), Layla Hassan (finance manager) and Amira Saleh (administrator) are the people you see. The numbers in the text are the numbers in the pictures. Menu paths start at the menu bar of the Accounting app.
What you get
| Feature | What it does |
|---|---|
| Closing periods | Months, quarters and fiscal years, made for a whole fiscal year in one step: Open, In review, Closed, Reopened. |
| Checklists | Templates of tasks (Month-end close comes with the add-on). Each task has an assignee, a due date and, if you want, an Accounting Pro report that opens on the dates of the period. Mandatory, or optional and skipped with a reason. |
| Ten automatic checks | They count what is in the way: draft entries and invoices, unreconciled bank transactions, the trial balance, suspense accounts, items without a partner, entries added to closed periods and the year-end entry. Depreciation and VAT returns need their add-ons. |
| Review and reminders | The checks run when the review starts, on demand, every day and at the close. An overdue mandatory task gets a reminder. |
| Close in order, reopen | A period closes when its mandatory tasks are done, by default after the earlier ones. Closing managers reopen it with a reason. |
| Lock dates, the supported way | A close moves the lock dates you choose through the company record of Odoo, so its own checks run. A reopening moves them back. |
| Audit log | Who, when, why and the lock dates before and after. Nobody can change or delete a line. |
| Year-end closing | A wizard with a preview makes one entry that brings every income and expense account to zero and puts the result on the retained earnings account. It can be reversed. |
| Profit appropriation | The statutory reserve (with its limit), dividends, other reserves and the remainder in one entry, which can be reversed. |
| Reports that know the closing | The profit and loss, cash flow, ratios, changes in equity and the dashboard keep the real profit of a closed year. The balance sheet, trial balance and ledgers show the books after the closing. |
| Close Status and the card | A report with one line per period (screen, PDF, Excel, favorites, schedules) and a Month-end close card on the dashboard. |
| Settings, groups, Arabic | Settings for each company, two access groups, translated. Period names are written in every installed language. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Accounting Pro 1.0.2 or later (taqnix_accounting_pro), which needs Accounting (account). Nothing from Odoo Enterprise is needed. |
| License | OPL-1 (Odoo Proprietary License v1.0) |
It was built and tested on Odoo 19 Community. It was not tested on Odoo Enterprise, which has its own Lock Dates screen. A few features rely on more:
| Feature | What it needs |
|---|---|
| Setting lock dates (Close the period, Reopen) | The person who closes must be an accounting Administrator in Odoo. A closing manager without that right can close periods only while the settings set no lock date. |
| Depreciation posted, VAT return filed | The Fixed Assets and GCC VAT Returns add-ons. Without them the two tasks are greyed in the template and left out of new periods. |
| PDF files | wkhtmltopdf, as for every Odoo PDF report. |
| Notes and reminders by email | Odoo sends them by email or in its inbox, as each person's notification preferences say. Email needs an outgoing mail server. |
Install
- Unzip the package. Inside is
taqnix_accounting_pro_closing.zip; unzip it to get the foldertaqnix_accounting_pro_closing. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search Accounting Pro Closing and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_accounting_pro_closing --stop-after-init
Accounting administrators see the new menus at once. Then:
- Open Configuration → Settings, block Closing, and choose the lock dates a close sets. With the standard settings a close moves the global lock date. Nothing is locked before you close your first period.
- Open Accounting → Closing → Closing Periods and press Create periods for the fiscal year.
- Open a period and press Start the review.
Close checklists
A template has a name, a company (empty: offered to every company), notes and task lines:
| Column | What it does |
|---|---|
| Task, Mandatory | The name, and whether the period can be closed without it. An optional task is skipped with a reason. |
| Kind, Check | Manual: someone presses Done. Automatic check: a check decides (chapter The automatic checks). |
| Report to open | An Accounting Pro report that the task opens on the dates of the period. |
| Default assignee | Who gets the task. Empty: the responsible of the period. |
| Due (days) | Days after the end of the period, from -90 to 365. |
| Months, Quarters, Years | Which periods get the task. At least one. |
| Description | A hidden column: what to do, shown on the task. |
A line that needs an add-on that is not installed (Fixed Assets, GCC VAT Returns) is greyed and left out of new periods; a note under the list says so. Duplicate in the gear menu copies a template with its lines, Archive hides it, and the settings name the default template of each company. A change reaches new periods only: Load the checklist on a period adds the tasks it lacks and never changes or removes one.
The template of the demo. All means months, quarters and fiscal years. Omar Khalid is the default assignee of the first eleven rows and Layla Hassan of the last seven.
| Task | Kind | Report | Due | For |
|---|---|---|---|---|
| Post or delete the draft journal entries | Check: draft entries | – | 2 | All |
| Post the invoices and vendor bills of the period | Check: draft invoices | – | 2 | All |
| Reconcile the bank accounts | Check: bank | Bank Book | 3 | All |
| Clear the bank suspense and transfer accounts | Check: suspense | General Ledger | 3 | All |
| Give a partner to every receivable and payable item | Check: partners | Partner Ledger | 3 | All |
| Check that the trial balance balances | Check: trial balance | Trial Balance | 4 | All |
| Check that nothing was added to the closed periods | Check: closed periods (optional) | – | 4 | All |
| Post the depreciation of the fixed assets | Check: depreciation (greyed) | – | 2 | All |
| Book the accruals and prepayments | Manual | Trial Balance | 3 | All |
| Review the aged receivable and follow up the overdue customers | Manual (optional) | Aged Receivable | 4 | All |
| Review the aged payable and plan the payments | Manual (optional) | Aged Payable | 4 | All |
| Review the profit and loss against the previous period | Manual | Profit and Loss | 5 | All |
| Review the balance sheet | Manual | Balance Sheet | 5 | All |
| Review the tax report of the quarter | Manual | Tax Report | 10 | Quarters |
| File the VAT return | Check: VAT (greyed) | – | 28 | Quarters |
| Post the year-end closing entry | Check: year-end | – | 60 | Fiscal years |
| Review the statement of changes in equity | Manual | Statement of Changes in Equity | 60 | Fiscal years |
| Review the cash flow statement | Manual (optional) | Cash Flow Statement | 60 | Fiscal years |
A month gets the first 13 tasks. A quarter also gets the tax report review and the VAT return, and a fiscal year the three year-end tasks. With the two greyed tasks left out, a month has 12 tasks, a quarter 13 and the fiscal year 15: the numbers you see in Close Status.
Closing periods
The list shows the name and type, the end, the status, the progress bar, the open mandatory tasks, the failed checks (red above zero), the close deadline (red when it is past), the responsible, who closed the period and the lock date. Start, Fiscal year, Closed on and Company can be added. Closed periods are grey and periods under review bold. Filters: My periods, Open, In review (reopened ones too), Closed, Not closed, Months, Quarters, Fiscal years, With failed checks, Past the deadline. Group by: Fiscal year (on at the start), Type, Status, Responsible, Company. The second view is a card view by status.
Create periods (closing managers) opens a dialog:
- Fiscal year of: any day of the fiscal year (with several companies, choose the Company first). It proposes today, or the first day of the next fiscal year when the periods of this one exist already.
- Tick Months, Quarters and Fiscal year as you wish (all three at the start).
- Choose the Checklist (the default of the company) and the Responsible (you).
- Read the blue line, for example 17 periods will be created, 0 exist already, and press Create periods.
The periods follow the fiscal year of the company: 12 months, 4 quarters and the year, named in every installed language (January 2026, Q1 2026, FY 2026). Each gets the tasks of the checklist, with the assignee of the task (the responsible of the period when the template has none) and the due date. Running the dialog again only adds what is missing. All new periods get the same responsible: change it on the period afterwards, as the demo does for the quarters and the year.
By hand. New makes one period: a month is at most 31 days, a quarter 92, a fiscal year 366. Periods of one type never overlap. Then press Load the checklist. Deleting. A period that was never reviewed can be deleted; one that was reviewed or closed stays for the audit trail.
Reviewing a period
| Button | Who and when | What it does |
|---|---|---|
| Start the review | Closing users, on an Open period | The status becomes In review, every check runs and the audit log notes Review started. Start when you wish; in the demo Omar Khalid starts the day after the period ends. |
| Run the checks | Closing users, until closed | Runs every automatic check. |
| Load the checklist | Closing managers, until closed | Adds the tasks of the template that the period lacks. |
| Close the period | Closing managers, In review or Reopened | Chapter Closing a period and the lock dates. |
| Reopen | Closing managers, on a Closed period | Chapter Reopening a period. |
The form. The smart buttons are Tasks (with their number), Audit log and Close Status (the report of the fiscal year). The fields are the type, dates, company, responsible and template, then Progress, Open mandatory tasks (the period cannot close while there are any), Failed checks, Close deadline and Days left; after a close also Closed by, Closed on, Lock date and Times reopened. Once the review has started, the company, type and dates are fixed. The tabs: Checklist; Lock dates, the lock dates of the company today and Locked now (yes when the global or hard lock date covers the end of the period); Audit log; Notes. The chatter keeps the notes of closes and reopenings.
The checklist. One row per task: name, a tick when mandatory, assignee (you can change it here), due date (red when overdue), result and status. Rows are green when done, red when a check fails and grey when skipped. The buttons: Done (a manual task), Check (runs a check), Show (opens the records of a failing check), Report (opens the report on the dates of the period), Skip (an optional task: a dialog asks the reason, which goes to the audit log; a mandatory task is never skipped) and Reset (a done or skipped task goes back to To do).
A manual task goes To do, In progress (the button Start of its form), Done. An automatic task has no Done button: it is Done exactly while its check passes, and goes back to To do when the check fails again. The Result reads Passed or, for example, 3 to fix. Failed checks counts tasks, not records.
The automatic checks
| Check | What it counts | It passes when |
|---|---|---|
| No draft journal entries in the period | Draft journal entries dated in the period. | There are none. |
| No draft invoices or bills in the period | Draft invoices, credit notes, bills and receipts, by invoice or bill date (accounting date when it has none). | There are none. |
| Bank transactions reconciled up to the end date | Unreconciled bank transactions up to the end date: the rule Odoo applies before a global lock date, branches included. | There are none. |
| The trial balance balances at the end date | The posted items up to the end date: debit against credit. | They are equal. Odoo refuses unbalanced entries, so it fails only after imports made outside Odoo. |
| Bank suspense and transfer accounts are zero | The posted balance at the end date of the suspense accounts of the active bank, cash and credit card journals, and of the suspense and internal transfer accounts of the company. | Every one is at zero. |
| Receivable and payable items have a partner | Posted receivable and payable items of the period without a partner. | There are none. |
| No entries added to closed periods after their close | Entries dated in another closed period and created after its close. | There are none. |
| The year-end closing entry is posted | A posted year-end closing that ends on the last day of the period, and every income and expense account of that year once the closing entries are counted. | The closing is posted and those accounts are at zero. |
| Depreciation posted (Fixed Assets add-on) | Unposted depreciation lines of running assets, up to the end date. | There are none. |
| VAT return filed (GCC VAT add-on) | The filed VAT returns that cover the period. | They cover every day of it. |
Show opens the records counted: for the trial balance the entries that do not balance, for the year-end check the closing or the accounts left open, for the VAT check the returns of the period. The result reads Passed, N to fix or Not passed. Not applicable: the add-on is not installed counts as passed. You are not allowed to read what this check counts means that the check ran with your access rights and the task is not done.
When they run: when the review starts, when you press Check or Run the checks, every day (the scheduled action Accounting Pro Closing: run the checks of the periods under review) and again when you close the period. Who they run as: the checks you start use your access rights, so the record rules of Odoo apply; the daily run is done by the system. A check counts the records of the company of the period only.
What a check cannot see: No entries added to closed periods does not see an older entry whose date was moved into a closed period, and the suspense check ignores archived journals.
My close tasks
Each row shows the period, the task, whether it is mandatory, its kind, the assignee, the due date (red when overdue), the result, the status and the buttons Done, Check, Show and Report. Filters: My tasks, To do, Done, Skipped, Mandatory, Automatic checks, Failed checks, Overdue. Group by: Period, Assignee, Status.
The task form adds the other buttons: Start (a manual task that is To do), Mark as done, Run the check, Show the items, Open the report, Skip (an optional task) and Reset to do. For an automatic task a block Check gives Check passed, Items to fix, Check result and Checked on. Under them come the description and your Notes for the reviewers.
Closing users change the assignee and the notes. Closing managers also change the name, the due date and the report, and Mandatory while the period is still Open. Nothing changes once the period is closed: reopen it first.
The daily reminder. Every day Odoo looks at the periods under review. For each mandatory task that is not done, is past its due date, has an assignee and was not reminded yet, it creates one activity Overdue close task: … on the period, for the assignee, due today.
Closing a period and the lock dates
- The checks run again.
- Every mandatory task must be done. If not, nothing changes and the message lists the tasks with the result of their check.
- With Close periods in order (the standard) the earlier periods of the same type and the shorter periods inside this one must be closed first: a quarter waits for its months, a fiscal year for its months and quarters. The message names them.
- The lock dates chosen in the settings move forward to the end of the period. The change goes through the company record of Odoo, so the checks of Odoo run: it refuses a global lock date while bank transactions before it are not reconciled, and a hard lock date while draft entries exist before it. A lock date that is already later stays.
- The period is Closed: Closed by, Closed on and Lock date (the global lock date after the close, or the hard lock date when that is later) are filled in, a green ribbon shows, the audit log gets a line with the change of the lock dates, and a note in the chatter tells the responsible person.
Who may. Only accounting administrators may change lock dates; otherwise Odoo answers Only accounting administrators may change the lock dates. A closing manager without that right can close periods only while the settings set no lock date.
From then on the lock date rules of Odoo protect the period: an entry posted with a date in it is moved by Odoo to the first open day. The year-end entries must keep their date, so they are refused instead.
At the year end close January to November, run the year-end closing once every entry of the year is posted, then close December, Q4 and the fiscal year. The mandatory task Post the year-end closing entry of the fiscal year then finds the closing posted.
Reopening a period
- Open the closed period and press Reopen (closing managers).
- Type the reason and press Reopen in the dialog.
- Make the corrections, run the checks and close the period again.
| What changes | How |
|---|---|
| Lock dates | The lock dates that the closing manages move back to the end of the latest other closed period, or to the value they had before the first close. They move for everyone and for good: no temporary exception is created. |
| Status | Reopened (blue ribbon), and Times reopened goes up by one. The tasks keep their status. |
| Audit log, chatter | A line Period reopened with the reason and the lock dates before and after (and Still locked by when another lock date still covers the period), and a note for the responsible person. |
It is refused when a later period, or the quarter or year that ends the same day, is still closed (the message names it: reopen it first), when the hard lock date covers the period (a hard lock never goes back), when the reason is empty and when the period is not closed.
While the setting Global lock date is on, a global lock date that someone set by hand after the close moves back too; the audit log and the history of the company show it. A lock date that the closing does not manage stays.
The close audit log
| Event | Written when |
|---|---|
| Review started | The review of a period starts. |
| Period closed, Period reopened | A period closes or reopens: with the lock dates before and after and, for a reopening, the reason. |
| Task skipped | An optional task is skipped: its name and the reason. |
| Year-end closing entry created | The wizard makes the entry: the net result and the number of lines, and the reason when the year was closed with draft entries. |
| Year-end closing entry posted, cancelled, reversed | The status of a year-end closing changes, also when the entry is posted or cancelled from the journal entry. |
| Profit appropriated, Profit appropriation reversed | The appropriation is made (with its explanation) or reversed (with the reason). |
Columns: When, Period or year, Event, By, Reason, Lock dates, Description (hidden at first) and Company. Filters: Closes, Reopenings, Year-end. Group by: Event, User, Company. Each line keeps the name of its period or year as it was. A period and a year-end closing also show their own lines on an Audit log tab.
Close Status report
Controls. Date is the range (this fiscal year at the start): a period is listed when it overlaps it. Periods keeps months, quarters, fiscal years or all. Show the open tasks lists, under each period that is not closed, its tasks that are not done or skipped. The report has no amounts, so it has no posted-entries switch and no comparison.
Rows. With several companies there is one section per company. Each fiscal year has a summary line (for example 12 of 17 closed, the progress, the tasks done, the open mandatory tasks and the failed checks), then its periods, then a Total. A period shows its type, status, progress, tasks done, open mandatory tasks and failed checks (a click on a number lists those tasks), the responsible, the deadline (periods not closed), who closed it, when, and the lock date. A click on the name opens the period.
Notes and warnings. A note explains the progress and gives the lock dates of each company. Warnings appear when no period is in the range, when more than 600 periods match (the latest 600 are shown: choose a shorter range), when periods are not closed after their deadline, and when closed periods are no longer covered by the lock dates of the company.
PDF, Excel, favorites and schedules
PDF. A4 landscape: logo, company, title, range and filters (Periods: Months, quarters and years), the table, and a footer with the company, the person who printed, the date and the page. For a full year the English PDF needs two pages because the names wrap.
Excel. One sheet, Close Status. The period names are links that open the period in Odoo, the progress and the counts are real numbers, and the notes are at the bottom.
Favorites, schedules, package. A favorite saves the range, the choice of periods and Show the open tasks. A scheduled report can send Close Status every month to the finance manager. In the Financial Package the report is in the list (not ticked at the start) and takes the period of the package.
The year-end closing
The list shows the closing, the dates of the year, income, expenses, net profit (red for a loss), the retained earnings account, the closing entry, the appropriation and the status (Draft, Posted, Reversed or Cancelled). Filters: Posted, Draft, Reversed or cancelled.
- Choose. Fiscal year of is any day of the year; it proposes the last year that has ended. Closing journal: empty, the first closing creates a general journal Year-end Closing, code CLOSE. Retained earnings account: the setting, else the account of type Current Year Earnings. Keep the analytic distribution, and Post the entry (on at the start; untick it to leave the entry in draft).
- Press Preview: Income, Expenses, Net profit (loss), the Lines of the entry and every income and expense account with its balance, closing debit and closing credit.
- Press Create the closing entry and confirm, or Back.
What stops a closing. A red box lists the problems: the year has not ended (it can be closed from its last day on), it is already closed (reverse that closing or cancel its draft entry first), the closing date is locked, accounts with a balance in the year are archived, or the retained earnings account is not an equity account of the company. An orange box counts the draft entries dated in the year. They are not part of the closing: post or delete them, or type the reason, which goes to the audit log. A year whose accounts are all at zero already is refused too: there is nothing to close.
Order. The closing date is the last day of the year, so it must not be locked: run the closing before you close the last month, or reopen the periods that lock that day. Odoo would move the entry to another day, so the wizard refuses instead.
The closing entry and its reversal
| Part of the entry | What it does |
|---|---|
| One line per account | Every income and expense account of the year back to zero: a credit balance (income) is debited, a debit balance (expense) is credited. With Keep the analytic distribution, one line per account and distribution. |
| The result | One line on the retained earnings account, Result of the fiscal year …, with the net profit or loss. |
| Foreign currency, analytic | An account kept in another currency is closed in that currency. The entry creates no analytic items. |
The year-end closing form shows the year, the journal, the account, the figures and the entries, a yellow warning when the year was closed with draft entries, and the tabs Profit appropriation and Audit log. Its smart buttons open the Closing entry, the Appropriation, the Profit and Loss and the Balance Sheet of the year.
| Button | What it does |
|---|---|
| Post the closing entry | Posts a draft closing (closing managers), only while it still closes the year: every income and expense account at zero. If entries were posted in the year since the draft was made, or the draft was edited, Odoo says it no longer closes the year: delete it and run the wizard again. |
| Cancel | Cancels a draft closing. The year can be closed again. |
| Reverse the closing | Asks for a reason and posts a reversal on the same day (ribbon Closing reversed). The year can be closed again. Refused while an appropriation is posted or in draft: reverse that first. |
A posted closing entry or reversal can never be reset to draft. The button Reverse of Odoo is hidden on every year-end entry (the appropriation too), its Reset to Draft on the closing and its reversal, and Odoo refuses its own reversal on all of them. Only closing managers post, cancel, reset or delete a year-end entry, whichever screen they use, and a lock date never moves such an entry to another date.
Profit appropriation
| Block of the dialog | Fields |
|---|---|
| Year | Net profit of the year. Date of the entry: from the end of the year to today (it starts as the closing date). Post the entry. |
| Statutory reserve | Reserve (% of the profit) and Until the reserve reaches (% of the capital), from the settings; 0 means no limit. The Share capital account and Share capital, the Statutory reserve account and Reserve before (balances at the date), and the Statutory reserve that results. |
| Dividends and other reserves | Dividends with a Dividends payable account (a liability), Other reserves with an Other reserves account (equity). An account is required for each amount. |
| Retained earnings | Remainder to retained earnings, and Remainder to: an equity account. Empty, the remainder stays on the retained earnings account of the closing. |
A blue line explains the reserve. Without the share capital account the limit cannot be applied and the line asks you to choose it. The dialog refuses reserves and dividends above the profit, a negative amount, a missing account and a date outside the range. The button is offered only for a posted closing with a profit and no appropriation yet.
The entry takes the profit off the retained earnings account into the reserve, the dividends payable, the other reserves and, when you chose an account, the remainder. It is not flagged as a closing entry: it is a real movement of equity and appears in every report. Reverse the appropriation (a reason is required) posts a reversal on the date of the entry. Do it before you reverse the closing.
How the reports treat the closing entries
| Report | Closing entries | Why |
|---|---|---|
| Profit and Loss | Left out | A report of a period: the closed year keeps its real income, expenses and profit, comparison and columns included. |
| Cash Flow Statement, Financial Ratios | Left out | They read the income and expenses of the period. |
| Statement of Changes in Equity | Left out | The profit of the period is a change of its own. The equity at the end still equals the balance sheet. |
| Profit and Loss by Analytic Account | Left out | A closing entry creates no analytic items; its total column leaves the entry out. |
| Custom Statements, A period; Accounting Dashboard | Left out | Figures of a period, like the profit and loss. |
| Balance Sheet, Custom Statements A date | Included | The books at a date: the profit moves from current year earnings to the retained earnings, every total stays the same. |
| Trial Balance | Included | The trial balance after the closing: income and expense accounts at zero, the result on the retained earnings account. |
| General Ledger, Day Book, Cash Book, Bank Book, Journals Audit | Included | They list every entry; the closing entry is in its own journal. |
| Partner Ledger, Partner Balances, Aged Receivable, Aged Payable, Tax Report | Included | A closing entry has no partner, no receivable or payable line and no tax: nothing changes. |
The option. The Balance Sheet, Trial Balance and General Ledger have an option Year-end closing entries: Included (after closing) at the start, or Left out (before closing) for the books as they were before the closing. The drill-downs follow the same rule, so the journal items you open add up to the figure. The appropriation is a real entry and appears everywhere.
Other reports. A report of another add-on leaves the closing entries out when its class declares it (the Profitability add-on does); otherwise it reads them like a ledger. For developers: a report of a period sets _exclude_closing_entries = True; the entry carries accc_is_closing (true on closing entries and their reversals, empty elsewhere: in SQL test IS NOT TRUE) and accc_closing_type (closing, reversal or appropriation). Reports outside Accounting Pro know nothing about this and include the closing entries: the profit and loss of a closed year reads zero there.
The Month-end close card
Which month. The oldest past month that is not closed yet; when every past month is closed, the current month. The company needs at least one monthly closing period and you need the right to read periods, or there is no card.
What it shows. The big figure is the progress of that month (100 % when closed). Under it the days left before its deadline (October 2026: 8 days left), due today, 3 days late or closed. The curve is the progress of the last twelve months, 100 for a closed month. A click opens Close Status. The income, expense and profit cards of the dashboard leave the closing entries out.
Settings
| Setting | What it does |
|---|---|
| Close periods in order | On at the start. A period closes after the earlier ones, and a quarter or a year after the periods inside it. |
| Lock dates set by a close | Global lock date (on at the start), Tax return lock date and Sales and purchase lock dates (off). A close moves the ticked ones to the end of the period. |
| Hard lock | Never at the start, When a fiscal year is closed or At every close. A hard lock date can never be moved back: those periods can never be reopened. A warning shows under the field. |
| Lock dates of the company | Read only: the five lock dates today. Odoo Community has no screen to change them; the closes do. |
| Default checklist, Close deadline | The checklist of new periods, and the days after the end of a period by which it should be closed (0 to 90, 5 at the start). |
| Closing journal, Retained earnings account | Empty journal: the first closing creates Year-end Closing. Empty account: the account of type Current Year Earnings. It must be an equity account. |
| Keep the analytic distribution | The closing entry closes every account per analytic distribution, so ledgers filtered on an analytic account are closed too. |
| Statutory reserve, Until the reserve reaches | Statutory reserve (% of the profit) 10.00 and Until the reserve reaches (% of the capital) 50.00 at the start, between 0 and 100; 0 means no limit. |
| Reserve accounts | Share capital, Statutory reserve, Other reserves and Retained earnings (remainder) are equity accounts, Dividends payable a liability account. The appropriation dialog starts with them. |
The settings take effect when a period is closed or reopened; changing them moves no lock date. The block belongs to a company: switch company to set another one. It is shown to accounting administrators; the Settings menu itself is for Settings administrators.
Who can do what
| Group | Who has it | What it allows |
|---|---|---|
| Accounting Pro: reports | The accounting administrators and the users of Show Full Accounting Features; anyone you add. | Open Closing Periods, Year-end Closings and Close Status, and read the periods, their tasks, the year-end closings and the audit log. Read only. |
| Accounting Pro: closing | The users of Show Full Accounting Features; anyone you add. It includes the reports group. | Everything above, and: start a review, run the checks, do the tasks (Start, Done, Check, Skip, Reset), change the assignee and notes of a task and the notes of a period, and open Close Tasks and Close Audit Log. |
| Accounting Pro: closing manager | The accounting administrators; anyone you add. It includes closing. | Everything above, and: manage the checklists, create, change and delete periods, load a checklist, close and reopen, change the name, due date, report and (while the period is Open) Mandatory of a task, run the year-end closing, post or cancel its entry, reverse it, appropriate the profit and reverse the appropriation. |
Lock dates. Changing a lock date, which a close and a reopening do, also needs the accounting Administrator right of Odoo. Giving a group. Open Settings → Users, the user, tab Access Rights. The accounting role Administrator includes both closing groups; the groups themselves are listed under Extra Rights, which Odoo shows in developer mode.
Records. Periods, tasks, year-end closings and the audit log are those of the companies ticked in the company switcher; checklists are those of your companies and those made for every company. The status of a period or a task and the closing flags of an entry change through the buttons only: any other route, a call from outside Odoo included, is refused. Only closing managers post, reset, cancel or delete the closing entry, its reversal and the appropriation, whichever screen they use. The audit log is written by the add-on only.
How the figures are computed
| Figure | Rule |
|---|---|
| Progress | The tasks done or skipped divided by all the tasks of the period, in percent with one decimal. |
| Open mandatory tasks, failed checks | The mandatory tasks that are not done. The automatic tasks that were checked, do not pass and are not skipped (tasks, not records). |
| Deadline, days left | The end of the period plus the Close deadline of the settings. Days left is the deadline minus today. |
| Lock date of a close | The global lock date after the close, or the hard lock date when that is later. |
| Year-end balances | The posted items of the company in the fiscal year on income and expense accounts (Income, Other Income, Cost of Revenue, Expenses, Depreciation, Other Expenses), earlier closing entries and their reversals left out. Each account (and analytic distribution, when kept) gets debit minus credit in the currency of the company, rounded. |
| Income, expenses, net profit | Income is minus the balances of the Income and Other Income accounts. Expenses are the balances of the other accounts. Net profit is income minus expenses. Computed when the entry is created and checked again when it is posted. |
| Statutory reserve | The profit times the percentage, rounded to the currency. With a limit and a share capital account it cannot pass the limit percentage of the capital less the reserve already held, both at the date of the entry (credit minus debit of the posted items). |
| Remainder | The profit minus the reserve, the dividends and the other reserves. |
| Reports | The closing entries are found once for each report, and the drill-downs use the same condition. |
The add-on comes with 118 automated tests of its own (643 together with those of Accounting Pro). Among them: every Accounting Pro report before and after a closing compared with an independent SQL query, several years in a row, a fiscal year that ends in March, several currencies and an account kept in euros, and the analytic distribution kept.
Limits
Requirements and lock dates
| Limit | Detail |
|---|---|
| Versions | Accounting Pro 1.0.2 or later; the installation is refused on an older one. Built and tested on Odoo 19 Community. Odoo Enterprise, with its own Lock Dates screen and financial reports, was not tested. |
| How lock dates change | Only through the company record of Odoo, with its own checks. Odoo 19 Community has no Lock Dates screen: the closes and reopenings change them. The add-on has no screen and no lock date exceptions of its own: reopen instead. |
| Who | Only accounting administrators. A closing manager without that right closes only while the settings set no lock date. |
| Hard lock | It never moves back (a rule of Odoo): a period it covers can never be reopened. Off at the start. |
| Forward and back | A close only moves forward. A reopening moves back to the end of the latest other closed period, for everyone and for good, and also moves back a global lock date set by hand after the close (while the setting Global lock date is on). |
| Order | A period cannot be reopened while a later period, or the quarter or year that ends the same day, is closed. |
| Refusals of Odoo | Odoo refuses a global lock date while bank transactions before it are unreconciled, and a hard lock date while draft entries exist before it: the close then stops with its message. |
| Branches | Branches inherit the lock dates of their parent in Odoo, but most checks count the records of the company of the period only. |
Periods and checklists
| Limit | Detail |
|---|---|
| Period types | Months, quarters and fiscal years, of at most 31, 92 and 366 days. No weekly or custom periods. |
| Create periods | It follows the fiscal year of the company, adds only what is missing and assumes twelve months: a short first year is not split. |
| Closed periods | A closed period and its tasks cannot be edited: reopen it first. A reviewed or closed period cannot be deleted. |
| Tasks | A mandatory task is never skipped; an optional one is skipped with a reason. Closing users change assignees and notes, managers the rest; a task becomes mandatory or optional only while its period is Open. |
| Tasks of other add-ons | Depreciation posted and VAT return filed exist only with the Fixed Assets and GCC VAT Returns add-ons. |
| Notifications, names | Notes in the chatter and one activity per overdue mandatory task, delivered by Odoo; no email templates of its own. Names are written in the languages installed when they are created. |
| Accruals | The checklist reminds you of accruals and adjustments but posts none. The only entries the add-on posts are the year-end closing, its reversal and the appropriation. |
Automatic checks
| Limit | Detail |
|---|---|
| They do not fix | They count and list, for the company of the period only, as the user (the daily run is done by the system). |
| What they miss | No entries added to closed periods does not see an older entry whose date was moved into a closed period. The suspense check covers the active bank, cash and credit card journals, not archived ones. |
| Trial balance | Posted items at the end date. Odoo refuses unbalanced entries, so it fails only after imports made outside Odoo. |
| A year with nothing to close | It can never pass the mandatory year-end task. Before the review of the fiscal-year period starts, a closing manager can make that task optional and skip it with a reason; once the review has started, the screens offer no way around it. |
Year-end closing and appropriation
| Limit | Detail |
|---|---|
| One closing a year | One closing entry for each company and fiscal year, dated its last day; the reversal the same day. A year can be closed from its last day on. |
| Locked date | The closing date must not be locked: close the year before the last month, or reopen it. |
| Archived accounts, drafts | Archived accounts with a balance in the year block the closing: unarchive them. Draft entries block it unless a reason is given; they are not part of the closing. |
| Reversal | A closing is reversed only from its year-end closing, and only after its appropriation has been reversed. |
| Analytic, companies, periods | Closing entries create no analytic items. The closing works for one company: no consolidation, no eliminations. It does not close periods or set lock dates; the checklist of the fiscal-year period checks it. |
| The percentages | The statutory reserve percentage and its limit are settings, 10 % of the profit until the reserve reaches 50 % of the capital at the start. The text next to them gives examples from the UAE and a former KSA law, not the law in force. Check them against the law that applies to your company. |
| Profit, dividends, losses | Only a year closed with a profit can be appropriated, dated between its end and today. Dividends are booked to a dividends payable account: paying them, withholding tax and the split between shareholders are not handled. A loss is not offset against reserves. |
Reports, uninstalling, what was not verified
| Limit | Detail |
|---|---|
| Reports | Reports of a period leave the closing entries out; the balance sheet, trial balance, ledgers and books include them. A report of another add-on leaves them out only when it declares it. Reports outside Accounting Pro, such as the financial reports of Odoo Enterprise, include them: the profit and loss of a closed year reads zero there. |
| Close Status | Up to 600 periods, the latest: choose a shorter range beyond that. It has no amounts. |
| Uninstalling | The closing entries stay as ordinary entries: reverse the year-end closings first, or the profit and loss of the closed years reads zero in reports that know nothing about closings. The lock dates stay as they are, because they belong to Odoo. |
| Not verified | Email notifications (the note to the responsible person, the activities) were checked in the database only, not delivered through a real mail server. Depreciation posted and VAT return filed were verified only in a combined installation with their add-ons. |
| The audit log | Nobody can change or delete it through Odoo; a database administrator with direct access to the database is outside its protection. |
Troubleshooting
| Problem | What to do |
|---|---|
| I do not see the Closing menus | Closing Periods, Year-end Closings and Close Status need the group Accounting Pro: reports or closing. Close Tasks and Close Audit Log need closing, Close Checklists closing manager. |
| Update Accounting Pro to version 1.0.2 or later | Update Accounting Pro first, then install the add-on. |
| Close the period says mandatory tasks are not done | The message lists them with the result of their check. Correct the cause (Show on a failed check), press Run the checks and close again. |
| Close these periods first | Close periods in order is on. Close the earlier periods, or the months of the quarter or year, first, or switch the setting off. |
| Odoo refuses the lock date (unreconciled bank lines, draft entries before a hard lock date) | That is a check of Odoo, which the close goes through. Reconcile or delete the bank transactions, post or delete the draft entries, and close again. |
| Only accounting administrators may change the lock dates | Changing a lock date needs the accounting Administrator right of Odoo. Ask an administrator, or untick every lock date in the settings so that a close sets none. |
| Start the review of … before you close it | A period closes from In review or Reopened: press Start the review first. |
| Reopen is refused | A later period, or the quarter or year ending the same day, is still closed: reopen it first. Or the hard lock date covers the period, which can never be reopened. A reason is required. |
| The year-end wizard shows a red box | Read each line: the year has not ended, it is already closed (reverse it or cancel its draft entry), the closing date is locked (reopen the closed periods, or close the year before the last month), accounts with a balance are archived (unarchive them), or the retained earnings account is not an equity account. |
| The wizard asks for a reason | The year still has draft entries; they are not part of the closing. Post or delete them, or type the reason. |
| There is nothing to close | Every income and expense account of the year is already at zero. The year-end task of the fiscal-year period can then never pass: make it optional before the review of that period starts, and skip it with a reason. |
| Posting the closing entry says it no longer closes the year | Entries were posted in the year after the draft was made, or the draft was edited. Delete the draft and run the wizard again. |
| The year-end task fails after the closing | An entry dated in the year was posted after the closing. Show lists the accounts that are not at zero. Reverse the closing and close the year again. |
| A task is greyed in the template | It needs an add-on that is not installed (Fixed Assets, GCC VAT Returns). It is left out of new periods. |
| You are not allowed to read what this check counts | The check ran with your access rights. Ask someone with accounting rights to run it. |
| A task cannot be skipped | Only optional tasks are skipped, with a reason. A closing manager can make a task optional on its form while the period is Open. |
| Close Status warns that closed periods are no longer covered by the lock dates | The global lock date was moved back after the close. The audit log and the history of the company show when. Reopen the periods and close them again, in order. |
| The profit and loss of a closed year reads zero | The report is outside Accounting Pro and includes the closing entries, or the add-on was uninstalled. Use the Profit and Loss of Accounting Pro. |
| There is no Month-end close card | The company needs at least one monthly closing period, and you need the right to read periods. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_accounting_pro_closing. Your periods, tasks, checklists, year-end closings, audit log and settings are kept.
The update reloads the views, menus, access groups and the scheduled action. The template Month-end close is created once and an update does not touch it, so your changes to it stay.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.