Skip to main content
iVentureTeam
Finance

Odoo Year End Closing Checklist: Lock Dates, Accruals, Depreciation

Odoo year end closing checklist for Odoo 19 and 20: pre-close checks, accruals, depreciation, lock dates, current year earnings and the new fiscal year.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
November 7, 202614 min read3 views
Odoo Year End Closing Checklist: Lock Dates, Accruals, Depreciation cover

Most year-end posts for Odoo were written for older versions and still tell you to post closing and opening entries. Odoo 19 and 20 work differently, and our Odoo ERP support team sees the same mistakes every January.

This checklist is for controllers, finance managers and outside accountants who close the books in Odoo 19 or 20. If you are new to how journals, accounts and reports fit together, start with our guide on how Odoo Accounting works.

Odoo year end closing checklist at a glance

Odoo year end closing: Six stages, one clear order

An Odoo year end closing has six stages, and each one has a clear place in the Accounting app. The table maps every stage to its menu and a typical owner.

StageWhere in OdooTypical owner
Clean the ledgerBank reconciliation, Journal Entries, Aged Receivable and Aged PayableAccountant
Accruals and deferralsPurchase and Sales order actions, Deferred Revenues and Expenses reportsAccountant
Depreciation and loansAssets and LoansAccountant
Annual Closing reviewAccounting, Accounting, Tax ReturnsController
Current year earningsManual journal entry to appropriation accountsController or CFO
Lock the yearAccounting, Accounting, Lock DatesCFO or administrator

The order matters. Lock too early and every late adjustment needs an exception. Lock too late and someone posts a back-dated bill into an audited year.

This post covers the routine annual close. If you are upgrading to Odoo 20 at the same time, run our Odoo 20 accounting upgrade checklist first, so you are not testing a new version and closing a year in the same week.

What changed in Odoo 19 and 20 for fiscal year closing?

Odoo 19 changed how current year earnings appear and added an Annual Closing review, and Odoo 20 added accruals from the inventory valuation report and rate-based depreciation. These changes alter the steps you follow.

AreaOdoo 19Odoo 20
Current year earningsDynamic Result Brought Forward line until a manual entrySame as Odoo 19
Annual closingAnnual Closing item with Review and Submit stepsSame as Odoo 19
Stock accrualsAccrued Expense and Accrued Revenue order actionsAdds Generate Entries on the Inventory Valuation report
Depreciation modelsDuration basedRate based option, decimal durations
Multi-currency reportsNo translation adjustment lineCumulative Translation Adjustment line

The Odoo 19 year-end closing documentation warns that companies upgrading from older versions should revisit past years and book the results that were previously handled implicitly, in chronological order.

Our Odoo 20 accounting release notes show each Odoo 20 change with screenshots, including the new accruals section and the translation adjustment line.

What should you check before closing the fiscal year in Odoo?

Before you close the fiscal year in Odoo, make sure every transaction for the year is in the system, posted and matched. Odoo's own pre-closure list covers banks, documents, expenses, payments, suspense accounts, loans and provisions.

  1. Banks: reconcile every bank account up to year end and confirm the book balance matches the statement balance.
  2. Documents: create all customer invoices and vendor bills for the year, and post or cancel every draft entry.
  3. Expenses: validate employee expenses and check that receipts sit in the right period.
  4. Payments: confirm every received payment is encoded and matched to its invoice.
  5. Suspense accounts: clear them to zero, with each line moved to its real account.
  6. Loans: register loans so Odoo can calculate amortization automatically.
  7. Aged balances: review receivables and payables older than 60 days and decide on an allowance for doubtful accounts or a provision.
  8. Recurring entries: book all depreciation and deferred revenue entries due up to year end.

Weak controls show up here first. Missing approvals and unmatched bills create most late adjustments, which our post on Odoo internal controls helps you prevent during the year.

How do you post accruals and closing entries in Odoo at year end?

Odoo creates most year-end closing entries for you from purchase orders, sales orders and invoice lines, so you rarely need to type an accrual by hand. You choose the date, review the draft and post.

Accrued expenses and accrued revenue

For goods or services received but not yet billed, select the purchase orders and use the Accrued Expense Entry action. For sales delivered but not invoiced, use Accrued Revenue Entry on sales orders or order lines. Both actions ship in standard Odoo 19 and 20.

The wizard proposes the last day of the previous month as the entry date and a reversal on the next day. Set the date to your fiscal year end, pick the accrual account, check the amounts and create the entry.

Accruals from the inventory valuation report in Odoo 20

With perpetual valuation, Odoo 20 adds an Accruals section to the Inventory Valuation closing report: Bills to Receive, Billed Not Received, Invoices to be Issued and Invoiced Not Delivered. Generate Entries books them straight from the report.

Stock-heavy companies should read our guide to Odoo 20 inventory valuation before relying on this, because category settings decide which products it covers.

Deferred revenue and deferred expenses

For subscriptions, insurance or rent invoiced in advance, set start and end dates on each invoice or bill line. The Odoo deferred revenue documentation offers two modes: entries on invoice validation, or Manually and Grouped from the report each month.

  • On validation: Odoo moves the full amount to the deferred account and schedules monthly recognition entries.
  • Manually and Grouped: click Generate Entries on the Deferred Revenue report at month end; Odoo posts one grouped entry and a reversal dated the next day.
  • Basis: choose Days, Months or Full Months, as each gives a different first-month amount.
  • Timing: the server checks once a day, so a draft can take up to 24 hours to show as posted.

How do you check depreciation and fixed assets at year end?

At year end, every fixed asset should sit on an asset account with its depreciation board posted up to the closing date. Odoo creates depreciation entries in draft and posts them on schedule, so gaps usually come from assets never registered.

Use this short list for the asset review:

  • Unregistered purchases: filter fixed asset accounts for bills with no linked asset and create the missing assets.
  • Draft depreciation: look for draft entries dated in the year; Odoo posts them on a daily check, so allow for that delay.
  • Disposals and sales: use Dispose or Sell on the asset; Odoo closes it and posts the gain or loss entry.
  • Revaluations: a value decrease posts its own entry and changes all future unposted lines.
  • Odoo 20 models: straight-line models can now use a yearly rate, such as 12.5%, instead of a duration.

The Odoo assets documentation lists three methods: Straight Line, Declining, and Declining Then Straight Line. Confirm the method and prorata setting with your auditor before the close, not after.

How do Odoo lock dates work at year end?

Odoo lock dates stop anyone from posting or editing entries on or before a chosen date, and Odoo 19 and 20 offer five of them. You set them under Accounting, Accounting, Lock Dates.

Lock dateWhat it blocksCan it be undone?
Global (Lock Everything)All entries up to and including the dateYes, with an exception
Tax ReturnEntries with taxes; set automatically when the tax closing postsYes, with an exception
SalesSales journal entriesYes, with an exception
PurchasePurchase journal entriesYes, with an exception
Hard LockAll entries, with no exceptionsNo, it is irreversible

When a new entry falls on or before a lock date, Odoo moves its accounting date to the day after the lock. For the tax lock, the Odoo tax return documentation says tax values move to the next open period instead.

Lock date exceptions

An Accounting administrator can remove a lock date and choose an exception for one user or for everyone, for a set duration, with a reason. Odoo logs this in the company record's chatter, which gives your auditor a trail.

A sensible locking sequence

  1. Set the Sales and Purchase lock dates once operations stop posting to the old year.
  2. Let the final tax return post the Tax Return lock date.
  3. Set the Global lock date to the last day of the year during the audit.
  4. Set the Hard Lock only after the accounts are signed off, and only if your country or auditor needs it.

How do you run the Annual Closing review in Odoo 19 and 20?

The Annual Closing is a built-in review list under Tax Returns, with automatic and manual checks you must pass before you submit. Open Accounting, Accounting, Tax Returns and click the pending Annual Closing line.

Depending on your fiscal localization, the review shows checks such as these:

  • Bank Reconciliation: all transactions reconciled up to year end.
  • No draft entries: draft invoices, bills and entries posted or moved.
  • Deferred Entries: start and end dates set on bills and invoices.
  • Fixed Assets and Loans: registered for automatic depreciation and amortization.
  • Overdue receivables and payables: items over 60 days reviewed for an allowance.
  • Total Receivables and Total Payables: aged reports match the partner account balances.
  • Earnings Allocation and Manual Adjustments: result moved to equity, internal checks done.

Each card shows Reviewed, To review or Anomaly. You can fix an anomaly or mark it Reviewed or Supervised, and every status change goes into the chatter. Once all checks pass, click Validate, then Submit.

In developer mode you can add your own checks under Accounting, Configuration, Check. Groups with several entities should agree one shared check list, as our Odoo multi company setup guide explains for consolidation.

How do you book current year earnings in Odoo?

In Odoo 19 and 20, you book current year earnings with one manual journal entry that moves the result to appropriation accounts, replacing the dynamic Result Brought Forward line. Until you post it, the trial balance still balances.

Odoo shows the result for year N as a dynamic line in the trial balance and general ledger of year N+1. The entry can wait until the profit or loss is ready to be appropriated, for example after the shareholder meeting.

  1. Go to Accounting, Accounting, Journal Entries and click New.
  2. Use a reference such as Annual Closing 2026.
  3. Set the accounting date to the last day of the fiscal year in which the result arose.
  4. For a profit, debit one or more Current Year Earnings type accounts; for a loss, credit them.
  5. Balance the entry against reserves, retained earnings or dividends payable, as your local rules require.
  6. Post, then check that the Result Brought Forward line in year N+1 is gone.

Appropriation accounts appear at the bottom of the profit and loss, reset each year and do not change net profit. Odoo explains the reason for this design in its post on current year earnings in Odoo 19.

Do you need closing and opening entries for the new fiscal year in Odoo?

No, Odoo does not need closing or opening entries for a new fiscal year, because balance sheet accounts carry their balances forward and income and expense accounts reset automatically. This surprises many accountants coming from other systems.

On the Odoo forum, a user who had just ended their fiscal year asked how to close the fiscal year and start a new one. One reply suggested creating opening entries, which in current Odoo would double every balance.

When fiscal year settings matter

The default fiscal year runs 12 months to 31 December. Change the Last Day under Accounting, Configuration, Settings, Fiscal Periods. For a short or long first year, enable Fiscal Years and create that period with its own start and end dates.

When opening balances are really needed

Opening balances matter only when you first move to Odoo. The Odoo opening entries guide loads an opening trial balance with clearing accounts and open invoices, so receivables, payables and inventory tie out on day one.

Foreign currency balances need one more step before the lock. Run the revaluation described in our Odoo multi currency accounting guide at the year-end rate first.

Year end closing priorities by industry

The core Odoo year end closing steps are the same for everyone, but each industry has one area that causes most adjustments. Spend your review time there first.

IndustryPain or cost driverOdoo approachHow iVentureTeam helps
ManufacturingWork in progress and stock valueValuation report, WIP reviewReconcile stock to the ledger
DistributionGoods received not billedAccrued Expense Entry, Odoo 20 accrualsSet accrual accounts and cutoff rules
SaaS and subscriptionsRevenue invoiced in advanceDeferred revenue on invoice linesMap deferral periods by plan
Professional servicesWork done not yet invoicedAccrued Revenue Entry on sales ordersTie timesheets to accruals
Groups and holdingsIntercompany and currency gapsMulti-company checks, CTA line in Odoo 20Align locks and eliminations

What are the most common Odoo year end closing mistakes?

Most Odoo year end closing problems come from habits carried over from older versions or other software. These are the ones we fix most often.

  • Posting opening entries: this doubles balances, because Odoo already carries them forward.
  • Setting a Hard Lock too early: it cannot be reversed, so late audit adjustments must go into the next year.
  • Ignoring the Result Brought Forward line: after an upgrade from an older version, past years may still need explicit earnings entries.
  • Leaving drafts in the year: draft bills and depreciation lines distort the trial balance and fail the Annual Closing check.
  • Forgetting accrual reversals: a reversal dated outside the open period throws off January figures.

If you are not sure your ledger is clean enough to close, the free Odoo health check flags version, module and setup risks in a few minutes.

How iVentureTeam helps with Odoo year end closing

Is your ledger ready? Run a health check

iVentureTeam works beside your finance team to close the year in Odoo, fix the ledger issues the close exposes, and leave a repeatable process. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.

  • Pre-close review: bank, receivables, payables, assets and suspense accounts checked against Odoo's Annual Closing list.
  • Accrual and deferral setup: accrual accounts, deferral modes and depreciation models set to match your policies.
  • Lock date plan: who sets which lock, when, and who may approve exceptions.
  • Upgrade clean-up: explicit earnings entries for years closed before Odoo 19.
  • Advice and training: our Odoo consulting services turn the close into a written procedure your team can follow.

Odoo year end closing case study: Fernando Tax Management

A clean year end needs a clean ledger, and this Dutch tax firm first had to fix hidden journal lines and manual entry. Fernando Tax Management B.V., founded in 2008, had outgrown a rigid legacy system.

Staff were keying the same data into several places, which produced duplicate and inconsistent records they reconciled by hand. Journal entry creation was convoluted, and reports had translation gaps, a real risk for output that feeds government compliance.

We migrated the firm to Odoo 18 in 10 weeks, resolved the hidden journal lines issue that had obscured accounting data, and built localized tax compliance reports for the Netherlands and Curaçao. Manual data entry fell by 60%.

Read the full Fernando Tax Odoo accounting automation case study.

The bottom line on Odoo year end closing

In Odoo 19 and 20, a good year end close means a clean ledger, booked accruals and depreciation, a passed Annual Closing review, an explicit earnings entry and lock dates set in the right order. You do not need opening entries.

Start the pre-close review in early December, keep the Hard Lock for last, and write down what you did. Next year's close then takes days instead of weeks.

Ready to close your Odoo year without surprises?

Plan my year end close

Get a finance-led Odoo consultant on your year-end close. Plan your Odoo year end close with us, call +91-90235-15208, or email business@iventureteam.com.

Frequently Asked Questions

How do I close a fiscal year in Odoo?

+

Reconcile banks, post or cancel drafts, book accruals, deferrals and depreciation, then run the Annual Closing review under Accounting, Tax Returns. Post a manual entry for current year earnings and set lock dates.

Does Odoo create opening balances for the new year automatically?

+

Yes. Balance sheet accounts carry their balances into the new fiscal year and income and expense accounts reset to zero. You do not post opening entries, except once when you first move to Odoo.

What is the difference between the Global lock date and the Hard Lock date in Odoo?

+

The Global lock date blocks all entries up to the date, but an administrator can grant a timed exception. The Hard Lock also blocks all entries, allows no exceptions and cannot be undone.

What is the Result Brought Forward line in Odoo 19?

+

It is a dynamic line showing last year's profit or loss in the trial balance and general ledger of the new year. It disappears once you post a manual entry to Current Year Earnings type accounts.

How do I record accrued expenses in Odoo?

+

Select the purchase orders with goods received but not billed and use the Accrued Expense Entry action. Set the year-end date and accrual account; Odoo proposes a reversal on the next day.

Can I edit an entry after the lock date in Odoo?

+

Only through a lock date exception set by an Accounting administrator, for one user or everyone and for a limited time. The exception is logged. A Hard Lock date cannot have exceptions.

When should I set lock dates at year end?

+

Set Sales and Purchase locks once operations stop posting to the old year, let the tax return set the tax lock, use the Global lock during the audit, and set a Hard Lock only after sign-off.

How is depreciation handled at year end in Odoo?

+

Odoo creates depreciation entries in draft from each asset's board and posts them on a daily check. At year end, confirm every asset is registered, all lines to the closing date are posted, and disposals are recorded.

Does Odoo 20 change year end closing?

+

The core steps match Odoo 19. Odoo 20 adds accruals from the Inventory Valuation report for perpetual valuation, rate-based depreciation models and a Cumulative Translation Adjustment line for multi-currency reporting.

Free written answer from a certified consultant

Getting Odoo Accounting set up right?

We map your accounting, tax and reporting in Odoo and show what to set up first, and what to watch.

Free, with no obligation. A senior consultant replies within 12 business hours.