The owner wants to know, on any given day, what customers owe the company and what the company owes its suppliers. The accountant wants to open any number in a report, reach the document behind it and explain the period close without gathering side files. The purchasing lead wants to know what the company has committed to before approving. That is the outcome ToDoOps builds Odoo Accounting around. To see how we work with Saudi businesses, start from the ToDoOps home page.
The principle is simple. Every figure begins as a transaction, every transaction has a document, an approver and an entry, and every receipt or payment is matched against the bank. When those links sit in one system, a balance becomes an answer you read rather than a puzzle you take apart.
Odoo accounting reports: where did this number come from?
The cycle in Odoo runs from transaction to approval, entry, receipt or payment, reconciliation and report. Receivable, payable, ledger, balance sheet and income reports let you open a figure down to the transactions behind it. When the owner asks why a number changed, the accountant answers from the period, accounts and documents themselves.
That ability starts with the foundation: currencies, financial periods, chart of accounts and journals, plus who creates a document, who approves it and who changes a setting. When migrating from another system, we separate opening balances from open documents and transaction history, and reconcile customer, supplier, cash and bank balances to an approved source. The new system then starts from clean numbers your finance lead has signed off. The data migration guide covers the detail.
What changes in the day of the owner, accountant and buyer?
| Who asks | The question | What the system shows |
|---|---|---|
| Owner | What does this customer still owe? | Opening position, invoices, adjustments and matched receipts |
| Owner | Has the money reached the bank? | Payment reference, bank movement and its reconciliation |
| Purchasing | Why do we owe this supplier? | The bill, the related operational record and the handling of differences |
| Accountant | Why did this report figure change? | The period, accounts and transactions behind it |
Cycles differ by business: a distributor that buys and stocks, or a service company invoicing against contract milestones. So we start with these questions alongside your finance team, then choose the right modules from the Odoo applications overview.
How does the 24-hour e-invoicing rule fit into the working day?
For businesses in ZATCA’s integration phase, simplified tax invoices are reported within 24 hours of generation, while tax invoices are cleared before they are shared with the customer 1. These rules apply to businesses whose turn in the phase has come, as the authority announces.
In practice that means two paths in one day: an invoice cleared before it reaches the customer, and one reported after issue. Both the salesperson and the accountant should see each invoice’s status (cleared, sent, rejected or pending) and know who follows up whatever did not go through. With your finance lead we run a complete cycle covering issue, submission, a rejected case and a pending case, and assign an owner to each exception. The deadline then becomes a daily routine with clear ownership.
How does an invoice become an explainable customer balance?
The SAR amounts below are hypothetical gross figures for explanation only, not a tax or profit calculation. An invoice of 10,000, an approved and matched credit note of 1,000, and a confirmed, reconciled receipt of 4,000 leave 5,000 due from the customer.
An owner reads three things from this. The 5,000 is an open receivable awaiting collection. The credit note corrects the document, while a cash refund to the customer is a separate record. A return of goods to stock is a separate movement again. That separation is what makes the report understandable to sales and finance together.
When is a payment collected in the books?
In Odoo 19, the effect of registering a payment depends on the Outstanding Accounts configuration. With those accounts an entry is created and the amount due falls; without them, registering creates no entry and leaves the amount due unchanged. An invoice may show as paid immediately if the main bank account is used as the outstanding account on the payment method. Matching the payment to the bank movement is its own stage 2.
In practice we set this up with your accountant and test a partial and then a full payment, so the team knows what each status means in their cycle.
Odoo bank reconciliation: a balance you can explain
Odoo offers automatic matching suggestions and reconciliation models where the rules apply. With your team we confirm the statement source and format, then test the hard cases: one receipt covering several invoices, bank charges, and a difference with no known cause. Our rule is that the finance lead explains each difference and decides its treatment, so the balance stays honest rather than being forced to zero.
How does purchasing know the commitment before approving?
With the purchasing team we test the cycle you use: order, receipt, bill, payment. The system records quantity and price differences and who resolves them, so the buyer sees what the company committed to and what was actually received before approving payment. We also review roles: who creates a supplier, who changes its bank account, who approves payment. Separating those roles is a design decision we build with your management.
Saudi localisation in Odoo Accounting
Odoo 19’s Saudi localisation provides modules, settings, invoicing and testing, and it is the starting point for technical scope. With your finance lead we identify the document types you issue and test the accepted case, the rejected case and the correction. Zakat and filings are outputs with their own scope and sign-off, and we refer to the official authority for your requirements and deadlines.
Closing the financial period in Odoo with confidence
Before closing we review the bank list, receivables, documents and adjustments, and set lock dates with their permissions. Some lock types cannot be reversed, so the finance lead approves the policy before anything is executed. Year-end result handling differs between releases before and after Odoo 19, so we align the closing procedure to your version. The result is an accountant presenting a report whose every figure they can trace.
See how an operation moves between departments
Most accounting figures begin outside accounting: a sale leaves sales, goods leave the warehouse. You can watch that hand-off in Try Odoo interactively, a guided simulation with sample data for a sales and inventory path. It helps you see how operations connect before they reach the ledger.
Where should you start?
A first phase connects the approved opening position to a customer cycle, a supplier cycle, bank reconciliation and the reports needed to review them, with role-based training and the exceptions you actually meet. We agree with your team who accepts each result and on what evidence. Data cleanup, extra reports or integrations are scoped as separate items so the commercial scope is easy to compare.
After stabilisation you measure the difference: unexplained reconciliation items, recurring corrections and the effort needed to explain a balance. Time saved becomes cash saved when spending actually changes. For an early estimate of time and budget, try the calculators, using your own inputs for an initial implementation and savings estimate.
Frequently asked questions
Does a “Paid” status prove the money reached the bank?
The status follows the outstanding-accounts setup. We therefore tie the payment to the bank movement and its reconciliation, so collection is backed by a document.
Does registering a payment reduce the customer balance immediately?
It depends on the setup: with outstanding accounts there is an entry and the amount due falls. We test a partial payment in your environment to confirm what suits your cycle.
Does a credit note mean I refunded the money?
A credit note corrects the document. A cash refund and a stock return are each recorded separately.
Should I write off a small bank difference to reach zero?
The finance lead explains its cause first and then decides the treatment, so balances stay truthful.
Is Saudi localisation enough to be compliant?
It is the technical foundation. The picture is completed by testing your actual documents and checking your requirements with the official authority.
Sources and references
[1] ZATCA. Original source. Detailed e-invoicing guideline, section 7.2, p. 37; generation timing, p. 18. Sets out clearance and reporting during the integration phase.
[2] Odoo — official documentation, version 19.0. Payments, Bank reconciliation, Credit notes and refunds, Vendor bills, Reporting, Year-end closing and Saudi localisation. These document the configuration and workflows discussed in this guide.
Start with a cycle your finance team can accept
Tell us briefly how you issue invoices, where reconciliation slows down and what you want your team to explain with confidence. We need no files, access or passwords at first contact. Contact ToDoOps to agree a scope your finance leadership can accept, learn about our services on the home page, or make a first estimate of time and budget with the calculators.
