Vendor Bills and Three-Way Matching in Odoo
Paying suppliers sounds simple until you are paying for goods you did not receive, or at prices you did not agree. Three-way matching is the control that stops that, and Odoo builds it in. Here is how vendor bills and matching work, without the accounting jargon.
What a vendor bill is
A vendor bill is the invoice your supplier sends you, recorded in Odoo. Because your purchasing and accounting live in the same system, that bill can link straight back to the purchase order it relates to, rather than being typed in from scratch.
The three-way match
Three-way matching simply means checking that three documents agree before you pay:
- The purchase order: what you agreed to buy, and at what price.
- The receipt: what actually arrived in your warehouse.
- The vendor bill: what the supplier is charging you.
If all three line up, you can pay with confidence. If they do not, say the bill charges for ten units but you only received eight, Odoo makes the mismatch visible so you can query it before money leaves. That single check quietly saves businesses from overpaying.
Bill control: on ordered or on received
Odoo lets you decide what a bill should be based on, and it is worth choosing deliberately:
- On ordered quantities: the bill reflects what you ordered. Simpler, suited to reliable suppliers and services.
- On received quantities: the bill reflects what you actually received. Safer for physical goods, because you only pay for what turned up.
For most stock purchases, billing on received quantities is the more prudent choice.
Why doing this in Odoo matters
When purchasing, receiving and accounting share one system, matching is almost automatic. The bill knows the order, the order knows the receipt, and discrepancies surface on their own. Do the same thing across three disconnected systems and matching becomes a manual, error-prone chore that people quietly skip, which is exactly how overpayments happen.
Practical tips
- Set a sensible bill control policy per product or category, and lean towards received quantities for goods.
- Investigate mismatches rather than paying to make them go away; the cause often matters.
- Keep receipts recorded promptly, since matching depends on them being accurate.
- Use the link between bill and order so payments are traceable end to end.
My take
Three-way matching is one of those unglamorous controls that pays for itself. Odoo makes it natural by keeping orders, receipts and bills connected, so you pay for what you agreed and what you actually got, nothing more. Choose your bill control policy thoughtfully, and your supplier payments become both faster and safer.
Next in the series: getting better terms with vendor pricelists and purchase agreements.
Based on the official Odoo 19 Purchase documentation. A plain-English guide, not a replacement for the docs.