Skip to main content
TechUltra Solutions Pvt. Ltd. — AI-Enabled ERP Transformation
Book a free call
Menu

Business process

Procure-to-pay in Odoo 20, step by step

From a purchase need to a paid, reconciled vendor bill: the eight steps, the Odoo app that runs each one, and the gaps we usually close in approvals, matching and landed cost.

Last reviewed:

How does procure-to-pay run in Odoo 20?

8 steps, each run by the Odoo app named on it. The screenshots are from our Odoo 20 feature guide.

  1. 1 Agree vendor terms and blanket orders
  2. 2 Request quotes and compare vendors
  3. 3 Approve and confirm the purchase order
  4. 4 Receive the goods against the order
  5. 5 Inspect at receipt
  6. 6 Add freight, duty and other landed costs
  7. 7 Match the bill to the order and the receipt
  8. 8 Pay and reconcile
  1. 1

    Agree vendor terms and blanket orders

    Odoo 20 · Purchase · Purchase Agreements

    Vendor price lists, lead times and a default Incoterm sit on each vendor. Blanket orders fix prices for a period, and each release draws the agreement down.

    Who: Procurement manager

    Purchase agreement structure: how it works in Odoo 20
    Odoo 20 Purchase: Blanket order with section line total and Add a section / Add a note
    Step 1, Odoo 20 Purchase: Blanket order with section line total and Add a section / Add a note
  2. 2

    Request quotes and compare vendors

    Odoo 20 · Purchase · Approvals · Inventory

    Reordering rules and make-to-order routes raise requests for quotation on their own. A purchase request approved in the Approvals app turns into RFQs. Buyers then compare alternative vendor offers line by line before they choose one.

    Who: Buyer

    Alternatives comparison: how it works in Odoo 20
    Odoo 20 Purchase: Compare Order Lines with status badges and editable quantities
    Step 2, Odoo 20 Purchase: Compare Order Lines with status badges and editable quantities
  3. 3

    Approve and confirm the purchase order

    Odoo 20 · Purchase

    Orders above a set amount wait for a purchase manager before they are confirmed. A confirmed order keeps its promised date for on-time tracking, while the buyer updates the expected arrival.

    Who: Buyer, purchase manager

    Expected arrival date: how it works in Odoo 20
    Odoo 20 Purchase: Purchase order Other Info: Promised Date, Incoterm
    Step 3, Odoo 20 Purchase: Purchase order Other Info: Promised Date, Incoterm
  4. 4

    Receive the goods against the order

    Odoo 20 · Inventory

    The receipt is created from the confirmed order. Stores check what arrived against the vendor's own reference and validate the quantities received, including partial deliveries.

    Who: Stores

    Vendor purchase reference: how it works in Odoo 20
    Odoo 20 Inventory: Receipt Source Document combining PO number and vendor reference
    Step 4, Odoo 20 Inventory: Receipt Source Document combining PO number and vendor reference
  5. 5

    Inspect at receipt

    Odoo 20 · Quality

    Quality control points raise checks on the receipt before the goods reach usable stock. Only a quality administrator can validate a receipt while its checks are still open.

    Who: Quality inspector

    Bypass quality checks: how it works in Odoo 20
    Odoo 20 Quality: Receipt with pending Quality Checks; Validate still available as secondary button
    Step 5, Odoo 20 Quality: Receipt with pending Quality Checks; Validate still available as secondary button
  6. 6

    Add freight, duty and other landed costs

    Odoo 20 · Inventory · Accounting

    A landed cost adds freight, duty or insurance to the value of the goods received. It can come straight from a bill line, and it splits equally or by quantity, current cost, weight or volume.

    Who: Cost accountant

    Landed costs for specific products: how it works in Odoo 20
    Odoo 20 Inventory: Landed cost form with new Apply On column on cost lines
    Step 6, Odoo 20 Inventory: Landed cost form with new Apply On column on cost lines
  7. 7

    Match the bill to the order and the receipt

    Odoo 20 · Accounting · Purchase

    The vendor bill is matched to its purchase order, and Odoo warns on price or quantity differences. With three-way matching, each bill gets a Should Be Paid status of Yes, No or Exception.

    Who: Accounts payable

    Purchase order matching: how it works in Odoo 20
    Odoo 20 Accounting: Vendor bill with Auto-Complete purchase document field and PO Matching smart button
    Step 7, Odoo 20 Accounting: Vendor bill with Auto-Complete purchase document field and PO Matching smart button
  8. 8

    Pay and reconcile

    Odoo 20 · Accounting

    Accounts payable pays bills one at a time or in batches from Odoo. The bank statement line is then matched to the payment, which closes the bill.

    Who: Accounts payable, treasury

    Pay bills from Odoo: how it works in Odoo 20
    Odoo 20 Accounting: Vendor Payments list with the Pay Now button for selected payments
    Step 8, Odoo 20 Accounting: Vendor Payments list with the Pay Now button for selected payments

Which Odoo 20 apps does procure-to-pay use?

The Odoo 20 apps behind procure-to-pay, with module name, edition and role.
Odoo app Module (edition) What it does here
Purchase purchase (Community)Requests for quotation, purchase orders, two-level order approval and bill control policy
Purchase Agreements purchase_requisition (Community)Blanket orders with agreed prices for a period
Purchase alternatives purchase_alternative (Community)Alternative RFQs to several vendors, compared line by line
Inventory stock (Community)Receipts, reordering rules and make-to-order routes
Approvals approvals (Enterprise)Purchase requests that create RFQs once approved
Quality quality_control (Enterprise)Inspections on receipts before goods reach stock
Landed Costs stock_landed_costs (Community)Freight, duty and insurance added to stock value
Invoicing account (Community)Vendor bills, purchase order matching and payments
3-way matching account_3way_match (Enterprise)Should Be Paid status from ordered, received and billed quantities
Accounting account_accountant (Enterprise)Bank matching, reconciliation rules and payables reports

Where is standard Odoo enough, and where is it not?

Standard Odoo runs every step above. These are the gaps we close most often. Each is scoped and priced in discovery, not from a list.

  • An approval matrix, not two levels

    Standard Odoo: Odoo 20 approves purchase orders in at most two levels, with one minimum amount per company, and any purchase manager can approve. It has no chain by amount band, department or category.

    What we add: An ordered approval chain per amount, department or category. At Commonwealth Fusion, workflow automation replaced the manual approvals that were holding work up. Our Advanced Approval Workflow app does the same on Odoo 16 to 20.

  • Matching exceptions that reach a person

    Standard Odoo: Three-way matching marks a bill Yes, No or Exception and adds filters for bills to pay and bills in exception. Any price difference from the order puts the bill in exception, with no tolerance. Nobody is told when that happens, and the status does not stop a payment.

    What we add: Exceptions routed to the buyer who raised the order, tolerance rules per vendor or category, and a hold on payment until the exception is cleared.

  • Duty that follows the tariff line

    Standard Odoo: Landed costs split one amount across the receipt by one of five methods. Odoo does not work out customs duty, so a duty bill covering items with different tariff rates is spread as if every item paid the same rate.

    What we add: Duty worked out line by line from each item's tariff rate before the landed cost is posted, so every item carries the duty it actually paid.

  • Vendor discounts that reach the bill

    Standard Odoo: Purchase order lines take a percentage discount only. A fixed amount off, or several discounts stacked, has to be typed into the bill by hand.

    What we add: For Duke Pipes, percentage and fixed-amount vendor discounts carry from the order into the vendor bill, so product costs stay accurate.

  • Bank data that arrives on its own

    Standard Odoo: Odoo connects to banks through its online bank synchronisation providers or imported statement files. A bank or treasury platform outside those needs files moved by hand every day.

    What we add: For Commonwealth Fusion we built and stabilised integrations with its banking platforms, so reconciliation runs automatically instead of through a daily export and import.

Who approves what, and what is recorded?

  • Purchase orders above the set amount stay in To Approve until a purchase manager approves them.
  • Confirmed orders can be locked so nobody edits them after the vendor has them.
  • With the bill control policy on received quantities, a bill created from an order only bills what has arrived.
  • Draft bills that look like a duplicate show a warning before they are posted or paid.
  • A second payment on a part-paid bill proposes only the amount still due.
  • Every order, receipt, bill and payment keeps a history of who changed what, and when.

What data moves when you migrate this process?

For procure-to-pay, these records move from the old system. Open orders usually move as open orders. Unpaid bills move as opening payables so they can still be paid and matched.

  • Vendors with tax IDs, payment terms and bank accounts
  • Products with purchase units, vendor prices and lead times
  • Open purchase orders and blanket orders
  • Unpaid vendor bills and open advances
  • Approval rules and who signs at each amount
  • Chart of accounts mapping for expense and stock accounts

Moving from another system? See Tally to Odoo , QuickBooks to Odoo , SAP Business One to Odoo or NetSuite to Odoo .

What can AI take over in procure-to-pay?

The AI layer proposes and checks. A person still approves what gets bought, made or promised.

Who runs procure-to-pay on Odoo with TechUltra?

Commonwealth Fusion Systems

A US fusion-energy company on Odoo Enterprise with more than 1,000 active users. Since 2023, five senior consultants on US hours have tuned Purchase, Accounting, Manufacturing and Inventory, replaced manual approvals that held work up with workflow automation, and built banking integrations for automated reconciliation.

Read the Commonwealth Fusion Systems case study

How long does it take, and what does it cost?

Implementation starts from about USD 4,000 and goes up with scope: the number of plants and products, the gaps above, integrations and how clean your data is. A one-week discovery maps your process and ends with a fixed timeline and a fixed price.

How does it differ by industry?

Only the industries where we have a reference for this process.

  • Advanced manufacturing

    Purchasing for engineering and production teams at more than 1,000 users, with approvals automated and bank data flowing into reconciliation.

    Commonwealth Fusion Systems case study
  • Pipes and plastics

    Orders above a set amount wait for approval before confirmation, vendor discounts carry into the bill, and a delivery-challan register tracks material sent out and back.

    Duke Pipes case study
  • Construction

    A vendor RFQ portal, a tender register and purchase requisitions on Odoo 17, with vendors qualified by certificate, trade and region.

    Construction marketplace case study

Questions about procure-to-pay in Odoo

  • What is procure-to-pay in Odoo?

    It is the buying process from a purchase need to a paid vendor bill: vendor terms, requests for quotation, order approval, receipt, inspection, landed cost, bill matching and payment. In Odoo 20 it runs across Purchase, Inventory, Quality and Accounting.

  • Which Odoo apps do I need for procure-to-pay?

    Purchase, Inventory and Invoicing at minimum. Add Purchase Agreements for blanket orders, Approvals for purchase requests, Quality for receipt inspections, Landed Costs for freight and duty, and Accounting with 3-way matching for bank reconciliation and bill control.

  • Does Odoo do three-way matching?

    Yes. With the 3-way matching setting (Enterprise), each vendor bill gets a Should Be Paid status of Yes, No or Exception from the ordered, received and billed quantities. In Community, the bill control policy on received quantities makes bills from an order bill only what has arrived.

  • Can Odoo approve purchase orders in more than two levels?

    Not as standard. Odoo 20 offers one or two levels, with one minimum amount per company. An approval matrix by amount band, department or category needs configuration or a module, such as our Advanced Approval Workflow app.

  • How does Odoo handle landed costs?

    Landed Costs adds freight, duty or insurance to the value of received goods. It can be created from a vendor bill line and split equally, or by quantity, current cost, weight or volume. Odoo does not calculate customs duty itself.

  • Can Odoo read vendor bills automatically?

    Odoo Enterprise digitises bills with prepaid credits. Our OCR for vendor bills reads PDFs and scans into draft bills on your own Odoo, and a person checks them before posting.

  • What does it cost to set up procure-to-pay in Odoo?

    Implementation starts from about USD 4,000 and goes up with scope: modules, approval rules, integrations and data clean-up. A one-week discovery ends with a fixed price. Odoo's own subscription is billed by Odoo; see Odoo pricing.

Want your procure-to-pay process mapped in Odoo?

A free 30-minute call with a senior consultant: we walk through your process, mark the gaps and size the discovery week.