3-Way Matching in Odoo 19

Afghanistan Åland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Caribbean Netherlands Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Cook Islands Costa Rica Croatia Cuba Curaçao Cyprus Czechia Denmark Djibouti Dominica Dominican Republic DR Congo Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Eswatini Ethiopia Falkland Islands Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern and Antarctic Lands Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and McDonald Islands Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Isle of Man Israel Italy Ivory Coast Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo Kuwait Kyrgyzstan Laos Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macau Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands North Korea North Macedonia Norway Oman Pakistan Palau Palestine Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Islands Poland Portugal Puerto Rico Qatar Réunion Romania Russia Rwanda Saint Barthélemy Saint Helena, Ascension and Tristan da Cunha Saint Kitts and Nevis Saint Lucia Saint Martin Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino São Tomé and Príncipe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Sint Maarten Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Türkiye Turkmenistan Turks and Caicos Islands Tuvalu Uganda Ukraine United Arab Emirates United Kingdom United States United States Minor Outlying Islands United States Virgin Islands Uruguay Uzbekistan Vanuatu Vatican City Venezuela Vietnam Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Blog
Published in Blog on March 16, 2026 5 min read
3-Way Matching in Odoo 19 Banner Image

Managing supplier invoices accurately is critical for maintaining financial control within an organization. Errors in invoice processing can lead to overpayments, disputes with vendors, and inconsistencies in accounting records. To address this, Odoo 19 provides a built-in three-way matching mechanism that verifies vendor bills by cross-checking them with purchase orders and stock receipts.

This automated validation ensures that businesses pay only for goods that have been both ordered and received, helping finance teams prevent billing discrepancies and maintain accurate financial records.

 


Setting Up Products for 3-Way Matching in Odoo 19

To demonstrate how three-way matching works, consider a sample product called Dining Table.

Open the product form in Odoo and navigate to the Purchase tab. Here, you will find the Bill Control Policy setting.

When the policy is configured as Received Quantities, Odoo restricts vendor billing until the items are physically received into inventory. This configuration is essential for enabling the three-way matching validation process.



By using this setting, the system ensures that invoices are created only after the products have been delivered and recorded in stock.

 


Activating 3-Way Matching in Odoo 19 Purchase Settings

Before using the feature, three-way matching must be enabled at the system level.

Navigate to:

Purchase → Configuration → Settings

Within the invoicing section, enable the 3-Way Matching option and save the configuration.

Once this feature is activated, Odoo automatically evaluates vendor bills by comparing:

  • The Purchase Order

     
  • The Goods Receipt

     
  • The Vendor Bill

 

This automated comparison helps detect inconsistencies between purchasing, inventory, and accounting records.

 


Creating a Purchase Order with Received Quantity Control

After configuring the settings, the purchasing process can begin.

Create a Request for Quotation (RFQ) or Purchase Order using a product, for example Drawer.

In this example, a purchase order is issued to a vendor for 50 units of the product. The pricing and vendor details are entered, and the RFQ is confirmed to initiate the procurement process.

Case 1: Vendor Bill Matches Received Quantity

After confirming the purchase order, the supplier delivers the goods.

Once 50 units are received and the receipt is validated, Odoo allows the user to create the vendor bill.

 



Since the billed quantity matches the received quantity, the invoice passes the three-way validation.

In the Other Information section of the vendor bill, the “Should Be Paid” status is automatically set to Yes, confirming that the invoice is valid for payment.

 



Case 2: Vendor Bills More Than Delivered Quantity

If the vendor bill is modified to reflect 100 units, while only 50 units have actually been received, Odoo immediately detects the mismatch.

 



The “Should Be Paid” field automatically changes to Exception.

This status alerts the user that the billed quantity exceeds the received quantity, preventing accidental overpayments and prompting the finance team to review the invoice before processing payment.

 

 


Case 3: Vendor Bills Less Than Received Quantity

In some situations, a vendor may bill for fewer units than what was delivered.

For example, if 50 units were received but the vendor bill includes only 10 units, Odoo still allows the invoice to be processed.

 



Because the billed quantity does not exceed the received quantity, the “Should Be Paid” field remains Yes, and the payment can proceed without issues.

 

 


Case 4: Invoice Created Before Goods Are Received

When a product is configured with the Received Quantities policy, vendor bills should only be issued after the goods are delivered.

If a vendor bill is created before the receipt is validated, Odoo automatically flags the invoice.

In the Other Information section, the “Should Be Paid” field is marked as No, indicating that payment should not proceed yet.

Once the receipt is validated and the products are recorded in inventory, the same invoice automatically updates its status to Yes, allowing the payment process to continue.

 


Meaning of the “Should Be Paid” Status in Odoo 19

The “Should Be Paid” field in Odoo 19 provides a quick overview of invoice validation status during the three-way matching process.

There are three possible outcomes:

  • Yes – The invoice quantity is less than or equal to the received quantity.
  • Exception – The invoice quantity exceeds the received quantity.
  • No – The invoice was created before the product receipt was validated.

These indicators help finance and procurement teams quickly identify discrepancies between purchasing, inventory, and accounting data, reducing the risk of payment errors.

 


Conclusion

The 3-Way Matching feature in Odoo 19 is a powerful tool for improving financial accuracy and internal control in procurement processes. By automatically comparing purchase orders, goods receipts, and vendor invoices, Odoo ensures that businesses only pay for what they have actually ordered and received.

This mechanism not only prevents overpayments but also improves transparency and coordination between purchasing, inventory, and accounting teams, making invoice management more reliable and efficient.

Hi...

Got ideas? We’ve got
the skills. Let’s team up.

Have a question or ready to discuss your project? Our team is here to help you scope, design, and deliver.

Trusted by Leading Businesses
Metro
Zabeel Equstrian
GEMS Logo
APSG Logo
Anisia Logo
Foodlinx Logo
🌐 +1
Select Subject?
send mail graphic