Enable Dark Mode!
By: Fajar Ashraf Vp

How 3 Way Matching Works in Odoo 16 Purchase Module

Functional Odoo 16 Purchase Odoo Enterprises

The following document discusses 3-Way Matching in the Odoo 16 Purchase module and is meant to assist in understanding the various billing phases. 3-Way Matching analyzes the details of the Purchase Order, Vendor Bill, and Receipt to determine whether you should make a payment. And when you desire to postpone the payment until the products are delivered. In such cases, you can also use 3 Way Matching. This keeps you from settling fraudulent or inaccurate bills from vendors.

To set up 3-way matching, make sure that the bill control policy is set to Received Quantities.

Odoo has two types of Bill control policies for purchasing products. On the basis of ordered quantity and on the basis of received quantity.

If the policy is based on ordered quantities, you can generate a vendor bill after the purchase has been confirmed. The purchase quantities will be the same as the quantities on the draft vendor bill.

And in the Received quantities, after getting the ordered products, create vendor bills. You can use this choice to settle the vendor bill based on the quantity you have received.


Odoo will make this control policy as the default on all new products generated after you select an appropriate Bill Control option from the Settings page. If you want to alter the preset control policy of a specific product, you can do it from the product detail page.

So now let’s configure the 3-way matching. For that, navigate to the configuration settings of the purchase module under the invoicing session.


By enabling the feature, the vendor bills will now show the Should Be Paid field under the Other info tab of the order.


There are three possibilities by default:

Yes, you should have to pay the bill and get the products.

No: When a payment is recorded and says "Paid," the Should Be Paid condition is forcefully set to "No.

Exception: there is a discrepancy between the amounts purchased, billed, and received.

Create a purchase order with the product having the control policy as Received quantity.


Now receive the 10 quantities as per the demanded quantity.


And generate the vendor bill for the order.


Here you can see that the ‘should be paid’ field is yes because of all the quantities that one ordered and received.

Create another purchase order and set the quantities to 10, and receive the 5 quantities.


Now create the bill for the 10 quantities.


Here, the ordered quantity was 10, and the received quantity is 5. But the bill was created for the 10 quantities. This is because the billing policy for that product is based on the received quantity. So In the other info, one can see that they should be paid field is showing an exception


because there is a distinction between what is purchased, what is received, and what is billed. So like this, if any incorrectness occurs in the orders, we can identify it and prevent fake vendor bills.

There’s one more option in should be paid’, and it is No. It can occur by choosing forcefully, and it can seem that marked as force status when a payment is recorded and says ‘Paid.’

If you need any assistance in odoo, we are online, please chat with us.


Leave a comment




Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kakkancherry, Calicut
Kerala, India - 673635



Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.



Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message