Odoo Accounting for Indian Compliance: GST, TDS and E-Invoicing in Practice

Most Odoo accounting content lists features without answering the questions that decide whether an Indian business can file cleanly. Odoo Accounting for Indian Compliance depends far less on the software than on how it is configured, so this guide explains how Odoo handles GST, TDS, and electronic invoicing in practice, and what to validate before you file your first return.

📋 Key Takeaways

  • Odoo applies CGST plus SGST within a state and IGST across states automatically, driven by fiscal positions that read the customer and company state.
  • TDS is defined per vendor category and deducted at payment, posting to the payable ledger without a manual journal entry.
  • Electronic invoicing returns an IRN and QR code from the NIC portal on confirmation, if the GSTIN, HSN codes, and provider credentials are correct.
  • The most common failure is a wrong customer state field, which produces incorrect GST on every invoice to that customer until fixed.

Why Generic Reviews Miss Odoo Accounting for Indian Compliance

The features praised in a general Odoo accounting review are usually measured against standards such as GAAP and VAT. Those reviews rarely test GST with place of supply logic, TDS with section specific rates, or electronic invoicing against the NIC portal, which is what an Indian business needs.

  • Indian compliance is configuration dependent. Fiscal positions, HSN codes, TDS sections per vendor, and provider credentials all have to be present.
  • If any piece is missing, the system still produces invoices that are not compliant, and the gap surfaces only when you file.

GST Setup, HSN, and Place of Supply

Before the first invoice it helps to follow an accounting configuration checklist so nothing on the statutory side is missed. The pieces below decide whether GST comes out right.

What Indian compliance configuration requires

  • Company GSTIN and state. Set on the company record, this decides whether a transaction is within a state or across states.
  • Customer GSTIN and state. Every business customer needs a valid GSTIN and correct state, which fiscal positions read to pick the right tax.
  • Fiscal positions. One for sales within a state applies CGST plus SGST and one across states applies IGST, selected automatically from the two state values.
  • Tax rates. GST rates configured per product category, each with CGST, SGST, and IGST variants that products inherit.
  • HSN and SAC codes. Assigned at product or category level so every invoice line carries the code, which invoicing and GSTR filing both require.
  • Place of supply. For services this can differ from the billing address, so Odoo uses the customer state by default and lets you override per invoice.

GST Returns and How Odoo Maps the Data

Teams often ask how Odoo compares with the best accounting ERP software on returns. Odoo does not file for you, but it assembles the source data in the shape the portal expects.

  • GSTR-1 data. Odoo builds the B2B and B2C registers, credit and debit notes, and the advance summary from posted sales invoices, grouped by GSTIN and rate.
  • GSTR-3B data. Outward supply, input credit, and tax liability summaries from posted invoices and bills.
  • Export format. The data exports as Excel or JSON for upload to the portal or a provider. Odoo supplies the source, not the filing itself.
  • Reconciliation. After filing, match the GSTR-2A and GSTR-2B data from the portal against the vendor bill register, where a mismatch flags a missing invoice.
⚠️Return accuracy depends on posted invoices. Draft entries, unposted bills, and invoices with the wrong fiscal position all produce incorrect return data. Post daily and validate monthly before filing.

TDS Handling and Ledgers

How TDS works inside Odoo

  • Section configuration. Each section such as 194C, 194J, or 194H is set up as a withholding tax with the correct rate and threshold.
  • Vendor category. Every vendor is tagged with its section, so a bill from that vendor triggers TDS automatically.
  • Deduction at payment. Odoo splits the payment into the net to the vendor and the TDS to the payable ledger, with no manual journal entry.
  • Threshold tracking. For sections with annual limits, Odoo tracks payments per vendor per year and applies TDS once the limit is crossed.

Electronic Invoicing and IRN Generation

How electronic invoicing flows through Odoo

  • Invoice confirmed. Odoo packages the GSTINs, HSN codes, values, and taxes into the JSON format the NIC portal expects.
  • Submission. The data goes to the portal through a provider API, using credentials that are configured once during setup.
  • IRN returned. The portal validates the data and returns the Invoice Reference Number and a QR code.
  • Stored on the record. Odoo saves the IRN on the invoice and embeds the QR code in the PDF.
  • Cancellation. An electronic invoice can be cancelled within 24 hours through the same API. After that window you issue a credit note instead.
🚨Electronic invoicing fails quietly when a customer GSTIN is invalid, an HSN code is missing, or provider credentials have expired. The invoice still saves without an IRN, so the finance team must watch for failed submissions and resend once the data is fixed.

Electronic Way Bill Considerations

  • An electronic way bill is required for goods movement above 50,000 rupees, generated from the delivery order rather than the invoice.
  • Odoo can generate these through the same provider API, pulling transporter, vehicle, and distance details from the delivery order.

What the India Localisation Package Provides

  • Base localisation. The India fiscal localisation gives you the Indian chart of accounts, GST tax structure, fiscal positions, and HSN fields at initial setup.
  • What it includes. Accounts mapped to Indian standards, GST rates with all variants, fiscal position rules, and HSN and SAC fields on products.
  • What it does not include. TDS setup per vendor, provider credentials, return filing, and industry specific rules for sectors such as pharma.
  • The practical read. The package gives you the structure, and partner configuration turns it into a setup that files cleanly.

Where Misconfiguration Creates Filing Errors

Configuration errors that produce wrong GST returns

  • Customer state empty or wrong. The fiscal position cannot tell within state from across state, so wrong tax lands on every invoice to that customer.
  • HSN code missing. The invoice posts internally but fails invoicing validation, and the GSTR-1 data shows blank HSN columns.
  • Fiscal position not mapped. The position exists but does not swap the tax types, so both can land on one invoice.
  • TDS section not assigned. The payment goes out with no deduction, and the quarterly return comes up short.
  • Provider credentials expired. Invoicing calls fail and invoices save without an IRN, leaving the business non compliant until resent.
💸Every misconfiguration compounds. One wrong state produces wrong GST on every invoice to that customer for the period. A functional consultant through Odoo consulting services can validate the setup before the first invoice and avoid amended returns.

Reconciliation and Audit Trail

  • GST reconciliation. Compare the sales register against the filed GSTR-1 and the purchase register against GSTR-2A and GSTR-2B from the portal to flag a missing invoice.
  • TDS reconciliation. Match the TDS deducted in Odoo against Form 26AS so every deduction has a matching entry in both systems.
  • Audit trail. Odoo records who created and posted each invoice and when, and a posted entry cannot be deleted, only reversed through a credit note.
  • Monthly close. Post all invoices, reconcile the bank, validate GST, verify TDS, and lock the period.

A Pre Go Live Compliance Checklist

If you are moving from another system, plan the Odoo data migration so opening balances land clean, then work through the checklist below before posting in production.

Validate every item before the first invoice

  • ☐ Company GSTIN and state are correctly set.
  • ☐ All business customers have a valid GSTIN and correct state.
  • ☐ Fiscal positions exist for within state and across state sales.
  • ☐ Tax rates are created with all three variants.
  • ☐ HSN and SAC codes are assigned to all products and categories.
  • ☐ TDS sections are configured with correct rates and thresholds, and vendors tagged with their category.
  • ☐ Provider credentials are obtained, configured, and tested.
  • ☐ A test invoice returns an IRN and QR code from the portal.
  • ☐ The chart of accounts is reviewed and approved by your CA, and a sample GSTR-1 report matches expectations.
💡This checklist is not optional. Every item should pass before the first production invoice, which is where planning your Odoo implementation services around a clean start decides whether you file smoothly or file corrections.
India Compliance

Need Odoo Accounting Configured for Indian GST, TDS, and Electronic Invoicing?

Tatvamasi Labs configures Odoo accounting with in house finance expertise, validating fiscal positions, TDS sections, HSN mapping, and NIC portal integration before your first invoice.

Talk to Our Odoo Team

Frequently Asked Questions

Yes. With the India fiscal localisation enabled, Odoo applies CGST plus SGST for sales within a state and IGST for sales across states through fiscal positions. HSN and SAC codes carry through every invoice, and the data for GSTR-1 and GSTR-3B comes from posted invoices.
TDS is configured per vendor category. When a vendor bill is paid, Odoo deducts TDS automatically based on the applicable section and rate, and the amount posts to the TDS payable ledger. Certificates and quarterly return data are extracted from those entries.
Yes. When an invoice is confirmed, Odoo sends the data to the NIC portal through a provider API. The portal returns an IRN and a signed QR code that Odoo stores on the invoice and embeds in the PDF. It needs valid provider credentials and a correct GSTIN on every customer record.
A misconfigured fiscal position, usually caused by a missing or wrong state field on a customer record. When that happens Odoo can apply IGST to a sale within a state, and every affected invoice has to be corrected at filing time rather than fixed by a software patch.
Odoo produces the data for GSTR-1 and GSTR-3B from posted invoices and bills. You export it as Excel or JSON and upload it to the portal or file through a provider. Odoo does not file returns directly with the government portal, but it gives you the source data in the required format.
Yes. Odoo can generate electronic way bills through the same provider API used for invoicing. Part A comes from the invoice and Part B carries the transport details from the delivery order, and both must be complete before goods move.
The localisation package gives you the chart of accounts, GST structure, fiscal positions, and HSN fields. TDS setup, provider credentials for invoicing, and return filing still need partner configuration, so a validated setup matters before you go live.