Open the purchase order before any payment and you see in one place what was ordered from the supplier, what actually arrived, and what the bill is based on. That is what the Odoo purchase cycle delivers when its policy is set up well: a quotation becomes an order, a receipt records the quantity that arrived, and the supplier bill is checked against both. Purchasing can see what the supplier still owes, while finance can explain the basis of each amount before approving it.
Buying online is familiar to companies: GASTAT’s 2025 bulletin shows that 47.6% of establishments using the internet buy goods and services online (total, Table 23). What matters for you is that order, receipt, and bill form one connected chain. At ToDoOps we present purchasing on that basis, and you can read about our work on the homepage.
How does a request for quotation become a purchase order and a receipt?
Per the 19.0 documentation (RFQ reference), the cycle starts with a request for quotation (RFQ), and clicking Confirm Order turns it into a purchase order. With the Inventory app, an expected receipt is generated. That receipt is a scheduled appointment and does not mean the goods arrived. The actual receipt is recorded when they do.
Can you compare offers from several suppliers?
Yes. Alternative RFQs let you collect offers from more than one supplier and compare their lines, provided Purchase Agreements are set up (Calls for Tenders reference). The reason for choosing a supplier stays on record instead of getting lost in scattered messages.
What is the supplier bill based on: ordered or received quantity?
Bill control can be set per product on ordered or received quantities (Control Bills reference). With received, the draft vendor bill is built from the quantity that actually arrived. A draft remains available for review; posting a bill and recording its payment are separate steps. And installing the Purchase app alone does not set this link up; you need to define the policy for each product.
What does Exception mean in 3-way matching?
3-way matching shows a Should Be Paid field with the value Yes, No, or Exception. If the quantity or price differs, the status becomes Exception. But it does not block edits to the bill and does not force a payment hold, and the field can be changed. It is a review signal, not a lock, and the payment decision stays with whoever has the authority.
What happens to an order of SAR 8,000 if 60 of 100 units arrive?
A hypothetical, simplified calculation: a purchase order for 100 units × SAR 80, with the policy set on received.
| Item | Value (SAR, before tax) |
|---|---|
| Full order value | 8,000 |
| Basis for the bill on what was received (60 × 80) | 4,800 |
| Remaining (40 × 80) | 3,200 |
SAR 3,200 remains the value of goods not yet received. Follow up their delivery date and keep this separate from received value and the invoice due under your contract. It is not a saving: the example explains the bill basis for a partial receipt.
How does the decision look for a finance officer?
In this hypothetical example, the purchase terms require payment after receipt. a finance officer receives a bill for 100 units, and the system shows that only 60 were received. Without that, she would phone the warehouse, then purchasing, and wait for replies. Here the mismatch is in front of her, so she decides to put the bill on hold and ask the supplier for a corrected invoice or a date for the remaining 40. Her reason is that she does not want to pay for goods that never entered the warehouse, and the system alone will not stop her paying. The decision is hers, and it rests on clear information.
What changes for purchasing, finance, and the owner?
- Purchasing: comparable offers and an order record that shows why each supplier was chosen.
- Finance: a bill built on what was received, with differences visible before payment.
- Owner: visibility into what was committed, what arrived, and what will be paid, without depending on one person.
If you want to see how work looks in Odoo before you begin, start with the ToDoOps guided simulation: a sales-and-stock journey with fictional data that shows how work passes between departments. For the other modules see Odoo apps.
How do you start implementing Odoo purchasing?
Start with a defined cycle your team can test from beginning to end:
- A few named suppliers and a limited set of items.
- The bill control policy: on ordered or on received quantities.
- Permissions: who confirms, who receives, and who approves the bill.
- A partial-receipt test.
- A test where a bill differs from the receipt.
Our Odoo inventory guide explains how receipts affect available and forecast quantities. For a first estimate of project cost, use the ToDoOps calculators.
Common questions before adopting the purchase cycle
Is installing the Purchase app enough to link order and bill?
No. The link depends on the bill control policy for each product and on actually recording receipts.
What is the difference between control on ordered and on received?
On ordered, the draft bill is built from the ordered quantity. On received, it is built from the quantity actually received.
Does an Exception status block payment?
It does not force a hold and does not block edits to the bill, and the field can be changed. It is a review signal.
Can I compare offers from several suppliers?
Yes, through Alternative RFQs once Purchase Agreements are set up.
Does the expected receipt mean the goods arrived?
No. It is an expectation generated after confirmation, and the actual receipt is recorded on arrival.
Prepare a test scenario with your most frequent supplier
If you still track order, receipt, and bill by hand across files and messages, pick one frequently used supplier and one product, and decide who confirms, who receives, and who approves. Visit the homepage to see how Odoo connects your operations or explore the industries we serve. Then discuss your purchase cycle with ToDoOps so we can identify where to start and how your team will test it. For an initial estimate before that discussion, use the calculators.
References
- Odoo 19.0 documentation, RFQ page: request for quotation, order confirmation, and the expected receipt. Reviewed: 28 October 2026.
- Odoo 19.0 documentation, Calls for Tenders page: Alternative RFQs and Purchase Agreements. Reviewed: 28 October 2026.
- Odoo 19.0 documentation, Control Bills page: bill control and 3-way matching. Reviewed: 28 October 2026.
- General Authority for Statistics, Establishments ICT Access and Usage Statistics 2025: bulletin tables (Table 23) and the Arabic bulletin.
