Accounts Payable in Odoo: How Vendor Bills, Stock Valuation, and PO Matching Work Together

Image of a checklist and calculator for managing small business accounting tasks efficiently.

It usually starts with a small finance headache: the warehouse says the items arrived, the buyer says the PO is done, and accounting says, “Great—where is the vendor bill?” In many companies, those three statements don’t connect cleanly, so you end up with messy accruals, inventory that “looks right” but isn’t valued right, and vendor balances that don’t match reality. Accounts Payable in Odoo is designed to stop that disconnect by linking the purchase order, the receipt, and the vendor bill into one consistent flow.

The key question this article answers is: how do vendor bills in Accounts Payable in Odoo impact inventory valuation and accounting entries, and how do you correctly match bills to purchase orders?

Key terminology you’ll see in Accounts Payable in Odoo

  • Vendor Bill — The supplier invoice you record in Accounting to recognize what you owe.

    Example: Vendor One sends a $30 bill for Product 2; you post it and Odoo credits Accounts Payable.
  • Purchase Order (PO) — The commitment created in the Purchase app that drives receipts and can generate a bill.

    Example: PO020 is confirmed and creates a receipt for incoming products.
  • Receipt (Stock Move) — The warehouse operation that brings products into inventory and can create valuation journal entries.

    Example: Validating the receipt updates inventory and posts stock valuation moves.
  • Automated Inventory Valuation — Odoo automatically posts accounting entries when stock moves happen.

    Example: When you receive goods, Odoo posts to Stock Valuation and Stock Interim Received.
  • Stock Interim Received (GRNI) — A clearing account used to bridge the timing gap between receiving goods and receiving the vendor bill.

    Example: Receipt impacts Stock Interim Received, then the vendor bill offsets it.
  • Average Cost — A costing method where the product cost is recalculated based on received quantities and values.

    Example: Product 2 has an average cost of $30 at the time of receipt and billing.

Why this matters: the real problem behind vendor bills

The underlying issue is timing. Businesses often receive products before they receive the vendor bill, or they receive the bill later and enter it manually. If your system can’t reconcile those events, you get distorted financial statements: inventory may be overstated or understated, and liabilities may not reflect what you truly owe. Accounts Payable in Odoo addresses this by making the receipt, valuation, and bill part of one auditable chain.

Business example 1: a distribution company with fast inbound shipments

A distributor receives pallets daily and validates receipts immediately so sales can ship orders. But vendor invoices arrive weekly. Without a clearing mechanism, inventory gets updated operationally, while accounting remains behind. The consequence is month-end chaos: the finance team scrambles to accrue purchases and reconcile inventory movements manually. With Accounts Payable in Odoo and automated inventory valuation, the receipt can post to Stock Interim Received and Stock Valuation automatically—so accounting reflects reality even before the bill arrives.

Business example 2: a manufacturing firm tracking raw materials by category

A manufacturer buys raw materials where costing method and product category settings drive accounting behavior. If a category is misconfigured (manual vs automated valuation, wrong interim accounts), vendor bills post to unexpected accounts and inventory valuation becomes unreliable. The consequence isn’t just “an accounting problem”—it breaks margin reporting, COGS timing, and audit confidence. Proper setup and disciplined bill matching in Accounts Payable in Odoo prevents those downstream issues.

How Accounts Payable in Odoo ties Purchasing, Inventory, and Accounting together

The strongest feature in Accounts Payable in Odoo is not the bill screen itself—it’s the way Odoo connects modules. You can start in Purchasing, validate operations in Inventory, and end in Accounting with journal entries that are consistent and traceable.

Step 1: Create and confirm the purchase order

In the Purchase app, you create a new PO, select the vendor (for example, Vendor One), and add products. Odoo can pull details like payment terms or fiscal positions from the vendor record, reducing manual retyping and standardizing vendor conditions across the team.

Step 2: Validate the receipt and let automated valuation do the heavy lifting

When inventory valuation is set to Automated, validating a receipt creates accounting entries based on stock moves. For an average-cost product category, Odoo posts valuation using the product category’s accounts.

Practically, this is where the Stock Interim Received account matters. The receipt creates a valuation journal entry that typically:

  • Debits Stock Valuation (Automated) to increase the value of inventory on hand.
  • Credits Stock Interim Received to represent goods received but not yet invoiced (a clearing position).

This is a clean accounting story: inventory is recognized when you physically receive it, while the payable is recognized when the vendor bill is posted.

Step 3: Create the vendor bill from the PO (or match it later in Accounting)

You can create the bill directly from the purchase order using Create Bill. This is common when procurement and accounting collaborate closely. Once the bill is generated, Accounts Payable in Odoo brings in the vendor, products, quantities, and prices from the PO.

When you post the vendor bill, Odoo offsets the interim clearing and records the liability:

  • Debit Stock Interim Received (clearing the “received not invoiced” balance).
  • Credit Accounts Payable (recognizing what you owe the vendor).

That pairing is the operational-to-financial bridge many ERPs struggle to keep consistent—especially at month-end.

Step 4: Use “To Check” and autopost controls for better internal governance

In real accounting teams, not every bill should be posted the moment it’s entered. In Accounts Payable in Odoo, you can mark a bill as To Check so it appears on the vendor bills dashboard as a verification task. This supports separation of duties: one person enters, another reviews.

Odoo also supports autopost on a specific date. That means you can keep a vendor bill in draft until the correct accounting date, then let it post automatically—useful for period-end controls or scheduled postings.

Step 5: Enter bills when they arrive—and match to the PO using autocomplete

Many companies don’t create bills from Purchasing; they wait for the vendor invoice PDF and then enter it in Accounting. Odoo supports this workflow too. In Accounting, you create a new vendor bill and use the autocomplete field to select the related purchase order. Odoo then fills the bill lines from the PO and links the documents with smart buttons.

This approach sets you up for stronger controls such as three-way matching (PO vs receipt vs bill) and future automation like OCR bill capture. If you want to implement these flows cleanly, ERPixel can configure the right accounts, categories, and approvals as an official Odoo Partner—so your AP process is reliable from day one.

Conclusion: the clear answer to the vendor bill vs receipt confusion

Accounts Payable in Odoo solves the core question by connecting purchasing, receiving, and billing into one accounting narrative: receipts update inventory and post to Stock Interim Received, then vendor bills clear that interim balance and credit Accounts Payable. The result is accurate valuation, clean liabilities, and traceable documents—whether you create bills from the PO or enter them later and match via autocomplete.

If you want to implement Accounts Payable in Odoo with correct product category accounting, automated valuation, and strong AP controls (To Check, autopost, PO matching), contact ERPixel for Odoo development and implementation. We’ll help you set up a process your purchasing, warehouse, and finance teams can all trust.

Related Post