Skip to content
Auboros

Odoo Vendor Pricelists and Lead Times: How Odoo Picks the Supplier, Price and Date on Every Purchase Order

Odoo picks the vendor at the top of the product's list, then the cheapest line for the quantity, and sets arrival to order date plus lead time. Setup guide.

By Josh Craig, Managing Director, Auboros ·

A vendor pricelist in Odoo is one line per vendor per product: unit price, minimum quantity, lead time in days, optional discount, currency and validity dates. Odoo 20 picks the vendor at the top of the product’s list, then the cheapest valid line for the quantity, and sets expected arrival to the order date plus that lead time. With no line, the vendor’s last confirmed order line is used.

At a glance

  • Who it is for: Australian wholesalers, importers and manufacturers on Odoo, or moving to it, whose buyers still type supplier prices into every request for quotation (RFQ) or whose promised delivery dates ignore how long the supplier takes
  • Problem it solves: RFQs that come out at zero, reordering rules that pick the wrong supplier, receipt dates that are wrong before the order is sent, US dollar supplier prices converted by hand, and price files from suppliers that never make it into the system
  • Platforms: Odoo 18, 19 and 20, Community or Enterprise; the vendor pricelist is part of the standard Purchase app, and the fields and selection logic below were read from the Odoo 20 source
  • Typical cost: no extra licence; Odoo lists Standard at A$43 and Custom at A$80 per user per month on yearly billing ex GST (A$34.40 and A$64 for the first 12 months), with the Odoo 20 light user at A$12.90, per our Odoo implementation packages page as at October 2026; loading and checking pricelists is a day or two inside an implementation that runs A$25,000 to A$120,000 ex GST for most SMEs
  • Typical timeline: half a day to export the template, fill it and import a few hundred lines; the slow part is getting a clean price file from each supplier
  • Last verified: 27 October 2026 against the Odoo 20 vendor pricelist documentation, the Odoo 20 lead times documentation and the Odoo 20 product and purchase_stock source on GitHub

Most Odoo purchasing problems we get called about are not purchasing problems. They are vendor pricelist problems. The RFQ comes out at zero because nobody entered a price. The reordering rule orders from the wrong supplier because the vendor lines are in the wrong order. The receipt date is a week early because every line still carries the default lead time of one day. This post explains what the pricelist holds, how Odoo 20 chooses the line that lands on the purchase order, how the lead time fields turn into dates, and what Australian importers should set differently.

What is a vendor pricelist in Odoo?

On the Purchase tab of a product form, each vendor line is a record of the Supplier Pricelist model (product.supplierinfo in the Odoo 20 source). The fields, with their exact labels:

  • Vendor. The only required field. The Odoo 20 pricelist documentation lists it as the one field an import cannot do without.
  • Vendor Product Name and Vendor Product Code. Printed on the RFQ in place of your internal name and code. Leave them empty and the supplier sees your reference, which is how orders get filled wrong.
  • Sequence. The priority of this vendor for this product. The documentation says the entry at the top of the list is the default, and Odoo uses the vendor at the top of the list to generate RFQs when reordering rules are triggered.
  • Quantity. The minimum quantity to purchase to get this price, in the vendor unit if one is set. Several lines for one vendor at different quantities give you quantity breaks.
  • Unit Price, Discount (%) and the computed Discounted Price. The price is entered ex tax in the line’s currency; the discount is applied to it and the discounted price is what Odoo compares.
  • Currency. Defaults to your company currency, but when you pick a vendor the line switches to that vendor’s Purchase Currency if one is set on the contact. A US dollar supplier can have US dollar lines.
  • Start Date and End Date. The validity window. Odoo rejects a line whose end date is before its start date, and a line outside its dates is ignored when the RFQ is created.
  • Lead Time. The field’s own help text calls it the lead time in days between the confirmation of the purchase order and the receipt of the products in your warehouse. The default is one day, which is almost never true.
  • Product Variant. Blank means the line applies to every variant of the template; set it to price one variant differently.

You can keep these lines on the product or manage them in bulk at Purchase, Configuration, Vendor Pricelists. Same records, different view.

How does Odoo choose which vendor and price go on the RFQ?

When a reordering rule, a make-to-order sale or a dropship line needs a purchase, the Buy rule asks the product for a seller. In the Odoo 20 source the product first filters its vendor lines: the vendor, if one was forced; the quantity, which must be at least the line’s minimum; the date, which must sit inside Start Date and End Date; the unit; and the company. The lines come back in the model’s own order, which is Sequence first, then larger minimum quantities before smaller ones, then price.

Then it takes the first vendor in that order and only that vendor’s lines, converts each line’s discounted price into your company currency at the order date, and keeps the cheapest. That is the line whose price, lead time, product code and currency land on the RFQ.

Three consequences follow for an Australian buyer:

  • Sequence beats price. If Supplier B is cheaper but Supplier A is at the top of the list, Supplier A gets the order. Odoo does not shop between vendors. If you want the cheapest supplier chosen automatically, it has to be first in the list.
  • The quantity break is applied, not advertised. Order 500 units against lines at 1, 100 and 500 and the 500 line wins because it is the cheapest valid one. Order 499 and you get the 100 price. The buyer sees the result, not the rule.
  • Currency conversion decides ties across lines. A US dollar line and an Australian dollar line for the same vendor are compared in AUD at the day’s rate, so a weak dollar can flip which line Odoo picks.

If nothing matches, the purchase_stock rule in Odoo 20 relaxes the search step by step: it drops the quantity, then the date, then the unit, and finally takes any seller at all. The supplier chosen is still the one you’d expect, but it may be an out-of-date line, which is why validity dates are worth maintaining instead of leaving open.

When no vendor can be found, the rule writes No Vendor Found into the replenishment forecast and adds 365 days to the lead time, so the product shows up as a year away instead of silently failing. The scheduler’s activity on the source document says the product should be manually replenished, and no RFQ is created.

How do lead times turn into the dates on a purchase order?

A purchase order has two dates that matter: the Order Deadline, the last day the RFQ can be confirmed, and the Expected Arrival. The Odoo 20 lead times documentation puts the relationship simply: the expected arrival equals the order deadline plus the vendor lead time, and the order is marked late once that arrival date has passed.

On an RFQ you create by hand, Odoo 20 sets each line’s planned date to the order date plus the vendor line’s Lead Time; with no order date yet, it uses today plus the lead time. Change the vendor on the RFQ and the lines recompute from that vendor’s pricelist.

On an RFQ the scheduler creates, the arithmetic runs backwards from when you need the stock. The documentation’s own example: today is 21 April, the vendor lead time is one day and Days to Purchase is two days, so the forecast window is three days and an RFQ created today shows an order deadline of 23 April and an expected arrival of 24 April. If the needed date is earlier than the order date plus lead time, the Odoo 20 rule pulls the order date earlier instead of letting the arrival slip.

Table: the lead time settings that shape a purchase order in Odoo 20
SettingWhere it livesWhat it changesDefault
Lead Time (vendor)Product, Purchase tab, each vendor lineDays from PO confirmation to receipt; sets Expected Arrival1 day per line
Days to PurchaseInventory, Configuration, Settings, Advanced SchedulingDays the buyer needs to confirm the RFQ; pulls the Order Deadline earlier on scheduler-created orders only0
Delivery time (customer lead time)Product, Inventory tabDays from sales order confirmation to shipment; drives the date the sale asks the purchase to meet0
Sales security lead timeInventory settings, Advanced SchedulingBuffer that brings the scheduled delivery date forwardOff
Manufacturing lead timeBill of materials, Miscellaneous tabDays to complete a manufacturing order; component purchase lead times add on multi-level BoMs0

Sources: Odoo 20 lead times documentation and the Odoo 20 product and purchase_stock source, as at 27 October 2026. Days to Purchase is described by its help text as the days needed to confirm a PO.

Odoo 20 also changed how a late supplier is handled. The Odoo 20 release notes list an editable expected arrival date on the purchase order that keeps the vendor’s original date for on-time delivery tracking, and a one-click recompute of expected arrivals when the deadline is in the past. That means you can update the date the warehouse plans against without losing the evidence that the supplier missed the first one. Odoo reordering rules: how to set min and max covers how those lead times feed the reorder point, and the Odoo 20 suggested minimum and maximum levels now read demand history and your chosen coverage days.

What happens when a vendor has no pricelist line?

In Odoo 20 the RFQ no longer has to come out empty. The documentation states that when a vendor has no pricelist for the product, the RFQ uses the price, discount and lead time from that vendor’s most recently confirmed PO line, and that confirming a PO does not create a pricelist line. In the Odoo 20 source the fallback lead time is the gap between that last order’s approval date and its planned date.

That is convenient and a trap at the same time. Convenient, because a buyer who has ordered from a supplier once gets a sensible RFQ the second time. A trap, because a one-off spot price negotiated in March becomes the default in October and nobody notices, and because the fallback only fires when the vendor has no pricelist at all for that product. One stale line beats the last-order logic every time.

Two tools help you see what you are paying. The Purchased smart button on the product form lists the last prices each vendor charged, grouped by product then vendor, and the Price Comparison smart button on a purchase order shows the same comparison for the lines in front of you. Odoo 20 also added an improved alternatives comparison screen for choosing between competing RFQs.

Half the margin leaks we find in a wholesaler’s Odoo trace back to one vendor line: a default one-day lead time, a price from last year or a sequence that puts the dearer supplier first. Fix the pricelist and the purchasing module starts doing what people thought it was doing all along.

Josh Craig, Director, Auboros

How do you load supplier price files without re-keying them?

The documentation’s route is export first, then import. Go to Purchase, Configuration, Vendor Pricelists, select a few records and choose Export from the Actions menu to get a correctly formatted template in XLSX or CSV. With developer mode on, each column header shows the technical field name in brackets, which makes mapping a supplier’s spreadsheet onto it easier. Fill the file, then Actions, Import, upload it and check that each File Column maps to the right Odoo Field before you click Import.

The field that matters most is External ID. The documentation puts it directly: without it, imported records create new entries instead of updating existing ones. Its own example shows a vendor appearing twice on a product after a price change from $790 to $780, because the second import had no External ID to match. If a supplier sends a new price file every quarter, export the current lines with their External IDs, update the prices in that file and import it back. You get a price change, not a duplicate.

Blanket orders are the other way a vendor line gets created. Per the Odoo 20 blanket orders documentation, confirming a purchase agreement adds a vendor line under the Purchase tab of each included product, referencing the vendor, the price and the agreement, and automated replenishment uses it. Prices on the agreement are not copied from the product; enter them or they stay at zero. For a supplier you have negotiated an annual price with, that is the cleaner record: the agreement is the contract, and the pricelist line it creates is what the scheduler reads.

What should Australian importers set differently?

Three things, and they sit on different screens:

  • Put the supplier’s currency on the line. Set Purchase Currency on the overseas vendor’s contact so new lines default to USD, EUR or CNY, and enter the price the supplier quotes. Odoo converts at the order date when it compares lines and books the bill at the rate on the bill date, which is what Odoo multi-currency accounting in Australia walks through. Mixed-currency lines for one vendor will also keep RFQs apart, since the RFQ grouping logic never merges orders in different currencies.
  • Keep the pricelist price ex tax and let the fiscal position handle GST. The vendor line holds a price, not a tax. Goods and services tax (GST) on a domestic purchase comes from the product’s vendor taxes and the supplier’s fiscal position, and an overseas supplier’s fiscal position should map that to no GST. The GST paid at the border on consignments over A$1,000, plus duty and freight, belongs in landed costs, not on the vendor line; Odoo landed costs and deferred GST covers the setup, and the landed cost calculator gives you the per-unit figure to sanity-check against.
  • Make the lead time the real one. For a container from Asia that is often 35 to 60 days door to door, not one. The Lead Time on the vendor line is what the reordering rule reads when it decides whether forecast stock will run out before the next receipt, so a one-day default means the rule fires weeks too late. If you use a buyer approval threshold, remember the RFQ waits for sign-off, which Odoo purchase order approvals explains, so Days to Purchase should cover that wait.

Five decisions before you load the first price file

  • Which vendor is first, product by product. Sequence decides who gets the order. Set it deliberately for every product with more than one supplier, and review it when a supplier’s performance changes.
  • Whether to hold quantity breaks or one price. Breaks make the system pick the right price for the order size, but they also make the buyer’s job harder to read. Hold them where they move the margin.
  • Validity dates or open lines. Dated lines protect you from stale prices but need maintenance. Open lines never expire and never warn you.
  • Who owns the price file. Someone has to receive the supplier’s update, export the current lines, change the prices and import with External IDs. Make it a named job.
  • How the lead time is measured. Confirmation to dock, not dispatch to dock. Agree the number with the warehouse, because it is the number the reorder point calculation and the sales team’s promised dates both lean on.

Vendor pricelists are the quiet foundation under reordering rules, dropshipping, make-to-order and landed costs. If you want a wholesaler’s whole purchasing and stock picture, ERP for wholesale distribution in Australia covers it, and our Odoo partner in Brisbane page covers how we deliver it. If you want a machine to draft the orders once the pricelist is right, the AI replenishment agent reads these same lead times and minimum quantities.

Goes well with

Buyers still typing prices into every RFQ?

We set up Odoo purchasing for wholesalers and importers across Brisbane and Queensland, and the vendor pricelist review is usually the first afternoon of the job. If you want to see your own supplier price file imported, with the right vendor first and real lead times, book a free consultation and bring one supplier’s spreadsheet. No obligation, and we’ll tell you if a blanket order is the better record for it.

FAQ

Frequently asked questions

How does Odoo decide which vendor to use on a purchase order?

By the Sequence of the vendor lines on the product's Purchase tab. Odoo filters the lines to those valid for the quantity, date, unit and company, takes the vendor at the top of that list and then picks that vendor's cheapest discounted line in your company currency. It does not compare prices across vendors, so the cheapest supplier only wins if it is first in the list.

What happens if a vendor has no pricelist entry for a product in Odoo?

In Odoo 20 the RFQ uses the price, discount and lead time from that vendor's most recently confirmed purchase order line, per the Odoo 20 documentation. Confirming a purchase order does not create a pricelist line, so the fallback keeps firing until someone adds one. If there is no previous order either, the line comes out at zero with a one-day lead time.

Where do I set the supplier lead time in Odoo?

On each vendor line of the product's Purchase tab, in the Lead Time field, measured in days from purchase order confirmation to receipt in your warehouse. The default is one day. Days to Purchase, the time your buyer needs to confirm an RFQ, is a separate company setting under Inventory, Configuration, Settings, Advanced Scheduling, and only affects orders the scheduler creates.

Can I import a supplier's price list into Odoo?

Yes. Go to Purchase, Configuration, Vendor Pricelists, export a few records to get a correctly formatted XLSX or CSV template, fill it from the supplier's file and import it from the Actions menu. Include the External ID column when updating existing lines; without it the import creates duplicate vendor lines instead of changing the prices.

Can a vendor pricelist in Odoo be in US dollars?

Yes. Each vendor line has its own Currency, which defaults to the Purchase Currency set on the vendor's contact. Odoo converts the discounted price into your company currency at the order date when it compares lines, and the RFQ and vendor bill are raised in the supplier's currency. GST is not part of the line; it comes from the product's vendor taxes and the supplier's fiscal position.

Want help with your own implementation?

We're a Brisbane-based Odoo Silver Partner and MYOB Acumatica Partner. Book a free consultation and get a straight answer.