How to Configure Default Accounts in Odoo 18 Accounting: Step by Step Guide
By Braincuber Team
Published on March 11, 2026
Every financial transaction in Odoo 18 needs a destination account — and if you don't map the right defaults, your journal entries will either fail or land in the wrong place. We've seen D2C brands lose 3-4 hours per week manually correcting misposted exchange differences and deferred revenue entries. This complete tutorial walks you through every default account category in Odoo 18 Accounting so your postings hit the right ledger accounts automatically.
What You'll Learn:
- How to navigate and customize the Chart of Accounts in Odoo 18
- How to create new accounts with the correct Type and Reconciliation settings
- How to configure all 7 Default Account categories in Settings
- Exchange Difference, Bank Transaction, and Deferred Entry mappings
- Early Payment Discount, Product, and Invoice Line Discount defaults
The Chart of Accounts — Your Starting Point
Before you touch any default account setting, you need to know what accounts you actually have. Odoo 18 ships with a country-specific Chart of Accounts (COA) out of the box. But here's the thing — that default COA covers maybe 70% of what a real D2C operation needs. The rest? You'll build it as you go.
Accessing the Chart of Accounts
Open the Accounting Module
Go to the main Odoo dashboard and click on the Accounting module.
Navigate to Chart of Accounts
Go to Configuration menu and select Chart of Accounts. This displays all accounts in your company's general ledger — income, expenses, assets, liabilities, the whole lot.
Review the List View Columns
Each account row shows: Code, Account Name, Type, Allow Reconciliation, and Company. The Type field is critical — it drives legal reports, fiscal year closing rules, and opening entries for the new year.
Key COA Filters in Odoo 18
Odoo 18 gives you built-in filters to slice through your COA fast. No more scrolling through 200+ accounts trying to find the one you need.
| Filter | What It Shows |
|---|---|
| Receivable | Accounts tracking money owed to you by customers |
| Payable | Accounts tracking money you owe to vendors |
| Equity | Owner's equity and retained earnings |
| Assets | Current and fixed asset accounts |
| Liability | Short-term and long-term liability accounts |
| Income | Revenue and other income accounts |
| Expenses | Cost of goods sold and operating expenses |
| Accounts with Entries | Only accounts that have journal entries posted |
| Inactive Accounts | Archived or disabled accounts |
Creating a New Account
Click "New" in Chart of Accounts
A new line appears in the list view. Fill in the Code (e.g., 610200), Account Name (e.g., Exchange Gain), Type, and Company.
Set the Allow Reconciliation Flag
Enable Allow Reconciliation if you need to match journal entries with invoices or payments on this account. Critical for receivable, payable, and bank suspense accounts.
Add Tags and Check Balance
Use Tags for custom reporting filters. The Balance smart button shows the running debit/credit totals for the account.
Account Type Matters
The Type field drives Odoo's legal/fiscal reports and year-end closing entries. Pick the wrong type and your P&L or Balance Sheet will be off — and your accountant will not be happy.
Configuring Default Accounts — The 7 Categories
Once your COA has the accounts you need, go to Accounting > Configuration > Settings. Scroll down to the Default Accounts section. This is where you tell Odoo: "When X happens, post to this account automatically."
We'll break down each of the 7 default account groups below. Mess any of these up and your automated postings will silently post to the wrong ledger.
1. Exchange Difference Entries
If you deal in multiple currencies *(and most D2C brands selling to USA, UK, and UAE do)*, Odoo needs to know where to post the gains and losses from exchange rate fluctuations.
Journal
The journal where exchange difference entries get posted. Usually your "Exchange Difference" or "Miscellaneous" journal.
Gain Account
When a favorable exchange rate means you receive more money than originally invoiced — that upside posts here.
Loss Account
When the exchange rate moves against you and you lose money on the conversion — it posts here. Track this carefully; it adds up fast.
2. Bank Transactions and Payments
Bank reconciliation in Odoo relies on two critical default accounts. Get these wrong, and your bank feeds will create entries that sit orphaned in limbo.
Bank Suspense Account = Temporary holding for unmatched bank transactions
During bank reconciliation, if a transaction can't be matched to a customer invoice or vendor bill, it lands here. Think of it as a parking lot for mystery transactions.
Internal Transfer Account = Intermediate step for inter-bank transfers
When you move money between two of your company's bank accounts, this account acts as the bridge — ensuring both sides of the transfer are recorded correctly.
3. Deferred Revenue Entries
Sell annual subscriptions? Collect deposits before delivery? Then you're dealing with deferred revenue — money collected now for services delivered later. Odoo can handle the recognition schedule automatically, if you map the accounts correctly.
| Field | What It Does |
|---|---|
| Journal | The journal used to post deferred revenue entries. Use a dedicated "Deferred Revenue Journal" for cleaner audit trails. |
| Deferred Revenue Account | Temporarily holds customer payments received in advance. Revenue is recognized over time, not all at once. |
| Generate Entries | Creates the deferred revenue recognition schedule automatically when the invoice is validated. |
| Based on | Controls how the deferral amount is divided — evenly across months or based on days. |
4. Deferred Expense Entries
Same logic as deferred revenue, but flipped. When you pay upfront for something you'll consume over several months — annual software licenses, insurance premiums, bulk packaging material — the cost shouldn't hit your P&L in one shot.
| Field | What It Does |
|---|---|
| Journal | Used to record deferred expense entries. Customize to "Deferred Expense Journal" for better tracking. |
| Deferred Expense Account | Temporarily holds prepaid expenses that benefit future periods. Expense is recognized gradually. |
| Generate Entries | Starts the deferred expense amortization schedule when the vendor bill is validated. |
5. Early Payment Discounts
Offer 2/10 Net 30 terms? Get a discount from your vendor for paying early? Odoo needs two accounts to track both sides of that coin.
Early Discount Gain
You pay a vendor bill early, they knock off 2%. That savings posts here. It's income — recognized because you were smart with cash flow.
Early Discount Loss
You offer customers a discount for paying early. The cost of that generosity posts here. Track it — these add up to thousands over a quarter.
6. Product Accounts
These are the fallback accounts Odoo uses when a product doesn't have its own income or expense account set. For most D2C operations, you'll rely heavily on these defaults.
| Account | Purpose | When It's Used |
|---|---|---|
| Income Account | Default sales revenue account | Every customer invoice line where the product doesn't override it |
| Expense Account | Default cost/expense account for purchases | Every vendor bill line where the product doesn't override it |
| Down Payment Account | Holds advance payments from customers | When you collect a deposit via Sales Order before full delivery |
Product-Level Override
Individual products can override these defaults in their own Accounting tab. The default only kicks in when a product doesn't have a specific account set. If you have 500+ SKUs and don't want to set each one individually — make sure these defaults are correct.
7. Invoice Line Discounts
When you apply a discount directly on an invoice line *(not a global discount)*, Odoo needs to know where to post that discount amount. There are two scenarios:
Customer Invoices
The discount given is posted to the same income account as the product sold — or to a dedicated Invoice Discount account if configured.
Vendor Bills
Same logic, but for purchases. A discount on a vendor bill reduces the value posted to the product's expense account — or to the Invoice Discount account.
Scenario: Sales Order with 10% line discount
Product Price: $100.00 | Discount: 10%
Customer pays: $90.00
Discount amount ($10.00) posts to: Invoice Discount Account
When the invoice is created from the order, Odoo automatically posts the $10.00 discount to the configured Invoice Discount account — keeping your revenue account clean.
Quick Reference: All 7 Default Account Categories
| Category | Key Accounts | Why It Matters |
|---|---|---|
| Exchange Differences | Journal, Gain, Loss | Multi-currency transactions post correctly |
| Bank Transactions | Suspense, Internal Transfer | Bank reconciliation works without orphaned entries |
| Deferred Revenue | Journal, Revenue Account, Schedule | Advance payments recognized over time |
| Deferred Expense | Journal, Expense Account, Schedule | Prepaid costs amortized correctly |
| Early Payment Discounts | Gain, Loss | Payment term discounts tracked separately |
| Product Accounts | Income, Expense, Down Payment | Fallback for products without specific accounts |
| Invoice Line Discounts | Customer Invoice, Vendor Bill | Line-level discounts post to correct ledger |
Frequently Asked Questions
Where do I find the Default Accounts settings in Odoo 18?
Go to Accounting > Configuration > Settings. Scroll to the Default Accounts section. All 7 categories are configured here under one tab.
Can I use the same journal for deferred revenue and deferred expenses?
Technically yes, but we don't recommend it. Using dedicated journals makes audit trails cleaner and keeps your reporting filters actually useful.
What happens if I don't set a Bank Suspense Account?
Unmatched bank transactions during reconciliation will fail or post to a system default account you didn't choose — creating a mess in your trial balance that takes hours to untangle.
Do product-level accounts override the default Product Accounts?
Yes. If a product has its own Income or Expense account set in its Accounting tab, that account takes priority. The defaults only apply when the product doesn't have specific accounts configured.
How does the Invoice Line Discount differ from Early Payment Discount?
Invoice Line Discounts are applied directly on individual lines of an invoice (e.g., 10% off a product). Early Payment Discounts are triggered by payment terms (e.g., 2% off if paid within 10 days). Different triggers, different accounts.
Need Help Configuring Odoo 18 Accounting?
Our team has configured default accounts for 40+ D2C brands across the US, UK, and UAE. We know which accounts trip people up and where the silent mispostings happen. Let us audit your setup before your next close.
