Journal Entries & Journal Items in Odoo 18
By Braincuber Team
Published on January 14, 2026
Your accountant needs to record a year-end accrual for unbilled consulting services. Your CFO wants to adjust depreciation entries manually before closing the books. You received an insurance refund that doesn't fit any standard invoice flow. You need to record these transactions directly as journal entries—the fundamental building blocks of double-entry bookkeeping.
Journal Entries in Odoo 18 are the foundation of all accounting records. Every invoice, payment, and transaction ultimately creates journal entries that affect your chart of accounts. While most entries generate automatically from sales, purchases, and payments, understanding how to create and manage manual journal entries gives you complete control over your financial records. This tutorial covers the complete workflow: creating entries, understanding journal items, posting, reversing, and viewing the consolidated journal items list.
Double-Entry Bookkeeping: Every transaction affects at least two accounts—one debited and one credited. The total debits must always equal total credits. This fundamental accounting principle ensures your books remain balanced and every dollar is accounted for.
Understanding Journal Entries vs Journal Items
JOURNAL ENTRIES VS JOURNAL ITEMS EXPLAINED ═══════════════════════════════════════════════════════════ JOURNAL ENTRY (Header Record) ─────────────────────────────────────────────────────────── The container that groups related transactions Contains: • Entry Number (e.g., MISC/2026/0001) • Accounting Date • Journal (Miscellaneous, Bank, Sales, etc.) • Reference (optional description) • Status (Draft, Posted) • Multiple Journal Items JOURNAL ITEMS (Line Records) ─────────────────────────────────────────────────────────── The individual debit/credit lines within an entry Each item contains: • Account (chart of accounts) • Partner (optional) • Label/Description • Debit amount OR Credit amount • Analytic account (optional) • Tax information (optional) RELATIONSHIP ═══════════════════════════════════════════════════════════ One Journal Entry → Many Journal Items Example: Recording Office Rent Payment JOURNAL ENTRY: MISC/2026/0045 ├── Date: 15-Jan-2026 ├── Journal: Miscellaneous Operations ├── Reference: January 2026 Office Rent └── Status: Posted JOURNAL ITEMS (3 lines): ┌────────────────────────────────────────────────────────┐ │ Account │ Label │ Debit │ Credit │ ├────────────────────────────────────────────────────────┤ │ 612100 Rent Expense │ Office rent │ $2,500│ │ │ 445661 Input VAT │ VAT 20% │ $500│ │ │ 401000 Accounts Pay. │ Landlord LLC │ │ $3,000 │ ├────────────────────────────────────────────────────────┤ │ TOTAL │ $3,000│ $3,000 │ └────────────────────────────────────────────────────────┘ Rule: Total Debits = Total Credits (ALWAYS) TYPES OF JOURNAL ENTRIES ═══════════════════════════════════════════════════════════ AUTOMATIC ENTRIES (System-generated) Created when you: • Confirm customer invoices → Sales journal • Confirm vendor bills → Purchase journal • Register payments → Bank/Cash journal • Process payroll → Payroll journal • Run depreciation → Miscellaneous journal MANUAL ENTRIES (User-created) Used for: • Year-end adjustments • Accruals and deferrals • Depreciation adjustments • Inter-company transfers • Error corrections • Non-standard transactions • Opening balances COMMON JOURNAL TYPES ═══════════════════════════════════════════════════════════ Sales Journal (SAJ) • Customer invoices, credit notes • Revenue recognition entries Purchase Journal (EXJ) • Vendor bills, refunds • Expense recognition entries Bank Journal (BNK1) • Bank transactions • Payment receipts and disbursements Cash Journal (CSH1) • Cash transactions • Petty cash entries Miscellaneous Journal (MISC) • Adjusting entries • Manual corrections • Non-standard transactions WHERE TO ACCESS ═══════════════════════════════════════════════════════════ Journal Entries: Accounting → Accounting → Journal Entries Shows all entries with date, number, partner, journal Journal Items: Accounting → Accounting → Journal Items Shows all individual lines across all entries Useful for searching specific account activity
Why Manual Journal Entries?
Adjusting Entries
Record accruals, deferrals, and other period-end adjustments that don't fit standard transactions.
Error Corrections
Fix posting mistakes, reclassify transactions, and correct account misallocations.
Inter-Company Transfers
Record transactions between related entities, cost allocations, and shared expenses.
Depreciation & Amortization
Manual depreciation entries when automated schedules need adjustment.
Opening Balances
Import beginning balances when migrating from another accounting system.
Currency Adjustments
Record exchange rate gains/losses and revaluation entries.
Creating a Manual Journal Entry
Access Journal Entries
- Go to Accounting → Accounting → Journal Entries
- View list of existing entries with date, number, partner, journal, and status
- Click New to create a manual entry
Fill Entry Header
- Journal: Select appropriate journal (Miscellaneous for adjustments)
- Reference: Enter descriptive reference (e.g., "Q1 2026 Accrued Expenses")
- Accounting Date: Date the transaction affects your books
Add Journal Items
Click Add a Line under Journal Items tab for each line:
- Account: Select from chart of accounts
- Partner: Optional - link to customer/vendor
- Label: Description of this line item
- Debit: Amount to debit (leave blank if credit)
- Credit: Amount to credit (leave blank if debit)
- Analytic: Optional analytic account for cost tracking
Verify Balance
- Check that Total Debits = Total Credits
- Odoo won't let you post if entry is unbalanced
- Review all lines for accuracy before posting
Post the Entry
- Click Post button to record entry
- Entry moves from Draft to Posted status
- Amounts now affect account balances and reports
Practical Examples
EXAMPLE: ACCRUED CONSULTING EXPENSE ═══════════════════════════════════════════════════════════ Scenario: Your company received consulting services in December 2025 Invoice not received until January 2026 Need to record expense in December for accurate financials JOURNAL ENTRY ─────────────────────────────────────────────────────────── Journal: Miscellaneous Operations Reference: December 2025 Accrued Consulting Services Accounting Date: 31/12/2025 JOURNAL ITEMS ┌─────────────────────────────────────────────────────────┐ │ Account │ Label │ Debit │ Credit │ ├─────────────────────────────────────────────────────────┤ │ 618100 Consulting Expense │ Dec consulting │ $5,000 │ │ │ 408000 Accrued Expenses │ Unbilled svc │ │ $5,000 │ ├─────────────────────────────────────────────────────────┤ │ TOTAL │ │ $5,000 │ $5,000 │ └─────────────────────────────────────────────────────────┘ Effect: ✓ December expense recognized correctly ✓ Liability recorded for unpaid service ✓ When invoice arrives in January, reverse this entry REVERSAL IN JANUARY ─────────────────────────────────────────────────────────── On January 1, 2026 (or when bill arrives): ┌─────────────────────────────────────────────────────────┐ │ Account │ Label │ Debit │ Credit │ ├─────────────────────────────────────────────────────────┤ │ 408000 Accrued Expenses │ Clear accrual │ $5,000 │ │ │ 618100 Consulting Expense │ Reverse accrual│ │ $5,000 │ └─────────────────────────────────────────────────────────┘ Then process actual vendor bill normally.
EXAMPLE: PREPAID INSURANCE ═══════════════════════════════════════════════════════════ Scenario: Paid $12,000 for 12-month insurance policy on Jan 1 Need to expense $1,000/month throughout the year Initial payment already recorded as prepaid asset MONTHLY AMORTIZATION ENTRY ─────────────────────────────────────────────────────────── Journal: Miscellaneous Operations Reference: Insurance Expense - January 2026 Accounting Date: 31/01/2026 JOURNAL ITEMS ┌─────────────────────────────────────────────────────────┐ │ Account │ Label │ Debit │ Credit │ ├─────────────────────────────────────────────────────────┤ │ 616000 Insurance Expense │ Jan insurance │ $1,000 │ │ │ 486000 Prepaid Insurance │ Amortization │ │ $1,000 │ ├─────────────────────────────────────────────────────────┤ │ TOTAL │ │ $1,000 │ $1,000 │ └─────────────────────────────────────────────────────────┘ Effect: ✓ Reduces prepaid asset by $1,000 ✓ Records insurance expense for the month ✓ Repeat this entry monthly for 12 months TIP: Use Auto-Post Feature ─────────────────────────────────────────────────────────── In "Other Info" tab, enable Auto-post Set recurrence: Monthly, 12 occurrences Entry posts automatically on specified date each month
EXAMPLE: INTER-COMPANY FUND TRANSFER ═══════════════════════════════════════════════════════════ Scenario: Parent company funds subsidiary for operations $50,000 transferred from parent to subsidiary Each company maintains separate books PARENT COMPANY ENTRY ─────────────────────────────────────────────────────────── Journal: Miscellaneous Operations Reference: Funding transfer to Subsidiary Inc. Accounting Date: 15/01/2026 ┌─────────────────────────────────────────────────────────┐ │ Account │ Label │ Debit │ Credit │ ├─────────────────────────────────────────────────────────┤ │ 267000 Interco Receivable │ Due from Sub │ $50,000 │ │ │ 512100 Bank Account │ Wire transfer │ │ $50,000 │ ├─────────────────────────────────────────────────────────┤ │ TOTAL │ │ $50,000 │ $50,000 │ └─────────────────────────────────────────────────────────┘ SUBSIDIARY COMPANY ENTRY ─────────────────────────────────────────────────────────── Journal: Miscellaneous Operations Reference: Funding received from Parent Corp. Accounting Date: 15/01/2026 ┌─────────────────────────────────────────────────────────┐ │ Account │ Label │ Debit │ Credit │ ├─────────────────────────────────────────────────────────┤ │ 512100 Bank Account │ Wire received │ $50,000 │ │ │ 166000 Interco Payable │ Due to Parent │ │ $50,000 │ ├─────────────────────────────────────────────────────────┤ │ TOTAL │ │ $50,000 │ $50,000 │ └─────────────────────────────────────────────────────────┘ Effect: ✓ Parent records receivable from subsidiary ✓ Subsidiary records payable to parent ✓ Both entries balance within each company ✓ Intercompany accounts eliminate in consolidation
Reversing Journal Entries
Sometimes you need to undo a posted entry—errors, temporary accruals, or corrections. Odoo provides a built-in reversal feature.
Open Posted Entry
- Navigate to the posted journal entry you want to reverse
- Entry must be in "Posted" status
Click Reverse Entry
- Click Reverse Entry button in action menu
- Pop-up window appears for reversal options
Configure Reversal
- Reversal Date: Choose date for reversal entry
- Journal Entry Date: Use same date as original
- Specific Date: Choose custom reversal date
- Journal: Optionally post to different journal
Confirm Reversal
- Click Reverse button
- Odoo creates new entry with debits/credits swapped
- Original entry remains posted (audit trail preserved)
- Net effect on accounts is zero
Important Notes:
- Cannot delete posted entries: Use reversal instead to maintain audit trail
- Cancel vs Reverse: Cancel returns draft to unposted; Reverse creates opposite entry
- Period locks: Cannot reverse entries in locked periods without admin override
- Bank reconciliation: Reversed entries may require re-reconciliation
Viewing Journal Items
While Journal Entries shows the grouped transactions, Journal Items displays all individual debit/credit lines across all entries—perfect for drilling into specific account activity.
JOURNAL ITEMS VIEW ═══════════════════════════════════════════════════════════ Navigation: Accounting → Accounting → Journal Items This view shows EVERY line from EVERY journal entry COLUMNS DISPLAYED ─────────────────────────────────────────────────────────── Date → Transaction date Journal Entry → Parent entry reference (e.g., INV/2026/0001) Account → Chart of accounts entry Partner → Customer/Vendor associated Label → Line description Currency Amt → Amount in foreign currency (if applicable) Debit → Debit amount Credit → Credit amount Matching # → Reconciliation number Analytics → Analytic account assigned FILTERING OPTIONS ═══════════════════════════════════════════════════════════ By Account: Filter to see all activity for specific account Example: Show all entries for "Bank Account" By Partner: View all transactions for one customer/vendor Useful for preparing statements By Date Range: Current month, quarter, year Custom date ranges By Journal: Filter to specific journal Example: All bank journal items By Unreconciled: Show only items not yet matched Useful for reconciliation cleanup EXAMPLE: FILTERING BANK ACCOUNT ACTIVITY ─────────────────────────────────────────────────────────── Filter: Account = "512100 Bank EUR" Period: January 2026 Results: ┌────────────────────────────────────────────────────────────────┐ │ Date │ Entry │ Partner │ Debit │ Credit │ ├────────────────────────────────────────────────────────────────┤ │ 02-Jan │ BNK1/2026/01 │ Customer A │ $5,000 │ │ │ 05-Jan │ BNK1/2026/02 │ Vendor X │ │ $2,800 │ │ 10-Jan │ BNK1/2026/03 │ Customer B │ $3,200 │ │ │ 12-Jan │ BNK1/2026/04 │ Vendor Y │ │ $4,500 │ │ 15-Jan │ MISC/2026/05 │ Landlord │ │ $3,000 │ │ 20-Jan │ BNK1/2026/06 │ Customer C │ $8,400 │ │ ├────────────────────────────────────────────────────────────────┤ │ TOTALS │ $16,600 │ $10,300 │ └────────────────────────────────────────────────────────────────┘ Net Change: $16,600 - $10,300 = +$6,300 MATCHING FEATURE ═══════════════════════════════════════════════════════════ Use Match button to reconcile journal items with bank statements Process: 1. Select unreconciled journal item 2. Click Match 3. Search for corresponding bank statement line 4. Confirm match 5. Items marked as reconciled Matching Number links reconciled items together
Auto-Post Feature
For recurring entries like monthly depreciation or rent accruals, use the Auto-Post feature to schedule automatic posting.
Auto-Post Settings (Other Info Tab):
- Enable Auto Post: Check to enable scheduled posting
- Auto Post At: Date/time to post automatically
- To Check: Flag entry for review before posting
- Recurrence: Set for recurring entries (monthly, quarterly, etc.)
Best Practices
✅ Journal Entry Best Practices:
- Always include references: Describe the purpose clearly for audit purposes
- Use appropriate journals: Don't mix sales transactions in miscellaneous journal
- Review before posting: Posted entries can only be reversed, not edited
- Document unusual entries: Add detailed labels explaining non-standard transactions
- Use analytic accounts: Track costs by department, project, or cost center
- Maintain period discipline: Post entries to correct accounting periods
- Regular reconciliation: Match journal items to bank statements promptly
- Segregate duties: Separate who creates entries from who approves them
- Backup before bulk changes: Export data before major adjustments
Conclusion
Journal entries are the foundation of all accounting in Odoo 18. While most entries generate automatically from invoices, bills, and payments, understanding manual journal entries gives you complete control over your financial records. Create entries by selecting a journal, adding balanced debit and credit lines, and posting. Use the Journal Items view to drill into specific account activity across all entries. Reverse entries when corrections are needed rather than deleting to maintain audit trails. For recurring entries, leverage the auto-post feature to automate monthly accruals and adjustments. Master journal entries and you master the heart of Odoo accounting.
🎯 Key Takeaway: Journal Entry = Header container | Journal Items = Debit/Credit lines | Total Debits must equal Total Credits | Use Miscellaneous journal for adjustments | Reverse entries for corrections (never delete) | Journal Items view shows all lines across entries.
