Imagine running a bike shop somewhere in the heart of bustling Amsterdam, — a city where, as they say, there are more bikes than people. And indeed, your shop has everything, from everyday cruisers to high-performance road bikes with their own warehouse of spare parts and accessories for them. Every day — sales, purchases, people and bikes coming and going. Keeping track of all this movement is incredibly important and difficult — and not only for you!
When managing inventory, such businesses often find themselves at a crossroads: stay a bit old-school using a Periodic Inventory System where you count everything once in a blue moon (or at set intervals) and probably flip through a paper inventory book in search of the right part for your $7,000 carbon fiber road bike, or think about how to integrate a modern inventory system
This little dilemma is more than just a fork in the road. However, it has a great solution — an Odoo ERP as Inventory System that allows you to track your inventory in real time using the latest technology. Thanks to barcode labels, barcode scanners, RFID tags, and IoT sensors, this "photographic manager" keeps track of everything in its field of vision — recording every sale, purchase, or inventory adjustment, constantly updating your inventory based on where and when it happens.
Unlike old periodic inventory systems, Odoo's Perpetual Inventory System works 24/7. Whenever a product moves — whether it's received from suppliers, sold to customers, moved between warehouses, or used in production — Odoo instantly updates your inventory records. It's like an X-ray of your inventory levels at any given moment!
The system not only counts items but also tracks their cost and knows exactly how it affects both your inventory cost and your profit. No more shooting in the dark when it comes to knowing the value of your inventory! The benefit? Yes, you no longer need to manually check inventory or worry about stock levels because the system does the work for you — all within Odoo, the ERP solution you've been using for other business needs.
Importance of Journal Entries in Inventory Accounting
Now let’s talk about why Journal Entries are actually so important and how they make Odoo’s Inventory System work so well. Every time inventory changes hands in Odoo, the system creates Journal Entries behind the scenes.
Journal Entries are the backbone of inventory management in Odoo's perpetual inventory system. They record all inventory transactions and show the financial value of your inventory in real time.
Why Journal Entries Matter in Inventory Management?
- Real-time visibility: They show the financial impact of inventory changes right when they happen, offers up-to-date financial statements and reports.
- Accurate valuation: They keep your inventory asset value current on your balance sheet.
- Cost tracking: They follow costs as they move from inventory to Cost of Goods Sold (COGS).
- Audit trail: They ensures precise tracking of every financial transaction, create a clear history of all inventory transactions.
- Financial reporting: They provide accurate data for your financial statements.
When you receive, sell, move, or adjust inventory in Odoo, the system automatically creates Journal Entries to record these changes. This means your financial records always match your actual inventory, giving you a true picture of your business at any moment.
In Odoo, Journal Entries are accounting records that document all financial transactions within a company. Every Journal Entry in Odoo is like a detailed chapter in your business story, made up of essential elements that capture the full picture of each transaction:
- Date: The moment in time when money changed hands or goods moved
- Journal: Your organizational filing system (Sales, Purchase, Bank, etc.) that sorts entries by transaction typе
- Accounts: The specific financial "containers" affected by the transaction
- Descriptions: The story behind the numbers — why this transaction happened
- Debits and Credits: The yin and yang of accounting that must always balance perfectly
- Partner: The character in your story (customer or vendor) involved in this particular transaction
- Analytic Accounts: The subplot details that help you track costs or revenues by specific projects or departments
When your business is humming along — selling products, buying supplies, collecting payments — Odoo works its accounting magic behind the scenes:
- Each financial move triggers Odoo to automatically craft a perfectly balanced journal entry
- Every entry follows the golden rule of double-entry accounting: for every debit, there must be an equal credit.
- Odoo organizes these entries into specialized journals that act like chapters in your financial story:
- Sales Journal: Chronicles every product or service sold
- Purchase Journal: Logs vendor bills and purchases
- Bank Journal: Tracks payments and bank transactions
- Cash Journal: Manages cash transactions
These Journal Entries work together like an intricate puzzle, creating a complete and accurate picture of your business's financial health at any given moment. They transform countless individual transactions into meaningful financial reports that tell the true story of your business journey.
To enable automatic Journal Entries in Odoo, first install the Accounting app. Then, enable required settings: navigate to the Accounting app ‣ Configuration ‣ Settings, and in the Stock Valuation section, activate options such as Automatic Accounting.

With automated inventory valuation, Journal Entries are generated according to your accounting mode: Continental or Anglo-Saxon (check this in Developer mode under Accounting app ‣ Configuration ‣ Settings). In Anglo-Saxon accounting, Cost of Goods Sold is only reported when products are sold or delivered to customers. For perpetual inventory valuation, configure the Expense Account as an Expenses or Cost of Revenue type account (such as Cost of Production or COGS).
To configure Stock Input and Output Accounts, navigate to Inventory app > Configuration > Product Categories and select your category. These accounts serve as counterparts for incoming and outgoing stock moves respectively, unless specific valuation accounts are set on locations. Settings apply to all products in the category by default but can be configured individually per product.
Now, navigate to Inventory app ‣ Configuration ‣ Product Categories, and choose the desired product category. In the Inventory Valuation section, set the Inventory Valuation field to “Automated”. Repeat this step for every product category intending to use automatic inventory valuation. This setting ensures that Odoo generates Journal Entries automatically for every stock movement.

After enabling inventory valuation, the costing method for calculating and recording inventory costs is defined on the product category in Odoo. Go to Inventory app ‣ Configuration ‣ Product Categories and select the desired product category. In the Inventory Valuation section, select the appropriate Costing Method
In the Inventory Valuation section, choose the Calculation Method carefully. Just as a cyclist must select the right gear to conquer a mountain, you need to pick the appropriate inventory valuation method to navigate your financial landscape effectively. Let’s break down the main options:
- Standard price (default)
- FIFO (First-In, First-Out)
- AVCO (Average Cost)
Note.
Perpetual FIFO Flows: The Oldest Tires Roll First
With perpetual FIFO, the first costs that went into inventory are the first costs that come out when a sale is made — like using up the oldest tires in the back of the shop before cracking open a fresh set. This method keeps your cost records in line with actual sales.
Perpetual LIFO Flows: The Shortcut (But Not for Everyone)
is a bit like taking a shortcut through a back alley — it’s faster but not always allowed (especially under IFRS). With LIFO, the most recently purchased parts are sold first.
AVCO Flows: The Steady Ride
The moving average method finds the average cost of items each time you buy new stock. It’s like keeping a steady cadence on a long ride — smooth and predictable.
LIFO
AVCO
FIFO
Selling Bicycle Tires with FIFO
Day 1: Buy 20 tires at $30 each.
Day 2: Buy 20 more tires at $35 each.
Sale: Sell 30 tires.
COGS:
20 tires × $30 = $600
10 tires × $35 = $350
Total COGS: $950
Selling Bicycle Pedals with LIFO
Day 1: Buy 15 pedals at $40 each.
Day 2: Buy 15 more at $45 each.
Sale: Sell 20 pedals.
COGS:
15 pedals × $45 = $675
5 pedals × $40 = $200
Total COGS: $875
Bicycle Chains with Average Day 1: Buy 10 chains at $15 each. Day 2: Buy 10 more at $20 each. Total Cost: (10 × $15) + (10 × $20) = $350 Total Quantity: 20 Average Cost per Chain: $350 ÷ 20 = $17.50 |
Journal Entry:
Debit: COGS $950
Credit: Inventory $950
Journal Entry:
Debit: COGS $875
Credit: Inventory $875
Journal Entry:
Debit: COGS $87.50 (5 × $17.50)
Credit: Inventory $87.50
Basic Journal Entries
So in a Perpetual Inventory System, every transaction involving inventory always creates at least two records (of the fundamental Double-entry bookkeeping principle): one for debit and one for credit. When, for example, a bicycle or accessory is purchased, sold, returned, or adjusted, Journal Entries are made to keep the Inventory Account and COGS accurate.
In inventory context debits increase asset accounts (like Stock Valuation) and expense accounts (like COGS), credits decrease asset accounts and increase revenue/liability accounts. When inventory is purchased, Stock Valuation (asset) increases (debit), when inventory is sold, Stock Valuation decreases (credit) and COGS increases (debit). Basic Balance requirement: The total of debits must equal the total of credits in each journal entry.
Journal Entries in Perpetual Inventory System
Perpetual inventory systems create real-time Journal Entries for each inventory transaction. Key entries include: purchases (DR Stock, CR Payables), sales (DR Receivables, CR Revenue + DR COGS, CR Stock), and inventory adjustments (DR/CR Stock and Adjustment accounts), etc.
Journal Entries: Basic Received from a Sale
Scenario: A customer buys a bicycle for $500 (excluding tax).

Journal Entries: Basic Payabled from a Purchase
Scenario: The bicycle shop purchases inventory worth $500.

Journal Entries & Perpetual Inventory
Challenge & Solution: Basic Connects inventory management with accounting
- Adjusts stock levels.
- Creates a corresponding journal entry.
- Updates financial statements in real time.
Action
Automated Journal Entry
Customer Buys a Bike ($500)
Debit: Accounts Receivable $500
Credit:
Sales Revenue $500
Stock is Updated
Debit: COGS $300
Credit: Inventory Assets $300
Payment Received
Debit: Cash $500
Credit:
Accounts Receivable $500
Journal Entries & Retail Store & Perpetual Inventory
Challenge & Solution: Keeping track of products across multiple stores.
● Barcode scanning for instant stock updates.
● Automated Journal Entries to log sales and COGS.
Action
Automated Journal Entry
Product Arrival
Debit: Inventory Assets
Credit:
Accounts Payable
Product Sale
Debit: Accounts Receivable
Credit: Sales Revenue
Stock Reduction
Debit: COGS
Credit:
Inventory Assets
Journal Entries & E-commerce Business & Perpetual Inventory
Challenge & Solution: Keeping track of products across multiple stores.
● Integrates with online stores for real-time stock and accounting updates.
● Automates entries for sales, shipping, and returns.
Action
Automated Journal Entry
Online Sale
Debit: Accounts Receivable
Credit:
Sales Revenue
Stock Deduction
Debit: COGS
Credit:
Inventory Assets
Shipping Cost
Debit: Shipping Expense
Credit:
Cash
Journal Entries & Manufacturing/Production & Perpetual Inventory
Challenge & Solution: Managing raw materials and finished goods across multiple sites.
● Multi-warehouse support to automate stock transfers.
● Automated entries for raw material usage and production.
Action
Automated Journal Entry
Raw Material Used
Debit: COGS
Credit:
Inventory Assets
Finished Goods Produced
Debit: Inventory Assets
Credit: Work in Progress
Journal Entries & Landed Costs & Perpetual Inventory
Challenge & Solution: Adding shipping cost to a purchase
● When additional costs (shipping, customs, etc.) are added to purchase price.
Action
Automated Journal Entry
Shipping Cost
Debit: Stock Valuation (Asset) $100
Credit:
Landed Costs Payable $100
In Odoo, inventory valuation entries appear in Accounting app ‣ Accounting ‣ Journal
Entries and can be identified by checking the Journal column or by matching
Reference values with warehouse operation codes (e.g., WH/IN/00014 for
receipts). Clicking on an inventory valuation journal entry opens a
double-entry accounting record.


Inventory Adjustments & Journal Entries
Switching from manual to automatic inventory valuation in Odoo may cause discrepancies between stock valuation and accounting journals. To successfully transition: clear existing stock, change to automatic valuation, then restore original stock with its monetary value through inventory adjustments. After recovery, Odoo Accounting automatically generates corresponding Journal Entries.
Journal Entries & Inventory Adjustments & Perpetual Inventory
Challenge & Solution: Finding 20 extra units during count (valued at $10 each).
Action
Automated Journal Entry
Positive adjustments (increasing quantity)
Debit: Stock Valuation (Asset): $200
Inventory
Adjustment (Income): $200
Negative adjustments (decreasing quantity)
Debit: Stock Valuation (Expense): $200
Inventory Adjustment (Asset): $200
Perpetual Adjustment
Even the best cyclists hit a bump now and then — a flat tire or a slipped chain can throw things off balance. In the same way, even the most well-oiled perpetual inventory system can run into hiccups like damage, theft, or accounting errors. That’s where continuous adjustments come in, acting like a trusty roadside repair kit. They fix the kinks in your inventory records, ensuring everything runs as smoothly as a freshly greased bike chain. With these adjustments, you can correct stock levels and costs in real-time, keeping your business on track without having to pull over for a full inspection.
Journal Entries & Perpetual Adjustment
Challenge & Solution: Adjustment for Missing Handlebars
Recorded Inventory: 20 handlebars, Actual Count: 18 handlebars, Cost per Handlebar: $25
Action
Automated Journal Entry
Adjustment Entry
Debit: Inventory Shrinkage $50 (2 handlebars × $25)
Credit: Inventory $50
The bike shop owner made a smart choice by choosing a perpetual inventory system. With real-time updates, accurate pricing, and no surprises, it is a bit like investing in a high-end carbon fiber bike — it’s sleek, efficient, faster, smoother, and much more reliable. So, if you own a bike shop, don’t get stuck in the past. The Odoo platform, with support from Kodershop company, can help you manage real-time inventory across multiple warehouses from a single account. Choose a perpetual inventory system to keep your business growing at full speed!