HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 19: Complete Guide for Businesses
Odoo 19 6 min read

Purchase and vendor management in Odoo 19

RFQs, vendor pricelists, blanket orders and purchase templates, approvals, bill control policy and 3-way matching in Odoo 19 Purchase.

· ERP practice 22 Sep 2026

Odoo 19 Purchase is a Community app that takes you from request for quotation to purchase order, receipt and vendor bill, with vendor prices held in Vendor Pricelists and long-term deals in Purchase Agreements (blanket orders and purchase templates). The decision that matters most is the bill Control Policy: bill on received quantities for goods and on ordered quantities for services. Add the Enterprise 3-way matching module only when someone will actually act on its "should be paid" flag.

From RFQ to purchase order in Odoo 19

Every purchase starts as a request for quotation. The order moves through RFQ, RFQ Sent, optionally To Approve, and Purchase Order; there is also Cancelled. The main buttons on the form are Send RFQ, Confirm Order and, once confirmed, Send PO and Receive (when Inventory is installed). A confirmed order can be marked as acknowledged by the vendor, and the Receipt Reminder setting emails vendors ahead of the expected date.

RFQs come from three places: a buyer creating one by hand, a reordering rule on the Buy route (see part 12), or a make-to-order sale. Odoo groups replenishment needs for the same vendor into one draft RFQ, so the buyer's job becomes reviewing and sending rather than typing.

Two order settings under Purchase > Configuration > Settings deserve an early decision:

  • Purchase Order Approval: orders above a Minimum Amount stop at To Approve until a purchase manager approves them.
  • Lock Confirmed Orders: confirmed orders cannot be edited without unlocking, which keeps what the vendor saw and what you record in step.

Vendor pricelists: where purchase prices live

Purchase prices are not on the product's cost field; they are vendor price lines (product.supplierinfo), reachable from the product's Purchase tab or Configuration > Vendor Pricelists. Each line has the vendor, an optional vendor product name and code, a minimum Quantity, Unit Price, Discount (%), currency, Start Date and End Date, and a Lead Time in days (default 1).

When an RFQ line is created, Odoo picks the vendor line that matches the vendor, quantity and date. That lets you hold a quantity break (₹420 above 100 units, ₹450 below) or a dated price increase without anyone editing orders by hand. The Lead Time is also what the scheduler uses to decide when to order, so a wrong lead time produces late or early RFQs.

For Indian businesses coming from Tally, vendor masters usually migrate cleanly; purchase price history usually does not exist in a usable form. Load current prices and lead times for your top vendors before go-live and let the rest build up from real orders.

Purchase agreements: blanket orders and purchase templates

Turn on Purchase Agreements in settings to install the purchase_requisition module (Community). Agreements appear under Orders > Purchase Agreements and come in two types:

Agreement typeUse it forWhat confirming does
Blanket OrderA negotiated price with one vendor over a validity period, called off in several ordersRequires a price and quantity on every line, and creates vendor price lines for that vendor
Purchase TemplateA standard list of products you reorder together, possibly from different vendorsEnables New Quotation, which starts an RFQ from its lines; no validity dates

Because a confirmed blanket order writes vendor price lines, RFQs for that vendor pick up the agreed price automatically. Each agreement line shows the quantity already ordered against it, and New Quotation on the agreement starts the next call-off.

The same setting offers Purchase Alternatives: link several RFQs for the same need, then use Compare Product Lines on the Alternatives tab to choose per line. When you confirm one, Odoo asks what to do with the others. This is the closest Odoo gets to a formal tender in standard, and for most SMEs it is enough.

Bill control policy and 3-way matching

Each product has a Control Policy: On ordered quantities or On received quantities. Services default to ordered; goods take the default policy, which is received quantities. The policy decides what quantity Odoo proposes when you bill from a purchase order, and so what the order counts as still to bill.

Bill what arrived, not what was promised. For stocked goods, On received quantities is the default for a reason.

On a confirmed order, Upload Bill attaches the vendor's PDF and creates the draft bill, and the Bills smart button shows what is already booked. Vendor bill mechanics, GST input credit and payment runs are in part 20.

The setting 3-way matching: purchases, receptions and bills installs Vendor Bill: Release to Pay (account_3way_match, Enterprise). It adds a Should Be Paid status to each bill: Yes, No or Exception. A bill line goes to Exception if its price differs from the order line, and the received and ordered quantities decide Yes or No according to the control policy. Payables can then filter to bills that are safe to pay.

A sensible purchase setup order

  1. Vendors with GSTIN, payment terms and currency.
  2. Products with Control Policy set deliberately, not left to the default by accident.
  3. Vendor price lines with lead times for the vendors you buy from weekly.
  4. Approval threshold and order locking in settings.
  5. Reordering rules on Manual, feeding RFQs the buyer reviews.
  6. Later: blanket orders for contract vendors, alternatives for competitive buys, 3-way matching if AP is a separate team.
Purchase > Configuration > Settings
Purchase > Configuration > Vendor Pricelists
Purchase > Orders > Purchase Agreements
Purchase > Orders > Requests for Quotation
Where the pieces live in Odoo 19

Purchase, Purchase Agreements, alternatives and approvals are all Community; 3-way matching and the Purchase Accounting bridge are Enterprise. Next in the series is manufacturing, where the other half of replenishment happens. If your vendor data is scattered across Tally and spreadsheets, we can help you clean it up before it goes in.

Questions we get asked

What is a blanket order in Odoo 19?

A blanket order is a Purchase Agreement of type Blanket Order: an agreed price and quantity with one vendor for a validity period. Confirming it requires a price and quantity on every line and creates vendor price lines, so later RFQs for that vendor use the agreed price automatically. It needs the Purchase Agreements setting, which installs the Community purchase_requisition module.

Is 3-way matching available in Odoo Community?

No. The 3-way matching setting installs the Vendor Bill: Release to Pay module (account_3way_match), which is Enterprise-only. It gives each vendor bill a Should Be Paid status of Yes, No or Exception based on ordered, received and billed quantities and on price differences with the purchase order. In Community you can still bill on received quantities through the product's Control Policy.

What does the Control Policy on a product do in Odoo Purchase?

Control Policy sets which quantity Odoo proposes when a vendor bill is created from a purchase order. On ordered quantities bills the full order at once, which suits services and advance payments. On received quantities bills only what has been received in Inventory, which suits stocked goods. Services default to ordered quantities; goods default to received quantities.

Can Odoo 19 require approval for large purchase orders?

Yes. Enable Purchase Order Approval in Purchase settings and set a Minimum Amount in company currency. Orders above that amount move to the To Approve state when a buyer confirms them, and a user with purchase administrator rights must click Approve Order before the order is sent. It is a single threshold per company in standard Odoo.

← Previous Inventory and warehouse management in Odoo 19 Next → Manufacturing and MRP in Odoo 19
Keep reading
Odoo 19 Vendor bills and accounts payable in Odoo 19 6 min read Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read Odoo 19 Installing Odoo 19 from source, Docker or packages 7 min read