All posts
Functional4 min read

Handling Purchase Price Differences Between PO and Invoice in Odoo

Configure Odoo to detect, flag, and post price variance journal entries when a vendor bills at a different price than the approved purchase order - maintaining accurate inventory costs.

Purchase Price Differences in Odoo#

When a vendor invoice arrives at a different price than the purchase order, Odoo needs to account for the difference correctly - either adjusting inventory cost or posting the variance to an expense account.

Where Price Differences Occur#

Scenarios that create price differences:

  • Vendor sent an invoice with a typo or price update
  • Currency exchange rate changed between PO and invoice date
  • Negotiated discount not reflected on the vendor's invoice
  • Price agreed verbally differed from the written PO

How Odoo Handles the Difference#

Based on your product valuation method:

Standard Price: inventory is valued at a fixed standard cost. Price difference between PO and invoice goes to:

  • Debit: Purchase Price Difference (Expense account)
  • Credit: Accounts Payable (difference)

Average Cost (AVCO): inventory cost is updated when goods are received. At invoicing:

  • If invoice price > receipt price → adjusts inventory + posts difference
  • If invoice price < receipt price → credit adjustment to inventory

Setting the Price Difference Account#

Accounting → Configuration → Settings → Accounts → Price Difference Account:

  • Select an account (e.g., Purchase Price Difference 510500)
  • This account receives automatic postings when invoice price ≠ PO price

Price Difference Warning on Bills#

Purchase → Configuration → Settings → set Purchase Price Difference:

  • Threshold: e.g., 5%
  • If the vendor bill price differs from the PO price by more than 5%:

- Warning shown to the AP clerk

- Or require manager approval before posting

Correcting a Price Difference#

If the vendor billed incorrectly:

  1. Contact vendor → request a corrected invoice or credit note
  2. Do NOT post the incorrect invoice - hold it in draft
  3. Post only when the corrected amount is confirmed

If the price difference is legitimate (vendor's contract price changed):

  1. Update the PO with a purchase order amendment
  2. Post the vendor bill at the new price
  3. The price difference account absorbs the variance

Reporting#

Accounting → Reporting → General Ledger → filter by Purchase Price Difference account:

  • Total price variances this period
  • Which vendors are consistently billing above PO price
  • Which product categories have the highest price variance

Large, recurring variances indicate PO management or vendor management issues - either POs are being confirmed without current pricing, or vendors are ignoring agreed prices.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free