Month-End Close in Odoo: A Five-Day Checklist for UAE Finance Teams
A close that takes three weeks is not a reporting problem. It is a list of things that should have happened during the month and did not. Odoo can close in five working days if the routine is written down and the lock dates are used.
Ask a UAE finance manager why month-end takes three weeks and the answer is rarely about Odoo. It is about the vendor bills that arrived in a folder on the 28th, the bank statement nobody reconciled since the 10th, the stock adjustments the warehouse made on paper, the intercompany balance that never agrees, and the VAT return that gets rebuilt in Excel because the tax report "does not look right". Each one is a daily task that was deferred to the close.
This checklist is the routine we set up for finance teams on Odoo in the UAE. It assumes Odoo Enterprise with the UAE localisation, automated inventory valuation and bank feeds. It is organised by working day, with the checks that matter for the VAT return and, increasingly, for corporate tax.
Key takeaways
- Most of the close happens during the month. Bills, bank lines and stock moves processed daily turn the close into review rather than data entry.
- Day 1 is cash and documents, Day 2 is receivables and payables, Day 3 is stock and fixed assets, Day 4 is accruals, deferrals and FX, Day 5 is VAT, review and lock.
- Review the tax report by tax code, not just the total, and reconcile it to the ledger before filing.
- Use all three Odoo lock dates. Prior periods that stay open are the main reason reports change after they have been sent to management.
- Write the routine down with an owner per task, and keep it in Odoo as a recurring checklist rather than in someone's head.
Before the close: the daily discipline
The five-day close only works if three things happen every day. Vendor bills are registered when they arrive, ideally through the documents inbox or OCR so the bill exists in Odoo the day it lands in the mailbox. Bank lines are matched daily, with the reconciliation models handling bank charges, card settlements and recurring payments automatically. Stock receipts, deliveries and adjustments are validated the day they happen, in the system, by the warehouse. If any of these is being batched to month-end, fix that first; no checklist will compensate.
The five days
| Day | Area | Tasks in Odoo |
|---|---|---|
| Day 1 | Cash, bank and documents | Reconcile every bank and cash journal to the statement; clear suspense; confirm all vendor bills and customer invoices for the month are posted; post employee expenses; set the user lock date to the last day of the month |
| Day 2 | Receivables and payables | Run aged receivables and payables; match unapplied payments and credit notes; review customer deposits and advances; post bad debt provisions; confirm intercompany invoices mirror each other |
| Day 3 | Inventory and fixed assets | Post landed costs; close inventory adjustments; reconcile the stock valuation report to the inventory accounts; review negative stock and unposted moves; run depreciation; record asset additions and disposals |
| Day 4 | Accruals, deferrals, payroll and FX | Post accruals for goods received not invoiced and services consumed; run deferred revenue and prepaid expense entries; post the payroll journal and gratuity, leave and end-of-service accruals; run the unrealised currency revaluation |
| Day 5 | VAT, review and lock | Review the tax report by code and reconcile it to the ledger; review the trial balance and analytic reports; issue the management pack; set the tax lock date after filing; set the lock date for everyone |
Day 1: cash and completeness
Start with the bank, because every other reconciliation depends on it. Every bank and cash journal should match the statement balance to the fils, with reconciliation models doing the routine matching and a short list of exceptions investigated the same day. Clear the suspense and outstanding receipts and payments accounts; a balance there is a transaction nobody has explained.
Then confirm completeness. Every customer invoice for deliveries made in the month should be posted, which the unbilled deliveries and sales order analysis will show. Every vendor bill that has arrived should be posted, and bills that have not arrived for goods received become Day 4 accruals. Post the expense reports.
Day 2: receivables, payables and intercompany
Run the aged receivable and aged payable reports and look at two things: unapplied payments and credit notes, which inflate both sides and distort ageing, and balances older than 90 days, which need a provision or a decision. Customer deposits and advances should sit in the right liability account, with VAT accounted for at the tax point, since a deposit invoiced or received in the month carries VAT in that month's return.
For groups, intercompany is where closes go to die. Every intercompany invoice should have a matching bill in the counterpart entity, in the same month, at the same amount. Odoo's intercompany rules can generate the counterpart automatically; if they are not enabled, a weekly intercompany check during the month is far cheaper than a Day 2 investigation.
Day 3: stock and fixed assets
With automated valuation, stock moves have already posted to the balance sheet. The close task is reconciliation: the stock valuation report at month-end should equal the balance on the inventory accounts, and any difference is a manual journal, a move posted in the wrong period or a product with the wrong valuation setting. Post all landed costs for the month before this check, because an unposted landed cost understates stock and overstates margin. Review products with negative stock, which usually means a delivery was validated before the receipt, and clear unposted or draft moves.
Fixed assets are straightforward if the asset register is maintained in Odoo: run depreciation, confirm additions from the month's capital purchases, record disposals and check the asset ledger against the balance sheet. Our guide to corporate tax and your ERP covers what the return needs from the ledger.
Day 4: accruals, deferrals, payroll and currency
Post accruals for goods received but not yet billed, using the purchase order value, and for services consumed in the month without an invoice. Odoo's accrual entry tool reverses them automatically on the first day of the next month, so the actual bill does not double count. Run the deferred revenue and prepaid expense schedules on the deferral rules you set on the products; annual support contracts, retainers and insurance are the usual lines.
Post the payroll journal from the payroll module or the external provider, and the monthly accruals for gratuity, leave and end-of-service benefits, which auditors and corporate tax both expect to see accrued rather than expensed when paid. Finally, run the unrealised currency gain and loss revaluation on foreign-currency receivables, payables and bank accounts at the month-end rate.
Day 5: VAT, review and lock
Open the UAE tax report and review it by tax code rather than by total. Standard-rated sales by emirate, zero-rated exports and international services, exempt supplies, out-of-scope items, reverse charge on imports with input and output in equal amounts, and recoverable input tax should each reconcile to the general ledger accounts for VAT. The reconciliation catches the common errors: an import booked without the reverse charge code, a designated-zone sale taxed at 5 percent, a bill with no tax code at all. Fix the source transactions, not the report.
Review the trial balance for accounts that moved unexpectedly, run the analytic reports for project or department margins, and issue the management pack from Odoo's reports rather than from an export. When the VAT return is filed, set the tax lock date; when the pack is issued, set the lock date for everyone. From 2027, e-invoicing through an Accredited Service Provider will give the FTA structured data for your sales invoices, so the ledger and the return agreeing every month becomes the baseline. Our e-invoicing guide explains the mandate and its phases.
Writing the routine down
The checklist above is useless if it lives in one person's head. Create it in Odoo as a recurring project or task list, one task per line with an owner and a due day, and tick it off each month. When someone leaves, the close survives.
How Kaido approaches it
When we are asked to speed up a close, we sit with the finance team through one actual month-end before changing anything, noting every export to Excel and every step done outside Odoo. Each one is either a missing configuration, such as reconciliation models, deferral rules or the accrual tool, a missing daily habit, or a report that does not yet exist.
We then write the routine as a recurring checklist in the system, set up the three lock dates, build the tax report reconciliation and train the team on the exceptions rather than the happy path. Our accounting page describes the Odoo finance configuration this sits on. The goal is not a faster close for its own sake. It is a finance team that spends Days 6 to 20 on analysis, cash and the next month's decisions rather than on last month's data entry.
Month-end taking longer than it should?
Talk to a senior consultant about your close. We will review your last two month-ends in Odoo, identify what is being rebuilt in Excel and why, and set up the routine, reports and lock dates that get you to five days.
Book a discovery call →