Skip to main content
ERP Integration · India

Reconciliation for Odoo in India — Bank, TDS, GST, Settlement

Odoo is the open-architecture ERP gaining strong traction in Indian SMB and mid-market. Community offers the modular base; Enterprise adds the Indian localisation modules (l10n_in, l10n_in_gst, l10n_in_tcs, l10n_in_tds). Both expose XML-RPC and JSON-RPC interfaces that allow read-only integration without modifying the Odoo modules. What Odoo does not do natively is parse Indian bank narration patterns at scale, reconcile vendor bills against GSTR-2B at line level, or map TDS deductions to the new payment-code regime against Form 26AS. TransactIG reads Odoo through its standard RPC interface and runs the matching layer alongside.

Request a DemoOdoo reconciliation in India →
Editions
Community · Enterprise · Odoo.sh
Interfaces
XML-RPC · JSON-RPC
Localisation
l10n_in · GST · TDS · TCS
Deployment
2–4 weeks

What Odoo Handles Natively, and Where the India Gap Appears

What Odoo does well

Odoo's modular architecture lets Indian customers pick the apps they need — accounting, inventory, manufacturing, CRM, HR — and extend through custom modules. Multi-company is native; multi-currency is native; the chart of accounts is configurable per company. Indian localisation modules carry GST, TDS, TCS, and e-invoice support.

XML-RPC and JSON-RPC provide clean programmatic read access to every model. The bank reconciliation widget allows interactive reconciliation through the standard UI for simple cases.

Where the India gap appears

Bank statement import supports CAMT.053, OFX, QIF, and CSV — not Indian formats like CIB Excel, YONO Business, or co-op bank PDF. The bank reconciliation widget is interactive, not pattern-driven; UPI VPA, NEFT fragment, and cheque-clearing extraction are not native.

TDS section-to-payment-code mapping under Sections 393, 394, 413 of the Income Tax Act 2025 is not yet built into the standard l10n_in_tds module. GSTR-2B reconciliation against thousands of vendor bills at line level is a manual exercise without an integrated matching layer.

TransactIG Plug Points on Odoo

Six matching surfaces sitting alongside Odoo — read-only RPC, no module installation.

Data ingestion

XML-RPC or JSON-RPC service account reads account.move, account.payment, account.bank.statement, and res.partner per company. No custom Odoo module deployed.

Section 393 TDS handling

Odoo TDS lines mapped to new payment codes 1001-1092 under Sections 393, 394, 413 of the Income Tax Act 2025. Reconciled against Form 26AS at code level.

GSTR-2B and IMS

Odoo vendor bills matched to GSTR-2B and IMS at GSTIN + invoice + tax-amount level. ITC eligibility and Rule 36(4) provisional credit per bill.

NACH batch matching

Outbound NACH batches reconciled to bank response files; bounce codes mapped, re-presentation tracked at partner level.

Platform settlements

Razorpay, PayU, Cashfree, Amazon, Flipkart, Meesho settlements disaggregated and matched to Odoo customer invoices and bank statement lines.

Bank statement ingestion

MT940, CAMT.053, CIB Excel, YONO Business, and PDF parsed natively; matched to Odoo bank statements or directly to account.move bank journals.

Odoo Integration Architecture

RPC feeds configured during implementation against Odoo's standard models. Customer admin owns service account credentials.

Odoo sourceRead methodSync cadenceField mappingVariance codes
Journal entries (account.move) XML-RPC search_read on account.move per company Daily or per-period close Journal item → TransactIG voucher class JOURNAL_UNMATCHED, BALANCE_DRIFT
Vendor bills (type=in_invoice) XML-RPC filter on account.move with bill type Daily Partner (vendor) → counterparty GSTIN BILL_OPEN, 2B_MISSING, ITC_BLOCKED
Customer invoices (type=out_invoice) XML-RPC filter on account.move with invoice type Daily Partner (customer) → counterparty INVOICE_OPEN, ADVANCE_UNAPPLIED
Bank statements (account.bank.statement) XML-RPC on bank statement and statement lines Daily Journal (bank) → Indian bank narration profile STMT_LINE_UNMATCHED, CHARGE_UNCLASSIFIED
TDS deductions (l10n_in_tds tax lines) XML-RPC on account.move.line filtered on TDS tax tag Per deduction cycle Odoo TDS section → new payment code (1001-1092) TDS_NOT_IN_26AS, RATE_MISMATCH, SECTION_RECLASSIFIED
GST output (l10n_in_gst) GSTR-1 register output via Odoo report extracts Per GST cycle Bill → GSTR-2B row ITC_INELIGIBLE_2B, INVOICE_MISSING_IN_2B

Common Reconciliation Gaps in Odoo India Deployments

Bank import scope

Odoo's bank importer accepts CAMT/OFX/QIF/CSV; Indian CIB Excel, YONO Business, and co-op bank PDF require external parsing.

TDS section vs payment code

l10n_in_tds tags carry legacy section labels; Form 26AS shows new payment codes — mapping layer needed during transition.

Bill vs GSTR-2B

Vendor bill posted in Odoo; supplier has not filed GSTR-1; ITC provisional under Rule 36(4). Not surfaced natively at bill level.

Multi-company intercompany

Inter-company journals between Odoo companies drift on timing or one-sided posting; consolidation surfaces but resolution is manual.

Gateway net vs gross

Razorpay settles net of fees; Odoo invoices raised gross; disaggregation needed before bank statement line application.

Custom module variance

Customers running custom-built India modules in Community have variant field structures; mapping needs verification per deployment.

How TransactIG Works with Odoo

01

Ingest

XML-RPC pulls fetch account.move, account.payment, account.bank.statement, and partner records per Odoo company. External feeds (bank statements, GSTR-2B, 26AS, NACH responses, settlement reports) land alongside.

02

Match

Odoo records matched to external sources. Narration parsing handles Indian bank narration; payment-code mapping aligns TDS to 1001-1092 codes; GSTR-2B match runs per company.

03

Exception queue

Unmatched items route to a structured queue with variance codes, ageing, suggested resolution, and maker-checker workflow. Reconciliation artefacts exported per Odoo company.

Frequently Asked Questions

Does TransactIG work with Odoo Community and Enterprise?+

Both. Odoo Community and Enterprise both expose the same XML-RPC and JSON-RPC interfaces for read access. TransactIG authenticates with a customer-provided service account, reads from the account.move, account.payment, res.partner, and bank statement models, and feeds the matching layer. Enterprise customers running the Indian localisation modules (l10n_in, l10n_in_gst, l10n_in_tcs, l10n_in_tds) get richer source data; Community customers with custom-built India layers integrate the same way once the field mapping is established.

How does TransactIG handle Odoo's multi-company setup?+

Odoo's multi-company architecture is one of its strongest features in India — group companies under one Odoo instance, with company-level chart of accounts and access rules. TransactIG ingests data per Odoo company, runs reconciliation at company level (each company has its own bank, TDS, GST), and rolls up to a consolidated group view. Intercompany journals between Odoo companies are auto-matched on amount-and-date pair; intercompany imbalances surface in the exception queue.

How does TDS in Odoo reconcile to Form 26AS?+

Odoo Enterprise's Indian localisation captures TDS at the bill or payment level with section, deductee, and rate. Community customers with custom TDS modules capture the same data through configured product tax rates or dedicated TDS journals. The new payment-code regime (1001-1092) under Sections 393, 394, 413 of the Income Tax Act 2025 introduces codes that may not yet exist in either Odoo configuration. TransactIG applies section-to-payment-code mapping configured during implementation and reconciles against Form 26AS at code level.

How does Odoo reconcile vendor bills against GSTR-2B?+

Odoo Enterprise's l10n_in_gst module captures bills with GSTIN, invoice number, taxable value, and tax break-up. TransactIG reads the account.move records (type=in_invoice) via XML-RPC and matches them line-by-line against the GSTR-2B and IMS feed downloaded from the GSTN portal. ITC eligibility, blocked-credit handling, supplier-not-filed flags, and Rule 36(4) provisional credit are surfaced. Community customers with equivalent custom modules integrate the same way.

How does TransactIG handle Odoo's bank statement reconciliation?+

Odoo's account.bank.statement model accepts CAMT.053, OFX, QIF, and CSV imports. Indian bank reality — CIB Excel, YONO Business, MT940 from private bank corporate accounts, PDF from co-op banks — exceeds Odoo's importer scope. TransactIG parses every major Indian bank statement format natively, extracts narration match keys (UPI VPA, NEFT fragment, cheque), and matches against Odoo's account.move bank journals or directly against AP payments and AR receipts.

How long does Odoo integration take?+

2 to 4 weeks for most Odoo customers. Week one configures the XML-RPC service account and tests read access against account.move, account.payment, and partner models. Week two maps the chart of accounts, multi-company hierarchy, tax codes, and TDS configuration to TransactIG's matching schema. Weeks three and four configure narration patterns, TDS payment-code mapping, GSTR-2B alignment, settlement disaggregation, and the maker-checker workflow. Customers self-hosting Odoo and customers on Odoo.sh both integrate the same way.

Reconciliation that fits the Odoo instance you already run

No custom Odoo module deployed. Read-only RPC. 2 to 4 weeks to first reconciled close, ISO 27001:2022 certified, running from AWS Mumbai.

Request a DemoSee Odoo reconciliation insights →