Accounting: Customers + Vendors: 3-Way Matching


This document covers 3-Way Matching in the Odoo 16 Purchase application and is intended to help understand the different billing states. 3-Way Matching compares the information shown on the Purchase Order, the Vendor Bill, and the Receipt, and informs you whether or not you should pay a bill. This prevents you from paying incorrect or fraudulent vendor bills. 


To get started, navigate to the Purchase app.

Once there, go to Configuration > Settings. Under Invoicing, enable '3-way matching: purchases, receptions and bills', then set Bill Control to 'Received Quantities'.


When you're ready, click Save.


3-Way Matching only works when Bill Control is set to Received Quantities.

Next, navigate to Orders > Purchase Orders.

Begin by clicking   Group By  > Add Custom Group set the field to "Billing Status," and click APPLY

This organizes your Purchase Orders by Billing Status:
  • Fully Billed: This indicates that a bill has been created for the Purchase Order. This however, does not mean it has been paid, since this is looking at billing status and not payment status.

  • Nothing to Bill: Since Bill Control is configured to bill on 'Received quantities', this billing status means you have a confirmed Purchase Order but have not yet received any products.

    • Note: This status does not apply to the Vendor Bill Control Policy: 'Ordered quantities'  set on the product template, since those products would be ready to bill immediately with that configuration.
  • Waiting Bills: This only applies to the 'Ordered quantities' Bill Control setting and means Odoo is waiting on confirmation of a purchase order.

Now, let's cover the relevant statuses in more detail.

A Fully Billed status means that all lines eligible to be billed, have been billed. All quantities and prices are the same across the purchase order, the vendor bill, and the receipt. If you look under the Other Information tab, you will see Billing Status as 'Fully Billed'. 

A Nothing to Bill status indicated that products have not yet been received for this Purchase Order, therefore, there is nothing to bill since our Bill Control is set to bill on 'Received Quantities'.

A Waiting Bills status indicates that the full or even half the quantity of the product ordered was received. This means that you are able to create bills for the full or partial quantity.

Once items are received, you can click CREATE BILL.

Then, review the Invoice Lines, add the Bill Date, and finally Confirm the bill.

The most important piece before actually registering a payment, is to verify the Should be Paid field under the Other Info tab.

To learn more about what this fields means, please review our Customer + Vendor: Vendors: Vendor Bills documentation.

If everything checks out, then we can click Register Payment, add in our payment details and finally Create Payment. This process will mark our vendor bill as In Payment.

Good to Know!

Force Status

To override the status that Odoo recommends, simply change the Should be Paid value, check Force Status, and then save.