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 20: Complete Guide for Businesses
Odoo 20 8 min read

Odoo 20 for Indian companies: TDS, the Composition scheme, Schedule III and the rest

What Odoo 20 changes for Indian companies: the new TDS payment flow, Composition scheme returns, Schedule III statements, QRMP, bill of entry and payroll.

· ERP practice 12 Nov 2026

Odoo 20 makes eight accounting changes for India. The ones that matter most are a TDS flow built around the Pay button, support for Composition taxpayers with CMP-08 and GSTR-4, Schedule III Division I financial statements, and the QRMP scheme. The others are a bill of entry flow for imports, price-adjustment credit notes, Reverse Charge self-invoices and a count of invoices waiting for e-invoicing on the dashboard. Indian payroll gets its own list, including monthly TDS challans and the new quarterly Form 138.

If you are still on Odoo 19, our GST compliance in Odoo 19 guide describes the starting point.

The India changes at a glance

Odoo 20 change (release notes)In the 20.0 India docs?
TDS with "TDS & Payment", "TDS Only" or "Payment Only"Yes
Composition taxpayers, with CMP-08 and GSTR-4Not yet
Financial statements under Schedule III, Division I of the Companies ActNot yet
QRMP scheme: quarterly GSTR-1, with IFF for the first two monthsNot yet
Bill of entry flow for imports, with duty in inventory costYes
Credit notes for price adjustmentsYes
GST-compliant self-invoices under Reverse ChargeNot yet
Invoices pending e-invoicing shown on the Accounting DashboardNot yet

TDS in Odoo 20: deducted through the Pay button

In Odoo 19, a posted bill had a TDS Entry button. In Odoo 20, TDS taxes are marked Withhold. They don't reduce the bill's amount due. Instead, the bill shows TDS Due and Net Due under the totals once it's confirmed, and you record the deduction from the Pay button.

Setting it up

Under Accounting › Configuration › Settings, in the Indian Integration section, enable TDS or TCS. TDS needs the company's TAN. Then, under Default Accounts › India TDS Control, set a TDS Journal (a miscellaneous journal) and a TDS Control Account. The default is TDS (Withholding Control). TDS purchase taxes also take an optional TDS Sequence in their advanced options, to number TDS lines automatically.

How the base is computed

TDS is computed on the amount before GST, and TCS on the amount including GST. The documentation's examples:

  • A vendor bill line of ₹100 with 18% GST and 10% TDS: GST ₹18, TDS ₹10.
  • A customer invoice line of ₹100 with 18% GST and 1% TCS: GST ₹18, TCS ₹1.18.

Recording TDS on a bill

  1. Add the TDS tax on the bill line and confirm the bill.
  2. Click Pay and choose an option. TDS Only, the default, records the TDS entry without paying the vendor. TDS and Pay records both, paying the net amount. Payment Only pays the vendor later, after TDS has been booked.
  3. Check the Withholdings tab, which is pre-filled from the bill's TDS taxes. You can change the base or the tax, or add a line.
  4. Click Create Payment.

TDS Only at booking, then Payment Only at payment, is the sequence most finance teams want when TDS has to be deducted at the earlier of credit or payment. The same flow works on customer invoices when a customer deducts TDS from what they pay you. Two limits from the documentation: TDS options aren't available when one payment covers several bills, so record TDS bill by bill. TDS can also be deducted on advance payments. When the advance is later reconciled with a bill carrying the same TDS tax, it reduces that bill's TDS Due.

Reports are under Accounting › Reporting › Tax Report, as the TDS I.T. Act 25 Report and TCS I.T. Act 25 Report. Both group amounts by section of the Income-tax Act, 2025, which replaced the 1961 Act from 1 April 2026. Check with your CA that the section mapping matches how you report transactions that straddle the changeover.

Composition scheme support in Odoo 20

The release notes say: "GST compliance has been extended to Composition Taxpayers, with dedicated support for the Composition Scheme and its statutory returns, CMP-08 and GSTR-4." CMP-08 is the composition dealer's quarterly statement and GSTR-4 the annual return.

Odoo 19 already let you mark a customer or vendor as Composition in their GST treatment. The new wording is about your company being the composition taxpayer. That matters for small traders and manufacturers registered under the scheme. The 20.0 documentation doesn't yet explain how to set it up, which menus produce CMP-08 and GSTR-4, or whether this sits in Community or in the Enterprise reports module. Until it does, work through it on a test database with your CA:

  • Does an invoice from a composition company carry the declaration and tax treatment your CA expects?
  • Do the CMP-08 figures match your turnover by rate for the quarter?
  • Does the GSTR-4 output cover inward supplies, including reverse charge?

Schedule III financial statements

The release notes say Odoo 20 lets you "prepare financial statements with the prescribed presentation, classification, and disclosures as required under Schedule III, Division I of the Companies Act". Division I is the format for companies that prepare accounts under the Companies (Accounting Standards) Rules. Companies on Ind AS use Division II, which the release notes don't mention. If you are on Ind AS, don't assume the new statements apply to you.

Odoo 19 and 20 both include a Profit and Loss (IN) report showing opening and closing stock, for companies using continental accounting. The Schedule III statements are new. Have your auditor compare their layout and notes with last year's signed accounts before you rely on them.

QRMP, credit notes, imports and self-invoices

QRMP

Odoo 20 adds the Quarterly Return Monthly Payment scheme, with "quarterly GSTR-1 filing and IFF for the first and second months of the quarter". IFF, the Invoice Furnishing Facility, lets QRMP taxpayers upload B2B invoices monthly so their customers can claim input credit sooner.

Price-adjustment credit notes

A credit or debit note now has an Adjustment Type in its Other Info tab. Standard is for quantity changes such as returns. Price Adjustment is for amount-only changes. For a price adjustment, Odoo reports the quantity and unit price as zero in the e-invoice, leaves the note out of the GSTR-1 HSN quantity summary and doesn't change the invoiced quantity on the sales order. In the documentation's example, a ₹500 post-sale discount gives a taxable value of ₹500 and GST of ₹90, and the order still shows all 10 units invoiced.

Bill of entry for imports

The new Indian - Bill Of Entry module (l10n_in_boe) creates a customs vendor bill and spreads the duty across stock receipts through landed costs. Imported products must use FIFO or AVCO costing. From a posted vendor bill with GST Treatment set to Overseas and a matched purchase order, click Bill Of Entry. Then pick the received transfers, enter the bill of entry number, date and port code, and fill in the assessable value, customs duty and purchase taxes per line. Odoo creates a draft bill for the duty and import tax, and a linked landed cost.

Reverse Charge self-invoices and e-invoice backlog

Odoo 20 can generate and print GST-compliant self-invoices where you, as recipient, must issue one under Reverse Charge. The Accounting Dashboard now shows how many invoices are waiting for e-invoicing. Clicking the count opens them, and you can send them one by one or in bulk.

Indian payroll changes in Odoo 20

Payroll is an Enterprise app. The release notes list these India payroll items:

  • Employees can generate and print their TDS declarations from their own profile.
  • Monthly TDS challans to record and deposit TDS deducted from salaries.
  • Form 138, generated quarterly, to report salary TDS deducted and deposited. Tax press reports that Form 138 replaces Form 24Q under the Income-tax Rules, 2026. Confirm this with your CA.
  • A Gratuity Calculation Report, an EPF Summary report, and sandwich-leave options (weekends, company holidays, or both).
  • A Notice Period tab when ending a contract, a salary configurator for applicants, and HDFC eNET salary files.

For the Odoo 19 baseline, see running Indian payroll in Odoo 19.

How to test the India changes before go-live

  1. Upgrade a copy of your Odoo 19 database and post a month of real bills with TDS through the new Pay options.
  2. Compare the TDS report with your last filed return for the same period.
  3. If you are a composition or QRMP taxpayer, produce a quarter's returns in Odoo and have your CA compare them line by line.
  4. Reconcile one import end to end with a bill of entry and check the product cost after the landed cost.
  5. Print the Schedule III statements for last year and give them to your auditor.
  6. Pick a go-live date away from your GST and TDS filing dates.

The general upgrade steps are in upgrading from Odoo 19 to 20. For an India setup review, talk to us.

Questions we get asked

How does TDS work in Odoo 20?

In Odoo 20, TDS taxes on a bill are withholding taxes: they do not reduce the amount due but show TDS Due and Net Due under the totals. You record TDS from the Pay button with TDS Only, TDS and Pay, or Payment Only, reviewing the lines in the Withholdings tab. TDS can also be deducted on advance payments, and reports group amounts by section of the Income-tax Act, 2025.

Does Odoo 20 support the GST Composition scheme?

According to the Odoo 20 release notes, yes. GST compliance has been extended to Composition taxpayers, with dedicated support for the Composition Scheme and its statutory returns, CMP-08 and GSTR-4. As of November 2026, Odoo's 20.0 India documentation does not yet describe the setup or menus, so test the returns on a copy of your database with your CA.

Can Odoo 20 produce Schedule III financial statements?

The Odoo 20 release notes say it can prepare financial statements with the presentation, classification and disclosures required under Schedule III, Division I of the Companies Act. Division I applies to companies following the Companies (Accounting Standards) Rules. Companies on Ind AS report under Division II, which the release notes do not mention. Have your auditor review the output before using it.

What is the bill of entry flow in Odoo 20?

The Indian Bill Of Entry module, l10n_in_boe, records customs duty on imported goods. From a posted overseas vendor bill matched to a purchase order, you open the Bill of Entry wizard, select the receipts, enter the bill of entry number, date, port code, assessable values and duty. Odoo creates a draft customs bill and a landed cost that adds the duty to inventory cost.

← Previous Odoo 20 offline mode for field and warehouse teams: what works, the limits, and how sync behaves Next → AI agents in Odoo 20: setup, IAP credits and the guardrails that matter
Keep reading
Implementation Fixing common e-invoice (IRN) and e-way bill errors in Odoo 19 8 min read Odoo 19 GST compliance in Odoo 19: taxes, HSN, e-invoice, e-way bill and GSTR 6 min read Odoo 20 Simplified access rights in Odoo 20, and how to map your Odoo 19 groups onto them 8 min read