Long-Term Purchase Price Agreements in Odoo#
Negotiating a good price with a vendor is only half the work - you also need to ensure that price is consistently applied every time you order. Odoo purchase agreements lock in pricing and apply it automatically to all qualifying purchase orders.
Purchase Agreement Types#
Purchase → Orders → Purchase Agreements → New:
Type 1 - Blanket Order:
- Commits to buying a defined quantity at a fixed price over a period
- Each PO drawn against the blanket uses the agreed price
- Blanket tracks consumed vs. remaining quantity
Type 2 - Purchase Contract (No Quantity Commitment):
- Locks the price for a period without quantity commitment
- Every PO to that vendor for that product uses the contract price
- No tracking of quantity consumed
Creating a Price Agreement#
Purchase → Orders → Purchase Agreements → New:
- Agreement Type: Purchase Contract (or Blanket Order)
- Vendor: Primary Supplier Co.
- Validity: 2027-10-01 → 2028-09-30 (12 months)
Product Lines:
- Widget Component A: $8.50/unit (contract price, no quantity limit)
- Widget Component B: $4.20/unit
- Packaging Material X: $0.35/unit
Automatic Price Application#
When a buyer creates a PO for a vendor with an active agreement:
Purchase → New PO → Vendor: Primary Supplier Co.:
- Odoo checks for active purchase agreements
- Contract prices auto-populate on PO lines
- If the buyer changes the price: warning displayed "This differs from the agreed contract price"
Contract Compliance Monitoring#
Purchase → Orders → Purchase Agreements → [Contract]:
- Purchase Orders tab: all POs linked to this contract
- Compare: PO price vs. contract price → any deviations?
- Price overrides are visible: "PO #345 was confirmed at $8.75 vs. agreed $8.50"
Price compliance reports hold vendors accountable (did they honor the agreed price on the invoice?) and buyers accountable (did they use the contract price on the PO?).
Renewal Reminder#
Set an alert 60 days before contract expiry:
Automation → Automated Actions:
- Trigger: Purchase Agreement validity date − 60 days
- Action: Email to procurement manager + Create activity "Renew contract with Primary Supplier Co."
Prevents contracts from lapsing silently - which often means reverting to spot pricing.

