Odoo 17 Tutorial: 3-Way Matching in Purchasing

March 4, 2024

The 3-way matching feature is a key feature of Odoo’s Purchase app. 3-way matching ensures you pay vendor bills only after receiving the items listed in the purchase order. Odoo 17 makes this easier by linking purchase orders, invoices, and goods received notes together, helping you manage purchases and payments more effectively.

3-way matching in Odoo 17 ensures that your purchase reconciliation are always accurate

Odoo’s 3-way matching feature allows you to cross-verify data across 3 key documents:

  • Purchase Orders
  • Goods Received notes
  • Vendor Bills

This way you make sure that what you ordered, what you received, and what you’re being charged for all add up. 

Odoo 17 matches the following key info of your purchases: 

  • Quantity: Odoo makes sure the number of items you ordered is the same as what you received and were billed
  • Description: Odoo checks that the description of what you ordered matches what you received and were invoiced for
  • Price: Odoo confirms the price of the items you ordered matches the price of items you received and were invoiced

How does 3-way matching in Odoo 17 improve your purchase process?

  • Preventing Overpayment: You can use the 3-way matching feature to catch any discrepancies between the purchase order, goods received note, and supplier invoice, preventing overpayment due to incorrect quantities, descriptions, or prices.
  • Simplifying Invoice Processing: By using the 3-way matching feature, you can verify that all relevant details are correct and accounted for, simplifying invoice processing and payment stages.
  • Minimizing Supplier Disputes: By using the 3-way matching feature, you can quickly identify any discrepancies between what was ordered, received, and invoiced, reducing the risk of disputes with your suppliers and ensuring that all parties are in agreement.

How does 3-way matching work in Odoo 17?

Step 1: Enable 3-way matching in Settings

Go to the Settings of your Purchase App and ensure that the 3-way matching feature is enabled.

Step 2: Create a purchase order

This is the first step in the 3-way matching process. The purchase order should include details such as the supplier, the items to be purchased, and the quantities and prices.

Step 3: Check product Control policy

Once you added the product, click on the internal link to go to the product settings. Choose the “Purchase” tab & make sure that the correct control policy “On received quantities” is selected. 

Step 4: Confirm Order & Test 3-way matching

Go back to your Purchase Order and select “Confirm the Order”. Odoo 17 will now sent your RFQ automatically to the vendor. However, since you still have not received the products, you will not be able to create a vendor bill yet thanks to the 3-way matching. Instead, if you try to select “Create Bill” it will show you the following error message. 

Step 5: Receive goods

When the goods are received, a receipt should be created in the system to confirm that the correct items were received and in the correct quantities.

  • Select “Receive Products”. Here you can check that the demanded quantity and the quantity you will receive match. 
  • Select “Validate”

Step 6: Invoice receipt

The supplier will then send an invoice for the goods received. The invoice should be entered into the system and matched to the purchase order and the receipt.

Step 7: Approve & Pay

If there are no discrepancies, the matched data can be approved and the payment can be processed.

Mis-match case: Order only partially delivered

So far, so smooth, but what happens if your vendor only delivers parts of your order? To explore this use case, let us go back and create a new RFQ from scratch. As before, add vendor, product and for this example a quantity of 10.

Now let’s assume that the goods arrive, but instead of the full order of 10 products, only 5 are delivered. To run through this, select “Confirm Order” > “Receive Products”. Then change “Quantity” to 5. 

If you now try to validate the order, Odoo opens a wizard in which you have the option of creating a backorder. This way, you can continue processing the partially delivered order and at the same time set up an automatic reorder for the remaining products as soon as they are back in stock.

Now let’s assume receiving these products is time-sensitive for your business and you will not need the delivery at a later point. In this case you would select “NO BACKORDER”.If you then go back to your Purchase order and select “Create Bill” you will see that the vendor bill will automatically only invoice 5 products. 

We can now test Odoo’s 3-way matching by forcefully creating a mismatch. 

Change the invoiced line manually to 10 again and confirm the bill. This will create a mismatch between the demanded quantity (10), the delivered quantity (5) and the invoiced quantity (10).

Next, if you go to the tab “Other Info” you will see that Odoo 17 automatically detects this mis-match, by setting the status “Should Be Paid” to “Exception”. Yet it will not block the payment as there might be a valid reason for going through with the payment.


Talk to our experts for more Odoo 17 insights!

Whether you’re looking at implementing solid purchasing processes in Odoo 17 or customizing its 3-way matching feature to suit your unique workflows, our team of experts is ready to help! Contact us to discuss how we can fine-tune your business operations with Odoo, ensuring your project not only meets but exceeds expectations.

3-way matching in Odoo 17 ensures that your purchase reconciliation are always accurate

Odoo’s 3-way matching feature allows you to cross-verify data across 3 key documents:

  • Purchase Orders
  • Goods Received notes
  • Vendor Bills

This way you make sure that what you ordered, what you received, and what you’re being charged for all add up. 

Odoo 17 matches the following key info of your purchases: 

  • Quantity: Odoo makes sure the number of items you ordered is the same as what you received and were billed
  • Description: Odoo checks that the description of what you ordered matches what you received and were invoiced for
  • Price: Odoo confirms the price of the items you ordered matches the price of items you received and were invoiced

How does 3-way matching in Odoo 17 improve your purchase process?

  • Preventing Overpayment: You can use the 3-way matching feature to catch any discrepancies between the purchase order, goods received note, and supplier invoice, preventing overpayment due to incorrect quantities, descriptions, or prices.
  • Simplifying Invoice Processing: By using the 3-way matching feature, you can verify that all relevant details are correct and accounted for, simplifying invoice processing and payment stages.
  • Minimizing Supplier Disputes: By using the 3-way matching feature, you can quickly identify any discrepancies between what was ordered, received, and invoiced, reducing the risk of disputes with your suppliers and ensuring that all parties are in agreement.

How does 3-way matching work in Odoo 17?

Step 1: Enable 3-way matching in Settings

Go to the Settings of your Purchase App and ensure that the 3-way matching feature is enabled.

Step 2: Create a purchase order

This is the first step in the 3-way matching process. The purchase order should include details such as the supplier, the items to be purchased, and the quantities and prices.

Step 3: Check product Control policy

Once you added the product, click on the internal link to go to the product settings. Choose the “Purchase” tab & make sure that the correct control policy “On received quantities” is selected. 

Step 4: Confirm Order & Test 3-way matching

Go back to your Purchase Order and select “Confirm the Order”. Odoo 17 will now sent your RFQ automatically to the vendor. However, since you still have not received the products, you will not be able to create a vendor bill yet thanks to the 3-way matching. Instead, if you try to select “Create Bill” it will show you the following error message. 

Step 5: Receive goods

When the goods are received, a receipt should be created in the system to confirm that the correct items were received and in the correct quantities.

  • Select “Receive Products”. Here you can check that the demanded quantity and the quantity you will receive match. 
  • Select “Validate”

Step 6: Invoice receipt

The supplier will then send an invoice for the goods received. The invoice should be entered into the system and matched to the purchase order and the receipt.

Step 7: Approve & Pay

If there are no discrepancies, the matched data can be approved and the payment can be processed.

Mis-match case: Order only partially delivered

So far, so smooth, but what happens if your vendor only delivers parts of your order? To explore this use case, let us go back and create a new RFQ from scratch. As before, add vendor, product and for this example a quantity of 10.

Now let’s assume that the goods arrive, but instead of the full order of 10 products, only 5 are delivered. To run through this, select “Confirm Order” > “Receive Products”. Then change “Quantity” to 5. 

If you now try to validate the order, Odoo opens a wizard in which you have the option of creating a backorder. This way, you can continue processing the partially delivered order and at the same time set up an automatic reorder for the remaining products as soon as they are back in stock.

Now let’s assume receiving these products is time-sensitive for your business and you will not need the delivery at a later point. In this case you would select “NO BACKORDER”.If you then go back to your Purchase order and select “Create Bill” you will see that the vendor bill will automatically only invoice 5 products. 

We can now test Odoo’s 3-way matching by forcefully creating a mismatch. 

Change the invoiced line manually to 10 again and confirm the bill. This will create a mismatch between the demanded quantity (10), the delivered quantity (5) and the invoiced quantity (10).

Next, if you go to the tab “Other Info” you will see that Odoo 17 automatically detects this mis-match, by setting the status “Should Be Paid” to “Exception”. Yet it will not block the payment as there might be a valid reason for going through with the payment.


Talk to our experts for more Odoo 17 insights!

Whether you’re looking at implementing solid purchasing processes in Odoo 17 or customizing its 3-way matching feature to suit your unique workflows, our team of experts is ready to help! Contact us to discuss how we can fine-tune your business operations with Odoo, ensuring your project not only meets but exceeds expectations.


in Odoo

Odoo topics that might also interest you:

Odoo integrations Odoo managed services  Odoo implementa​​​​tion

Your Dynamic Snippet will be displayed here... This message is displayed because you did not provided both a filter and a template to use.

Read more Odoo success stories: 

Meet much.! Learn more about our team

About us
Talk to our experts
Your Dynamic Snippet will be displayed here... This message is displayed because you did not provided both a filter and a template to use.

Topics that might also interest you: