Skip to Content

Three-Way Matching in Odoo: Purchase Order, Receipt and Vendor Bill

Discover how three-way matching in Odoo connects purchase orders, receipts and vendor bills to improve payment controls, reduce invoice discrepancies and give finance teams stronger visibility over procurement and accounts payable.
16 min read
September 15, 2026
Accounting Firm Odoo ERP

Introduction

A vendor invoice should not automatically become a payment.

Before paying a supplier, finance teams need to know three things:

What did we order?

What did we actually receive?

What did the vendor bill us for?

This is the purpose of three-way matching in Odoo.

Three-way matching compares information across three business documents:

Purchase Order → Receipt → Vendor Bill

The purchase order represents the agreed purchase.

The receipt represents what the organization actually received.

The vendor bill represents what the supplier is requesting payment for.

When these three records agree, the invoice can move through the payment process with greater confidence.

When they do not agree, the difference should be identified and reviewed before payment is released.

Odoo supports three-way matching for vendor bills and uses the Received quantities bill control policy for this process. When enabled, Odoo provides a Should Be Paid status on vendor bills to help determine whether a bill can proceed for payment or requires attention.

The real value, however, is not simply enabling a checkbox.

The value comes from designing the business rules, tolerances, exception handling, responsibilities and payment controls around the matching process.


What Is Three-Way Matching in Odoo?

Three-way matching is a financial control that compares:

DocumentWhat It RepresentsKey Information
Purchase OrderWhat the company agreed to buyVendor, product, quantity, price
ReceiptWhat the company actually receivedReceived quantity, date, warehouse
Vendor BillWhat the supplier is requesting payment forBilled quantity, price, taxes, total

The basic logic is:

Purchase Order

What Was Ordered?

Receipt

What Was Received?

Vendor Bill

What Was Billed?

Match

Approve / Exception

Payment

Odoo's documentation describes three-way matching as a comparison of purchase order, vendor bill and receipt information to help determine whether a vendor bill should be paid.


Why Three-Way Matching Matters for Finance Teams

Without a structured matching process, accounts payable teams may have to manually compare:

  • Purchase orders
  • Goods receipts
  • Vendor invoices
  • Email confirmations
  • Delivery documents
  • Spreadsheets
  • Supplier statements

This creates several risks.

Overpayment

The vendor may invoice more units than were received.

Incorrect Pricing

The invoice may contain a higher unit price than the agreed purchase price.

Duplicate or Unnecessary Payments

An invoice may be processed even though the underlying purchase has not been properly validated.

Fraud Risk

A fraudulent or unauthorized invoice may bypass purchasing controls.

Receiving Errors

A bill may be processed even though goods have not yet been received.

Manual Work

Finance employees spend time investigating invoices that could have been controlled through a structured process.

Three-way matching introduces an additional control between procurement, inventory and accounts payable.


The Three Documents in Odoo Three-Way Matching

1. Purchase Order

The purchase order establishes the commercial expectation.

It typically contains:

  • Vendor
  • Product or service
  • Quantity
  • Unit price
  • Taxes
  • Delivery information
  • Payment terms
  • Purchase agreement

For example:

Product: Laptop

Ordered Quantity: 20

Unit Price: $1,000

The PO establishes what the company agreed to purchase.

2. Receipt

The receipt records what physically arrived.

For example:

Ordered: 20 laptops

Received: 18 laptops

The remaining two units may be:

  • Backordered
  • In transit
  • Cancelled
  • Damaged
  • Expected later

The receipt therefore provides the operational evidence needed by finance.

Odoo's received-quantity billing policy uses quantities actually received when creating the draft vendor bill.

3. Vendor Bill

The vendor bill represents the supplier's request for payment.

It may contain:

  • Product
  • Quantity
  • Unit price
  • Taxes
  • Discounts
  • Freight
  • Other charges
  • Total amount

For example:

Vendor Bill: 18 laptops × $1,000

This matches the received quantity.

The finance team can then review the bill with greater confidence.


The Ideal Three-Way Matching Workflow

A practical Odoo process can follow:

Purchase Request

RFQ

Purchase Order

Receipt

Vendor Bill

Three-Way Match

Match Successful?

↙         ↘

Yes        No

Payment Process   Exception Review

Odoo's current documentation states that three-way matching is intended to work with the Received quantities bill control policy.

This is important because the matching process depends on the relationship between the vendor bill and the quantities actually received.


1. Start With the Purchase Control Policy

Before implementing three-way matching, organizations should decide how vendor bills should be controlled.

Odoo provides two main bill control policies:

Ordered Quantities

Vendor bills are based on the quantities ordered.

Received Quantities

Vendor bills are based on quantities actually received.

For three-way matching, the Received quantities policy is the relevant control model in Odoo.

The choice should reflect the organization's procurement process.

For physical goods, receiving-based billing can provide stronger control because the organization verifies receipt before processing the related invoice.


2. Define What "Match" Means

Three-way matching should not simply mean:

“All numbers must always be identical.”

Real-world procurement contains legitimate differences.

For example:

  • Partial deliveries
  • Approved price changes
  • Freight charges
  • Taxes
  • Rounding differences
  • Damaged goods
  • Backorders
  • Credit notes
  • Vendor-specific billing practices

Therefore, the organization should define matching rules.

Matching AreaExpected Control
VendorSame approved supplier
ProductCorresponding purchased item
QuantityWithin approved tolerance
Unit PriceWithin approved tolerance
ReceiptRequired where applicable
TaxCorrect tax treatment
CurrencyExpected transaction currency
TotalReconciles with approved differences

This creates a controlled definition of a successful match.

3. Define Quantity Matching Rules

Quantity discrepancies are among the most common exceptions.

Consider:

PO: 100 units

Receipt: 95 units

Bill: 95 units

This may be a valid partial receipt.

Now consider:

PO: 100 units

Receipt: 95 units

Bill: 100 units

The finance team should investigate the additional five units.

Possible explanations include:

  • Vendor billed the full order before completing delivery.
  • Remaining goods are in transit.
  • Billing policy permits advance billing.
  • The invoice contains an error.
  • Receipt was not recorded correctly.

The system should support an exception process rather than allowing discrepancies to disappear.

4. Handle Partial Receipts Correctly

Partial receipts are common in procurement.

For example:

Purchase Order: 1,000 units

First Receipt: 600 units

Second Receipt: 400 units

The supplier may send:

  • One invoice for 600 units
  • Another invoice for 400 units

or potentially invoice according to another agreed commercial arrangement.

Odoo's received-quantity process can create bills based on received quantities, and when only part of an order has been received, the draft bill reflects the received quantity.

The finance policy should clearly define how partial receipts and multiple vendor bills are handled.

5. Define Price Matching Rules

Price discrepancies require careful treatment.

For example:

PO Price: $50

Vendor Bill: $52

The difference may be:

  • A vendor error
  • An approved price revision
  • A tax-related difference
  • A contract adjustment
  • A currency effect
  • An unapproved change

Do not treat every difference as automatically acceptable.

Define a policy such as:

Exact Match

or

Approved Tolerance

or

Mandatory Review

The appropriate rule depends on the organization's procurement controls.

6. Use Tolerances Carefully

Tolerances can reduce unnecessary manual work.

For example:

Allowed Price Difference: 1%

A small rounding difference may pass automatically.

A significant difference should trigger review.

However, tolerance rules should not become a way to bypass financial controls.

Define:

  • Quantity tolerance
  • Price tolerance
  • Amount tolerance
  • Currency tolerance
  • Tax tolerance
  • Approval requirements

A useful principle is:

Small operational variance → controlled tolerance

Material financial variance → human review

7. Define Exception Categories

Not every mismatch has the same cause.

Create clear exception categories.

Quantity Exception

Billed quantity is higher than received quantity.

Price Exception

Invoice price differs from purchase order price.

Receipt Exception

Invoice exists but receipt is missing.

Product Exception

Invoice contains an item that was not ordered.

Tax Exception

Tax treatment does not match the expected configuration.

Duplicate Exception

A similar invoice may already exist.

Commercial Exception

Contract or purchase terms changed after the PO.

Categorizing exceptions makes them easier to route and measure.


8. Define Who Owns Each Exception

Three-way matching crosses multiple departments.

That means exception ownership should be explicit.

ExceptionPrimary OwnerSupporting Team
Quantity mismatchWarehouseProcurement
Price mismatchProcurementFinance
Vendor errorProcurementAccounts Payable
Missing receiptWarehouseFinance
Tax mismatchFinanceTax/Accounting
Contract differenceProcurementFinance
Duplicate invoiceAccounts PayableProcurement
Integration failureITFinance

Without ownership, exceptions can remain unresolved while invoices wait for payment.

9. Understand the Odoo "Should Be Paid" Control

When three-way matching is enabled, Odoo provides a Should Be Paid field on vendor bills.

The field helps communicate whether the bill should proceed through payment.

Current Odoo documentation describes statuses including:

  • Yes
  • No
  • Exception

Odoo can automatically set the status based on the bill and matching information, while certain changes can result in an exception status.

This is useful because it gives finance teams a visible control point.

However, organizations should still define their internal approval policy around the status.

10. Understand the Exception Status

Suppose:

PO Quantity: 100

Received: 100

Vendor Bill: 110

The bill may require investigation.

Similarly:

PO Price: $100

Vendor Bill Price: $110

This could create an exception.

An exception does not necessarily mean the vendor is wrong.

It means:

“Something differs from the expected purchasing evidence and should be reviewed.”

The organization should determine:

  • Who investigates?
  • What evidence is required?
  • Who can approve?
  • Can the invoice proceed?
  • Should the PO be updated?
  • Should a vendor credit note be requested?


11. Do Not Confuse Matching With Approval

Matching and approval are related but different controls.

Matching

Does the vendor bill agree with the purchasing evidence?

Approval

Is the organization authorized to pay the bill?

A bill can technically match but still require management approval.

For example:

PO: $80,000

Receipt: Correct

Vendor Bill: Correct

The bill matches.

But company policy may still require CFO or department-head approval because of the amount.

Therefore:

Match → Approval → Payment

can provide stronger financial governance than simply:

Match → Payment


12. Connect Procurement and Accounting Responsibilities

Three-way matching works best when responsibilities are clearly separated.

Procurement

Owns:

  • Vendor selection
  • Commercial terms
  • Purchase order
  • Price agreements

Warehouse

Owns:

  • Receipt
  • Quantity verification
  • Physical delivery

Accounts Payable

Owns:

  • Vendor bill
  • Matching
  • Exception processing
  • Payment preparation

Finance Leadership

Owns:

  • Financial policy
  • Approval thresholds
  • Tolerances
  • Exception governance

This creates segregation of duties.


13. Add Payment Release Controls

Three-way matching should form part of the wider payment-control process.

A practical model is:

Vendor Bill Received

PO Exists?

Receipt Exists?

Three-Way Match

Exceptions?

Approval

Payment

This helps prevent accounts payable from treating every vendor invoice as immediately payable.

The goal is not to delay legitimate payments.

The goal is to ensure that payments are supported by appropriate purchasing evidence.


14. Handle Services Differently From Products

Three-way matching is particularly intuitive for physical goods because there is a receipt event.

Services can be different.

For example:

Consulting Service

PO: 100 hours

Service Delivered: 80 hours

Vendor Bill: 80 hours

The organization may need a service confirmation or another approval mechanism.

For service purchases, define:

  • Service completion evidence
  • Timesheets where applicable
  • Milestone approval
  • Contract terms
  • Purchase order
  • Vendor bill

The same control philosophy can apply, but the evidence may differ from a warehouse receipt.


15. Consider Freight and Additional Charges

Vendor invoices may include charges that were not represented as simple product lines.

Examples include:

  • Freight
  • Insurance
  • Handling
  • Customs
  • Packaging
  • Service charges

Finance should determine whether these charges:

  • Are included in the PO
  • Are contractually permitted
  • Require approval
  • Should be treated separately
  • Should affect inventory valuation where applicable

A matching process should account for legitimate commercial complexity rather than simply comparing invoice totals.


16. Consider Currency Differences

International procurement introduces another potential source of mismatch.

For example:

PO Currency: EUR

Vendor Bill: EUR

Company Currency: USD

The accounting value in company currency may change based on exchange rates.

The matching policy should distinguish between:

Commercial price difference

and

Accounting currency conversion difference

Otherwise, legitimate currency movements may be incorrectly classified as procurement exceptions.


17. Protect Against Duplicate Vendor Bills

Three-way matching should also operate alongside duplicate-invoice controls.

A duplicate bill may contain:

  • Same vendor
  • Same vendor reference
  • Same amount
  • Same invoice date
  • Same purchase order

A mature accounts-payable process should combine:

Duplicate Detection + Three-Way Matching + Approval Controls

This provides stronger protection than relying on any single control.


18. Test the Complete Exception Workflow

Before deploying a three-way matching process, test both successful and unsuccessful scenarios.

Scenario 1 - Perfect Match

PO: 100

Receipt: 100

Bill: 100

Expected: Normal payment process.

Scenario 2 - Partial Receipt

PO: 100

Receipt: 60

Bill: 60

Expected: Valid partial-billing process.

Scenario 3 - Excess Billing

PO: 100

Receipt: 60

Bill: 100

Expected: Exception review.

Scenario 4 - Price Difference

PO: $100/unit

Bill: $110/unit

Expected: Exception according to tolerance policy.

Scenario 5 - Missing Receipt

PO: 100

Receipt: 0

Bill: 100

Expected: Payment should not proceed under the received-quantity three-way matching model.

Scenario 6 - Approved Variance

PO: $100

Bill: $102

Expected: Apply approved tolerance or exception workflow.

Scenario 7 - Duplicate Invoice

Same vendor invoice reference already exists.

Expected: Duplicate control identifies the risk.

Testing these scenarios helps ensure that the process behaves correctly beyond the ideal case.


19. Build a Three-Way Matching Governance Matrix

A governance matrix can make the rules easier to operate.

ConditionResultActionOwner
PO = Receipt = BillMatchProceedAP
Partial receipt = billed quantityValid partial matchProceedAP
Bill > ReceiptQuantity exceptionInvestigateAP/Warehouse
Bill price > PO pricePrice exceptionReviewProcurement
No receiptReceipt exceptionHoldWarehouse/AP
Duplicate referenceDuplicate exceptionInvestigateAP
Within approved toleranceControlled matchProceedAP
Above toleranceMaterial exceptionApprovalFinance

The exact rules should be aligned with company policy and Odoo configuration.

20. Measure Three-Way Matching Performance

Finance teams should measure whether the process is actually improving accounts payable.

Useful KPIs include:

Matching Rate

Percentage of vendor bills matched without manual intervention.

Exception Rate

Percentage of bills requiring investigation.

First-Pass Match Rate

Percentage of invoices that pass the initial matching process.

Exception Resolution Time

Average time required to resolve mismatches.

Invoice Processing Time

Time from invoice receipt to approved payment.

Overpayment Prevention

Value of discrepancies identified before payment.

Duplicate Prevention

Number or value of duplicate invoices prevented.

On-Time Payment Rate

Percentage of valid vendor payments completed within agreed terms.

These KPIs connect financial controls with operational efficiency.


21. Monitor Exception Trends

Exception data can reveal problems outside accounts payable.

For example:

If most exceptions are quantity-related, the organization may have:

  • Receiving process problems
  • Delayed receipts
  • Warehouse data-entry issues
  • Vendor shipping problems

If most exceptions are price-related, there may be:

  • Outdated purchase orders
  • Weak contract management
  • Vendor pricing issues
  • Poor procurement controls

If most exceptions are duplicate-related, invoice processing controls may need improvement.

Therefore:

Exceptions are not only problems to resolve.

They are data for improving the procurement process.


22. Improve the Procure-to-Pay Process

Three-way matching works best when it is part of a broader procure-to-pay process.

A mature Odoo workflow can connect:

Purchase Request

RFQ

Vendor Selection

Purchase Order

Receipt

Vendor Bill

Three-Way Match

Approval

Payment

Reconciliation

This gives finance and procurement a shared view of the transaction lifecycle.


23. Define Governance Before Automating

Automation should follow clear business rules.

Do not start with:

“How can we automate invoice matching?”

Start with:

“What should happen when the documents match?”

“What should happen when they do not?”

“Who is allowed to approve exceptions?”

“Which differences are acceptable?”

“Which differences require investigation?”

“When can payment be released?”

Once these questions are answered, Odoo configuration and automation can support the governance model.


24. Review the Process Regularly

Three-way matching rules should evolve with the business.

Review:

  • Tolerance levels
  • Vendor behavior
  • Exception trends
  • Approval thresholds
  • Payment policies
  • New purchasing categories
  • New integrations
  • Accounting requirements
  • Warehouse processes

For example, if a company begins purchasing internationally, it may need new controls for:

  • Currency
  • Freight
  • Customs
  • Import charges
  • Partial shipments

Governance should evolve with procurement complexity.


Odoo Three-Way Matching Checklist

Before implementing or reviewing three-way matching, confirm:

Process

  • Current procure-to-pay process documented
  • Purchase order process defined
  • Receipt process defined
  • Vendor bill process defined
  • Payment process defined

Matching

  • Vendor matching rules defined
  • Product matching rules defined
  • Quantity matching rules defined
  • Price matching rules defined
  • Tax handling defined
  • Currency handling defined
  • Partial receipt rules defined
  • Partial billing rules defined

Tolerances

  • Quantity tolerance defined
  • Price tolerance defined
  • Amount tolerance defined
  • Approval threshold defined
  • Exception threshold defined

Exceptions

  • Quantity exceptions defined
  • Price exceptions defined
  • Missing receipt exceptions defined
  • Duplicate invoice controls defined
  • Ownership assigned
  • Resolution process documented

Odoo Configuration

  • Appropriate bill control policy selected
  • Three-way matching enabled where applicable
  • Product billing policies reviewed
  • Vendor bill workflow tested
  • Should Be Paid status reviewed
  • User permissions reviewed

Odoo's current documentation specifies that three-way matching is intended for the Received quantities bill control policy, so this configuration dependency should be included in implementation validation.

Financial Controls

  • Segregation of duties defined
  • Approval thresholds defined
  • Payment release controls defined
  • Exception approvals defined
  • Audit trail requirements defined

KPIs

  • Match rate
  • Exception rate
  • First-pass match rate
  • Exception resolution time
  • Invoice processing time
  • Duplicate prevention
  • Overpayment prevention
  • On-time payment rate


Common Three-Way Matching Mistakes

Mistake 1: Treating Every Difference as an Error

Some differences are legitimate.

The goal is controlled exception handling, not zero variance at any cost.

Mistake 2: Ignoring Partial Receipts

Partial deliveries are common and should be incorporated into the matching policy.

Mistake 3: Allowing Price Changes Without Approval

A vendor bill with a different price should have a defined review path.

Mistake 4: Focusing Only on Quantity

Price, taxes, currency and additional charges can also create financial discrepancies.

Mistake 5: No Exception Ownership

If nobody owns a mismatch, the invoice can remain unresolved indefinitely.

Mistake 6: Matching Without Payment Controls

A matching result should be part of a broader approval and payment-release process.

Mistake 7: Ignoring Services

Service purchases need appropriate evidence even when there is no physical warehouse receipt.

Mistake 8: No KPI Monitoring

Without measuring match rates and exceptions, finance teams cannot determine whether the process is improving.

Mistake 9: Automating Before Defining the Rules

Automation should enforce a clear policy rather than replace one.


Three-Way Matching vs Two-Way Matching

The difference can be summarized simply.

Two-Way Matching

Purchase Order ↔ Vendor Bill

The organization checks what was ordered against what was billed.

Three-Way Matching

Purchase Order ↔ Receipt ↔ Vendor Bill

The organization checks:

What was ordered?

What was received?

What was billed?

Three-way matching therefore introduces receiving evidence into the payment-control process.

For businesses purchasing physical goods, this can provide a stronger control over accounts payable.


Frequently Asked Questions

1. What is three-way matching in Odoo?

Three-way matching in Odoo compares the purchase order, receipt and vendor bill to help determine whether a vendor invoice should proceed through the payment process.

2. What are the three documents used in three-way matching?

The three documents are the Purchase Order, Receipt and Vendor Bill.

3. Why is three-way matching important?

It helps organizations identify quantity and pricing discrepancies, reduce incorrect payments and establish stronger controls between procurement, inventory and accounts payable.

4. Does Odoo support three-way matching?

Yes. Odoo supports three-way matching and provides a Should Be Paid status on vendor bills when the feature is enabled. The feature is intended to work with the Received quantities bill control policy.

5. What happens if the vendor bill does not match the receipt?

The discrepancy should be treated according to the organization's exception policy. Depending on the difference, the invoice may require investigation, approval or correction before payment.

6. Can three-way matching handle partial receipts?

Yes. Odoo's received-quantity workflow supports billing based on quantities received, which allows organizations to process partial receipts according to their procurement and billing policies.

7. What is a price variance in three-way matching?

A price variance occurs when the price on the vendor bill differs from the agreed purchase order price. Organizations should define acceptable tolerances and approval requirements for these differences.

8. Who should resolve three-way matching exceptions?

The owner depends on the exception. Procurement may handle price differences, warehouse teams may investigate quantity differences, and accounts payable may manage invoice or duplicate-bill issues.

9. Does three-way matching replace invoice approval?

No. Matching determines whether purchasing evidence supports the invoice. Organizations may still require separate approval based on amount, department, budget or financial policy.

10. How can businesses improve three-way matching in Odoo?

Start by defining matching rules, tolerances, exception ownership and payment controls. Then configure Odoo accordingly, test realistic scenarios and monitor KPIs such as match rate, exception rate and resolution time.


Conclusion

Three-way matching is more than an accounting feature.

It is a financial control connecting procurement, inventory and accounts payable.

The fundamental relationship is simple:

Purchase Order → What We Agreed to Buy

Receipt → What We Actually Received

Vendor Bill → What We Are Being Asked to Pay

When these three pieces of evidence align, finance teams can process payments with greater confidence.

When they do not, the difference becomes an exception that can be investigated before money leaves the organization.

Odoo provides the foundation for this process through purchase orders, receipts, vendor bills, received-quantity billing and the Should Be Paid control.

But effective Odoo three way matching depends on more than configuration.

Organizations should define:

Matching Rules → Tolerances → Exceptions → Ownership → Approval → Payment Release → KPIs

The strongest approach is to treat three-way matching as part of the broader procure-to-pay governance framework rather than as an isolated accounting setting.

When properly designed, it can help organizations reduce manual invoice checking, improve financial controls, identify procurement problems earlier and create a more reliable path from purchase order to payment.

Looking to improve your Odoo procure-to-pay and accounting controls?

Request an Odoo finance process assessment

Three-Way Matching in Odoo: Purchase Order, Receipt and Vendor Bill
Manoj Nataraj Odoo Functional Consultant

About the Author

I am an Odoo Functional Consultant specializing in ERP implementation, business process improvement, and system configuration. I works closely with businesses to streamline operations and maximize the value of their Odoo investment.
Book a Consultation

Share this post