All posts
Functional4 min read

Automating Three-Way Match for AP Processing in Odoo

Configure Odoo to automatically validate that vendor invoices match both the purchase order and goods receipt - catching billing errors before payment and reducing AP processing time.

Automated Three-Way Match in Odoo#

Three-way match validates that the vendor invoice matches both the purchase order and the goods receipt before payment is authorized. Odoo enforces this automatically - flagging discrepancies and requiring resolution before an invoice can be posted.

The Three Documents#

  1. Purchase Order (PO): what was authorized to buy (product, quantity, price)
  2. Goods Receipt: what was actually delivered (quantity received)
  3. Vendor Invoice (Bill): what the vendor claims is owed (price, quantity)

Match criteria: Invoice quantity ≤ Receipt quantity AND Invoice price = PO price (within tolerance)

How Odoo Enforces Three-Way Match#

When creating a vendor bill from a PO:

Purchase → [PO] → Create Bill:

  • Odoo pre-fills bill lines from the PO
  • Quantity: from the receipt (what was actually received - not what was ordered)
  • Price: from the PO

If the vendor's invoice shows a different price or quantity:

  • AP clerk compares vendor's PDF invoice to the Odoo pre-filled bill
  • Discrepancy found → flag for resolution

Price Tolerance Configuration#

Purchase → Configuration → Settings → Purchase Price Difference:

  • Tolerance: 2% (allow minor price variations without blocking)
  • Above 2% difference: warning displayed, approval required before posting

Quantity Discrepancy Handling#

Scenario: PO for 100 units. Receipt for 80 units. Vendor bills for 100 units.

Odoo allows the bill to be created for max 80 units (received quantity). The remaining 20 units:

  • Option 1: Create a backorder receipt (expecting remaining 20 units)
  • Option 2: Post a partial bill for 80 units; wait for the remaining 20 to arrive before the next bill

Automated Bill-from-PO Creation#

For high-volume procurement, automate bill creation:

Purchase → Configuration → Settings → Bill Control: on receipts

With this setting: when a receipt is validated, Odoo automatically creates a draft vendor bill for the received quantity at the PO price - AP team only validates (no data entry).

AP clerk workflow:

  1. Open the auto-created draft bill
  2. Compare to vendor's PDF invoice (price and quantity)
  3. If match: post the bill → payment scheduled
  4. If discrepancy: contact vendor or hold pending resolution

Audit Trail#

Purchase → [PO] → Bills button: all bills linked to this PO

  • Which receipts are billed
  • Billing status per PO line (billed, partially billed, not yet billed)
  • Price and quantity variances logged in the chatter

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

Get started free