Odoo Accounting Deep Dive: How to Configure Journals, Journal Entries, and Real-World Bookkeeping

Close-up of a vintage handwritten ledger detailing financial records and accounts.

When a growing retail chain migrated from spreadsheets and legacy software into Odoo Accounting, the first month felt chaotic. Invoices were created, vendor bills were entered, bank feeds were connected – but the reports did not match what the CFO expected. Sales seemed right, yet cash balances were off and aged receivables made no sense.

The problem wasn’t that Odoo was “wrong”; it was that the accounting foundation – journals, journal entries, chart of accounts, contacts, and products – had been set up in the wrong order and with the wrong logic.

This article walks through a practical, step‑by‑step way to configure Odoo so your bookkeeping is reliable, your reports are meaningful, and your team is confident using the system.

The key question: How should a growing business configure Odoo Accounting – from journals to products to bank reconciliation – so that day‑to‑day transactions and historical data are both clean and manageable?

Key Terms You Need Before Diving Into Odoo Accounting

Before touching any settings, it helps to align on a few core accounting concepts as they appear in Odoo.

  • Chart of Accounts
    A structured list of all accounts your company uses (assets, liabilities, equity, income, expenses). Every transaction in Odoo posts to at least two of these accounts.
    Example: When you sell a product, Odoo creates journal items that increase “Deli Sales” income and increase “Accounts Receivable”.
  • Journals
    In Odoo, journals group similar transactions so you can organize and track them more easily (sales, vendor bills, bank, cash, miscellaneous).
    Example: All customer invoices are recorded in a Sales Journal, while all vendor bills sit in a Purchase Journal.
  • Journal Entries
    A journal entry is the actual accounting record of a transaction – made up of lines called journal items, each line posting to an account in the chart of accounts.
    Example: A $425.55 customer invoice creates a journal entry with income, tax, and accounts receivable lines that must balance (debits = credits).
  • Product Categories
    Categories that hold common accounting settings for groups of products – especially income and expense accounts and costing behaviors.
    Example: All “Deli Items” can post to a “Deli Sales” income account without configuring each sandwich separately.
  • Payment Terms
    Rules that specify when customers should pay you and when you must pay vendors, driving due dates and aging reports.
    Example: Setting a customer to “30 days” means their invoice appears in aged receivables if unpaid after 30 days.
  • Bank Reconciliation
    The process of matching bank statement lines to payments, invoices, and other entries in Odoo so your cash accounts are accurate.
    Example: A $170 payment to a vendor must be matched against the related vendor bill and the bank statement line.

Why Proper Odoo Accounting Setup Matters: Two Business Scenarios

Misconfigured journals and accounts don’t just annoy accountants; they create real operational risk.

Scenario 1: Specialty Food Store

A neighborhood market sells deli items, baked goods, and shelf‑stable products. They implement Odoo but leave the default single “Product Sales” account.

  • Management can’t see which product lines are most profitable because all revenue is lumped together.
  • Expenses for advertising, rent, and ingredients are not grouped properly, making it hard to spot overspending.
  • Decisions about expanding the bakery or deli are made on gut feeling instead of data.

By the time they realize the problem, re‑classifying months of transactions is expensive and slow.

Scenario 2: B2B Distributor With Multiple Banks

A distributor uses several bank accounts and corporate credit cards. In Odoo, they share one generic bank journal and don’t configure reconciliation rules.

  • It becomes nearly impossible to see which account a transaction belongs to.
  • Unmatched bank lines accumulate, so balances in Odoo never match the actual bank statements.
  • Cash flow reports are unreliable; the CFO loses trust in the system.

In both cases, the root issue is the same: Odoo Accounting was used before the accounting foundation – journals, journal entries, and account structure – was properly designed.

Designing a Solid Odoo Accounting Foundation

The transcript you provided outlines a very pragmatic sequence for configuring Odoo that we at ERPixel also recommend when implementing ERP and Odoo Accounting for clients.

1. Install Accounting and Understand the Default Journals

Start with a clean Odoo database, install the Accounting app, and review the default journals:

  • Sales Journal – for customer invoices and credit notes.
  • Purchase Journal – for vendor bills and vendor refunds.
  • Bank Journals – one per bank account or credit card.
  • Cash Journals – for on‑site cash/petty cash.
  • Miscellaneous Journals – for adjustments and historical imports.

Only create additional Sales or Purchase journals if you truly need separation (for example, by legal entity or branch). For bank and credit card accounts, keep a strict one‑to‑one mapping: one journal per real‑world account.

Configure each journal carefully: type, short code/prefix, and where needed a default account (e.g., default income account on a Sales Journal, or suspense account on a Bank Journal). This ensures future journal entries are automatically grouped and numbered sensibly.

2. Structure Your Chart of Accounts for Management, Not Just Tax

Deleting default accounts in Odoo can create serious issues, so start by keeping what comes out of the box. Then:

  • Add only the accounts you need – for history imports or for more granular reporting.
  • Focus on income and expense accounts first, as they feed directly into the Profit & Loss.
  • Keep balance sheet accounts (assets, liabilities, equity) relatively simple unless your CPA advises otherwise.

For our market example, that might mean creating “Deli Sales”, “Bakery Sales”, and “Shelf‑Stable Sales”, plus key expense accounts like “Advertising Expense” or “Bank Fees”. The goal is to read your P&L at a glance and immediately know where you’re making and losing money.

If you’re migrating from QuickBooks or Sage, export your existing chart of accounts, map it into Odoo’s template (name, code, type), and import. ERPixel often helps clients perform this mapping and validation to avoid subtle misclassifications that break reports later.

3. Configure Contacts and Payment Terms

Next, install the Contacts app and configure customers and vendors with the right accounting properties:

  • Assign the correct Accounts Receivable account to customers and Accounts Payable account to vendors.
  • Set realistic payment terms (e.g., Immediate, 15 days, 30 days) so aged receivables/payables are meaningful.

This ensures that when Odoo posts journal entries for invoices and bills, they flow into the right receivable/payable balances and aging reports.

4. Use Product Categories to Drive Accounting Logic

A common mistake is setting accounts directly on every product. Instead, configure product categories:

  • Create categories like “Deli Items”, “Bakery Items”, “Shelf‑Stable Goods”.
  • On each category, pick the right income and (if needed) expense/cost accounts.
  • Assign products to categories; let categories drive the accounting on sales and purchase documents.

Also define:

  • Invoicing policy for sales – invoice on ordered quantities (more flexible) or delivered quantities (tighter control).
  • Control policy for purchases – usually “Received quantities” so you don’t pay suppliers for goods you haven’t received.

5. Run the Sales and Purchase Flows End‑to‑End

With journals, accounts, contacts, and products ready, you can safely test real flows:

  1. Create a purchase RFQ, confirm it to a Purchase Order, receive products, create a vendor bill, and post it.
  2. Create a sales order, confirm it, generate an invoice (based on your invoicing policy), and post it.

After each step, open the related journal entries and reports:

  • In the vendor bill, check that expense accounts and Accounts Payable are correct.
  • In the customer invoice, verify revenue accounts, taxes, and Accounts Receivable.
  • Review Profit & Loss, Aged Receivables, and Aged Payables to confirm the impact.

This is where Odoo’s logic “clicks” for your team – they see exactly how daily actions change financial statements.

6. Bank, Cash, and Reconciliation Models

Bank accounts and cash boxes need their own journals and bank/cash accounts in the chart of accounts. For live bank feeds, connect your bank and let Odoo import transactions. For petty cash, you’ll create “manual statements” to mirror the paper log kept in your cash box.

During reconciliation, Odoo lets you match statement lines to invoices, bills, and payments. For recurring items like bank fees, use reconciliation models (small rule‑based templates) so a single click posts them to the correct expense account every time.

7. Bringing Historical Accounting into Odoo Without Losing Your Mind

Odoo does not make it easy to reproduce every historical transaction with full detail, and most businesses don’t truly need that.

A practical approach used in many ERPixel projects:

  • Summarize accounting history by month. From your legacy system, export monthly balances and import them into Odoo as monthly miscellaneous journal entries. This keeps P&L and balance sheet trends intact without recreating every invoice.
  • Import sales and purchasing history for relationship context. Bring in historical orders and invoices as fully paid/received so they don’t create open balances but still give you vendor/customer history.

This gives you meaningful comparative reporting (this month vs last year, etc.) while keeping implementation fast and manageable.

Wrapping Up: A Clean Path to Confident Odoo Accounting

The answer to our original question is clear: you get reliable Odoo Accounting not by toggling random settings, but by following a deliberate sequence – install accounting, configure journals, structure a useful chart of accounts, set up contacts and product categories properly, then validate the full sales, purchase, and bank reconciliation cycle.

Done well, journals and journal entries become a transparent trail from every invoice and bill to clear management reports. Your Profit & Loss tells a true story, aging reports highlight real risks, and bank balances match reality.

If you’d like expert help designing this foundation, migrating data, or automating reconciliation and reporting, ERPixel, an official Odoo Partner, can guide you end‑to‑end – from accounting setup to full ERP implementation and custom development. Contact ERPixel today to build an Odoo environment your finance team can actually trust and scale with.

Related Post