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

Vendor bills and accounts payable in Odoo 19

Capturing, checking and paying vendor bills in Odoo 19: digitisation, purchase bill control, 3-way matching, payment controls and Indian TDS.

· ERP practice 22 Sep 2026

In Odoo 19, vendor bills reach the system by email, upload or from a purchase order. They are checked against what was ordered or received, then paid in grouped payments that are later matched to the bank. The core flow, purchase bill control and Indian TDS are all Community. AI bill digitisation, 3-way "release to pay" matching and batch payment files are Enterprise.

Getting bills into Odoo 19

There are three ways in, and most companies use all three:

  • From the purchase order. The Create Bills button on a confirmed PO drafts the bill with the PO lines, prices and taxes already filled in. This is the cleanest route for anything that went through Purchase.
  • By email. Every purchase journal can have an email alias. Vendors or your own staff forward PDFs to it, and each email becomes a draft bill with the attachment. This is Community.
  • By upload and digitisation. Upload PDFs from the bills list. With Document Digitization switched on (Settings › Digitization, Enterprise, charged in IAP credits), Odoo reads the vendor, dates, amounts and lines. The account_invoice_extract_purchase module then tries to find the matching purchase order.

Two helpers make this faster. "Predict vendor bill product" (Enterprise) guesses the product from the line label. The Auto-validate bills setting lets Odoo offer to post imported bills from a vendor automatically once they have been right three times in a row. Each vendor then has an Auto-post bills choice: Always, "Ask after 3 validations without edits", or Never.

For Indian companies there is also "Fetch Vendor E-Invoiced Document" in the Indian Integration settings (Enterprise, l10n_in_reports). It creates draft bills from the e-invoice data your vendors submitted on the GST portal. For e-invoiced vendors that is more reliable than reading their PDF.

Bill control from purchase orders

How much a PO lets you bill is set per product by its Control Policy in the Purchase tab: On ordered quantities or On received quantities. For stocked goods, bill on received quantities. Odoo then won't propose billing more than the warehouse has validated. For services and subscriptions, ordered quantities is usually right.

Enterprise adds account_3way_match (Vendor Bill: Release to Pay), switched on with the 3-way matching setting in Purchase. Each bill gets a "Should Be Paid" status:

StatusMeaningWhat to do
YesBilled quantities have been receivedPay on the due date
NoGoods not yet receivedHold; chase the warehouse or vendor
ExceptionBilled and received quantities differInvestigate; the status can be forced manually

The bills list gets matching filters: Bills to Validate, Bills to Pay and Bills in Exception. That makes a good weekly working list for whoever runs payables.

Approving bills: what Odoo 19 has and what it doesn't

Odoo 19 has no dedicated multi-level approval workflow for vendor bills, so don't promise one to your finance controller. What it does have covers most real needs:

  • Separation through access rights. Give buyers rights to create draft bills, and only accountants rights to post them.
  • Purchase Order Approval in Purchase settings, which requires a manager to approve orders above a minimum amount. If spending is approved at PO stage, a bill that matches the PO needs no second approval.
  • Reviewed flag on journal entries, which a senior accountant can use to mark bills as checked.
  • (Un)Block Payment, an action that puts a bill in the "Blocked" payment state so it can't be paid until someone releases it.
  • Duplicate warnings when a bill reuses a reference already recorded for the same vendor.

If you genuinely need amount-based, multi-step bill approval, it is a small automation or Studio job. We would build it only after the basics above have been tried.

Paying vendors safely

Select bills in the list and click Pay. The payment dialog can group bills per vendor into one payment and creates one payment per vendor. As with customer payments, a vendor payment stays "In Process" until it is matched to the bank statement line.

Each vendor bank account has a "Send Money" toggle that shows it as Untrusted or Trusted. It starts as Untrusted, only authorised users can change it, and changes are tracked in the chatter, because changed bank details in a fake invoice are a common fraud. Verify new account numbers by phone before you mark one as trusted.

Payment output options depend on your country and edition:

  • Checks (account_check_printing, Community) for printed cheques where a country layout exists.
  • Batch payments (Enterprise) to group payments into one bank transaction for easier reconciliation.
  • ENet Vendor Batch Payment for India (Enterprise, l10n_in_reports), which generates a vendor payment file to upload to your bank. The 19.0 source ships an HDFC template.

TDS on vendor bills in India

TDS lives in the Community localisation. Enable TDS in Settings › Indian Integration and enter your TAN. The localisation preloads 34 TDS sections (192 to 195) and 13 TCS sections. You link a section to each expense account through the account's "TCS/TDS Section" field, for example contractor charges to 194C.

  1. Record each vendor's PAN and its TDS Deduction type: Normal, Lower, Higher or No.
  2. Set the TDS journal and account under India TDS Control in the default accounts settings.
  3. When a bill line posts to an account with a section, Odoo checks that section's per-transaction and aggregate thresholds by PAN and warns that TDS is advisable.
  4. On the posted bill (or on the payment, if you deduct at payment), click TDS Entry. The withholding wizard creates the TDS entry, and a TDS button on the bill shows the total withheld.

The TDS and TCS report definitions come with the localisation. Viewing and exporting them needs Enterprise's reporting engine. The quarterly return is still filed outside Odoo.

A payables process that works is mostly about who can post and who can pay. Settle that before configuring anything clever. Next: bank reconciliation in Odoo 19. If you want help setting this up, see our Odoo implementation service.

Questions we get asked

Can Odoo 19 read vendor bills from PDF automatically?

Yes, in Enterprise. The Document Digitization setting installs Odoo's extraction service, which reads vendor, dates, totals and lines from uploaded or emailed PDFs and uses IAP credits. A related module links the bill to the matching purchase order. In Community, emailed PDFs still become draft bills through the purchase journal's alias, but you type the details in yourself.

How do I deduct TDS on a vendor bill in Odoo 19?

Enable TDS and enter your TAN in the Indian Integration settings, then assign a TDS section such as 194C or 194J to the relevant expense accounts. Set the vendor's PAN and TDS Deduction type. After posting the bill, click TDS Entry to open the withholding wizard, which creates the TDS journal entry. All of this is in the Community localisation.

What is 3-way matching in Odoo?

3-way matching compares the purchase order, the goods received and the vendor bill before payment. In Odoo 19 it comes from the Enterprise module Vendor Bill: Release to Pay, enabled in Purchase settings. Each bill gets a Should Be Paid status of Yes, No or Exception, based on whether billed quantities have been received. Filters on the bills list show which bills are ready to pay.

Does Odoo 19 have approval workflows for vendor bills?

Not as a dedicated feature. Odoo 19 offers purchase order approval above a set amount, access rights that separate drafting from posting, a Reviewed flag on entries, and an action to block a bill's payment until it is released. Amount-based multi-level bill approval can be added with automation rules or Studio if a company really needs it.

← Previous Invoicing and customer payments in Odoo 19 Next → Bank reconciliation in Odoo 19: feeds, matching and rules
Keep reading
Odoo 19 Purchase and vendor management in Odoo 19 6 min read Odoo 19 Running Indian payroll in Odoo 19: PF, ESI, PT and TDS 7 min read Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read