Odoo 19 works as one system because every app writes to the same database: a quotation becomes a sales order, the order creates a delivery, the delivery drives the invoice, the payment reconciles it, and the accounting reports read the resulting journal entries without any export. The same pattern links timesheets to invoices and payslips to the general ledger. Roll it out in phases, starting with accounting foundations and order-to-cash, and leave the website, marketing and Studio for last.
This post closes the series. It traces the main flows across apps and links back to the part that covers each one in detail.
Order to cash: quote, delivery, invoice, payment, reports
For a business selling stocked products, the chain looks like this:
Quotation / Sales order S00042 → Delivery order WH/OUT/00017 → Customer invoice INV/2026/00031 → Payment matched on the bank statement → Reports aged receivables, P&L, GST returns
The link that matters most is the product's Invoicing Policy: Ordered quantities lets you invoice as soon as the order is confirmed, Delivered quantities only invoices what has actually shipped. Choose deliberately; changing it later means explaining partial invoices to customers.
On the invoice, the Pay button records a payment, and bank reconciliation matches it to the statement line. Inventory valuation feeds the ledger according to the product category's Inventory Valuation setting, which in Odoo 19 is Periodic (at closing) or Perpetual (at invoicing).
- Quotations and orders: part 7, products and pricelists: part 8
- Inventory and delivery: part 12
- Invoicing and payments: part 19, bank reconciliation: part 21
The purchase side mirrors it: purchase order, receipt, vendor bill, payment. The product's Control Policy, On ordered quantities or On received quantities, decides whether a bill can be validated before goods arrive. For most trading businesses, received quantities is the safer default. See part 13 and part 20.
Manufacturers add one more link. A sales order or a reordering rule creates a manufacturing order, which consumes components from stock and produces the finished product, and the component and finished-goods moves are valued through the same inventory accounting as any delivery. Quality checks and maintenance hang off the same records rather than a separate system. See part 14 and part 15.
Services: project, timesheet, invoice
A services business runs a parallel chain. A service product on a sales order creates a project or task, according to its Create on Order setting. Employees log timesheets on those tasks. Depending on the Service Invoicing Policy, hours become the delivered quantity, milestones release a percentage, or the price is fixed. The invoice then goes through the same payment and reconciliation steps as any other.
Every timesheet is also costed at the employee's hourly cost on the project's analytic account, so the project's profitability panel shows revenue against labour and bills without a spreadsheet. Details are in part 30 and part 31. Expenses can be re-invoiced to customers through the same sales order, using the product's Re-Invoice Costs option (At cost or Sales price), as covered in part 28.
People: time off, payroll and the general ledger
On the HR side, employee records (which in Odoo 19 hold contract details directly on the employee), time off and attendance feed payroll (Enterprise). With Payroll Accounting installed, confirming payslips posts an accounting entry in the Salary Journal of the salary structure. Indian Payroll (l10n_in_hr_payroll, Enterprise) provides the Indian salary rules on top.
The Batch Account Move Lines setting merges a period's payroll entries into single lines per account. It keeps individual salaries out of the general ledger view, at the cost of disabling per-employee payment generation. Decide this with finance before the first payroll run. See part 24, part 26 and part 27.
Why one database changes month-end
The practical benefit of integration shows at closing. Receivables, payables, stock value, payroll cost and GST all come from journal entries created by the operational apps, so month-end becomes reviewing and reconciling rather than importing and re-keying. That is the main difference from running Tally for accounts alongside separate sales, stock and HR tools.
It only works if the operational teams use the system properly. A delivery validated late, or a vendor bill entered without its purchase order, shows up as a reconciliation problem in finance. Closing, assets and reports are covered in part 23, and India-specific GST in part 22.
Integration does not remove work; it moves it to the person who knows the facts, at the moment they happen.
A phased rollout order for Odoo 19
Trying to go live with every app at once is the most reliable way to go live with none of them working well. The order we usually recommend:
- Foundations: company, users and access rights, chart of accounts, taxes and GST, opening balances (part 4, part 18).
- Order to cash and procure to pay: CRM, sales, purchase, inventory, invoicing and bank reconciliation.
- Operations: manufacturing, quality, field service or helpdesk, depending on the business (part 14 onwards).
- People: employees, time off, attendance, expenses, then payroll after one parallel run against your current system.
- Projects and services: projects, timesheets and service billing.
- Customer-facing and extras: website, eCommerce, marketing, Documents, Sign, Knowledge, then Studio for the gaps that remain.
Each phase should run for at least one full month-end before the next one starts. Services businesses can swap phases 2 and 5. If you are coming from an older Odoo version rather than starting fresh, read part 36 on upgrading first, and if you are new to the series, start at part 1.
When you are ready to plan your own rollout, our Odoo implementation team can help with phasing, data migration from Tally or spreadsheets, and cut-over. Or simply get in touch.
Questions we get asked
How do Odoo 19 apps share data with each other?
All Odoo apps in a database use the same records. A customer, product or employee exists once, and each app adds its own documents to it. Confirming a sales order creates the delivery; validating the delivery makes quantities invoiceable; posting the invoice creates journal entries that the accounting reports read directly. No exports or integrations are needed between Odoo's own apps.
In what order should we implement Odoo modules?
Start with foundations: company, users, chart of accounts and taxes. Then implement order to cash and procure to pay, meaning sales, purchase, inventory, invoicing and bank reconciliation. Add operations apps such as manufacturing or helpdesk next, followed by HR and payroll, then projects and timesheets. Leave the website, marketing, Documents and Studio until the core flows have survived at least one month-end.
Does Odoo payroll post to the general ledger automatically?
Yes, with the Payroll Accounting module, which is Enterprise like Payroll itself. Confirming payslips creates an accounting entry in the salary structure's Salary Journal, using the accounts set on the salary rules. The Batch Account Move Lines setting can merge a period's entries into single lines per account, which hides individual salaries in the ledger but disables per-employee payment generation.
Can Odoo replace Tally for an Indian business?
For many small and mid-sized Indian businesses, yes. Odoo 19's Indian localisation provides the Indian chart of accounts and GST taxes, with e-invoicing, e-way bill and GST return features in additional Indian modules, some of them Enterprise. Odoo also connects accounting to sales, purchase, inventory and payroll in one database. The migration needs planning: opening balances, open invoices and stock valuation should be moved at a clean period end, ideally the start of a financial year or quarter.