Odoo's India localisation (l10n_in, l10n_in_gst, l10n_in_edi) covers GST tax determination, e-invoice IRN, and GSTR-1/3B return generation in Enterprise, but no native GSTR-2B matching against the purchase register, no Form 26AS reconciliation, and no TDS on vendor payments under 194C/194J without Studio customisation or partner modules — leaving Indian SMEs on Odoo to reconcile externally above 300 purchase invoices per month.
Add an external reconciliation layer via Odoo XML-RPC at /xmlrpc/2/object (or JSON-RPC), pulling account.move, account.move.line, account.bank.statement.line, and res.partner models. Authenticate via API key (Odoo 14+). Ingest GSTR-2B, Form 26AS, and bank MT940 externally, run multi-pass matching with variance taxonomy, and post cleared status back by creating account.payment and reconciliation records via XML-RPC.
Odoo connector with XML-RPC/JSON-RPC endpoints, API key authentication, model registry (account.move, account.move.line, account.bank.statement.line, res.partner), rate-limit-aware batch scheduler (Odoo.sh caps 100 req/min), GSTR-2B JSON adapter, Form 26AS parser, and writeback job creating payment and reconciliation records.
An Indian Odoo deployment (Community or Enterprise) reconciled beyond the native GSTR-1/3B layer — GSTR-2B invoice-level matching, Form 26AS TDS receivable matching, bank reconciliation at scale, and cleared status written back to Odoo's native UI for CA and auditor review.
Odoo has grown rapidly in the Indian SME and mid-market segments, particularly among businesses that want an ERP beyond Tally’s complexity ceiling but don’t need SAP or Oracle scale. Its India localisation has matured through Odoo 15, 16, and 17, and the gap between Community and Enterprise editions has narrowed in key areas — though not for reconciliation. This guide covers what the India localisation includes and where an external reconciliation layer fits.
Odoo India Localisation — Module by Module
The India fiscal localisation in Odoo 17 comprises:
- l10n_in — Base India module: chart of accounts, GST tax structure, state codes, HSN/SAC code support
- l10n_in_gst — GST tax determination on invoice entry, reverse charge mechanism, ISD support
- l10n_in_edi — e-invoice generation with IRN via Invoice Registration Portal (IRP), QR code embedding
- l10n_in_edi_ewaybill — E-way bill generation through the NIC portal
- l10n_in_hr_payroll — Indian salary structure with TDS under Section 192, PF, ESI
- l10n_in_reports — GSTR-1 and GSTR-3B return output
TDS on vendor payments under 194C, 194J, 194I, 194Q and other sections is not in the core localisation. It is typically added via Odoo Studio customisation or a partner module.
Community vs Enterprise for India
| Feature | Community | Enterprise |
|---|---|---|
| Base India localisation (l10n_in) | Yes | Yes |
| GST tax determination | Yes | Yes |
| e-invoice (IRN) generation | No | Yes |
| GSTR-1/3B JSON export | Limited (partner modules) | Native |
| Bank reconciliation with auto-suggest | Basic | Advanced |
| Document recognition (OCR) | No | Yes |
| Indian bank feeds (Salt Edge / Yodlee) | No | Yes |
For an Indian business serious about reconciliation automation, Enterprise is the practical starting point. The Community edition is viable for entities under 100 transactions/month where e-invoice is not mandatory (turnover under ₹5 crore).
Integrating Odoo with an External Reconciliation Layer
Odoo exposes XML-RPC at /xmlrpc/2/object (and JSON-RPC for newer clients). Authentication is via API key (Odoo 14+) or username/password. The endpoint is real — it is Odoo’s supported integration mechanism, not a fabricated API.
The integration flow:
- External tool authenticates and gets a session.
- Reads open invoices from
account.move, ledger lines fromaccount.move.line, and bank statement lines fromaccount.bank.statement.line. - Processes the reconciliation externally (applying TDS, GST, NACH, platform-settlement matching logic).
- Writes cleared status back by creating
account.paymentrecords and calling reconciliation methods onaccount.move.line.
Rate limits apply on hosted Odoo.sh instances (~100 requests/minute); on-premise Odoo has no imposed limit other than PostgreSQL throughput.
Reconciliation Gaps That Move to the External Layer
- GSTR-2B matching — Not native. External layer reads the Odoo purchase register via XML-RPC and matches against GSTR-2B JSON.
- Form 26AS vs TDS receivable — Not native. External TRACES integration handled outside Odoo.
- Payment gateway settlement — Odoo connects to Stripe and PayPal natively; Razorpay, PayU, Cashfree, Flipkart, Amazon settlements typically need partner modules or external processing.
- NACH batch disaggregation — Not handled. The bank statement line shows the lump sum; mandate-level outcomes come from the NPCI response file, which Odoo does not parse.
For a growing Indian business on Odoo, reconciliation software India reads Odoo via XML-RPC and adds these India-specific layers. GST reconciliation software handles the GSTR-2B matching specifically, pulling the Odoo purchase register and the 2B JSON in a single pipeline.
India-Specific Considerations
Odoo’s e-invoice module posts the IRN to the invoice record but does not verify that the IRN actually appears in the recipient’s GSTR-2B — that verification is the reverse reconciliation step that sits outside Odoo. The GSTR-2B reconciliation guide details the end-to-end matching logic. The reconciliation in SAP, Oracle and Tally India guide covers the parallel gaps in heavier ERPs. Odoo’s full India fiscal localisation reference is published on the Odoo India Fiscal Localization documentation.
A brief FAQ on specific Odoo-India reconciliation questions follows.