ERP migration
Field-level mapping, validation, and rollback between Tally Prime and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Tally Prime
Source
Odoo ERP
Destination
Compatibility
11 of 12
objects map 1:1 between Tally Prime and Odoo ERP.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Moving from Tally Prime to Odoo ERP is a migration from a desktop accounting tool built around GST compliance and voucher-centric transactions to a modular all-in-one cloud ERP. Tally Prime stores every record in a proprietary flat-file database exportable only via XML templates or TDL-based SOAP endpoints; Odoo uses a PostgreSQL-backed REST and XML-RPC API. We bridge that gap by guiding the customer through Tally's XML export preparation, resolving Tally group hierarchies into Odoo's account-type structure, mapping Godowns to Odoo Warehouse records, and sequencing ledger opening balances before any voucher import. We do not migrate Tally workflows, TDL customisations, or the TallyVault-encrypted data layer; we deliver a written inventory of these for the customer's admin to rebuild in Odoo's studio or with an Odoo partner.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Tally Prime object lands in Odoo ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Tally Prime
Ledger
Odoo ERP
Account (account.account)
1:1Tally Ledgers map directly to Odoo account.account records. We preserve the primary/affects-reporting flag from Tally's group settings to set Odoo's account type (receivable, payable, revenue, expense, or other). Opening balance from Tally's Dr/Cr column migrates as Odoo's opening debit or credit amount. If Tally uses multiple GST registration numbers across ledgers, we create one Account per GSTIN in Odoo's Indian localisation configuration.
Tally Prime
Group
Odoo ERP
Account Group (account.group)
1:1Tally's nested Groups (Sundry Debtors, Sundry Creditors, Duties and Taxes, Bank Accounts, Cash-in-Hand) map to Odoo account.group records using the parent_left/parent_right tree structure. The affects-reporting flag on each Tally Group determines whether Odoo uses it for financial statement generation. We maintain the full hierarchy so that the trial balance and P&L groupings match the Tally source output.
Tally Prime
Party (Customer and Supplier)
Odoo ERP
Contact (res.partner)
1:1Tally Parties with GSTIN and PAN migrate to Odoo res.partner records. The Tally Party type (Sundry Debtor or Sundry Creditor) determines whether the partner is tagged as customer or supplier in Odoo. GSTIN is stored on the Indian address record (l10n_in_gstin field) and validated against the GST portal API during pre-migration audit. PAN, shipping address, billing address, and credit limit from Tally migrate to the corresponding Odoo fields.
Tally Prime
Stock Item
Odoo ERP
Product Template (product.template)
1:1Tally Stock Items map to Odoo product.product records with HSN code, unit of measure, and opening quantity. We map the Tally stock item's GST rate and tax category to Odoo's l10n_in_hsn_code and the applicable tax group. Batch and expiry date tracking in Tally migrates to Odoo's lot_id and use_expiration_date fields only if those features are enabled in the destination database configuration.
Tally Prime
Stock Group
Odoo ERP
Product Category (product.category)
1:1Tally Stock Groups provide the inventory category hierarchy and map to Odoo product.category records using the parent_path tree structure. The parent-to-child relationships are preserved so that Odoo's reporting by category matches the grouping logic used in Tally's stock reports.
Tally Prime
Godown
Odoo ERP
Stock Warehouse (stock.warehouse)
1:manyTally Godowns represent physical warehouse or storage locations and map to Odoo stock.warehouse records. If the customer has multiple godowns representing sub-locations within one physical warehouse, we create a single Odoo warehouse and use stock.location records to model the godown hierarchy. Single-location deployments without detailed godown usage map directly to the default Odoo warehouse. Godown-level stock quantities are disaggregated to warehouse-level during import.
Tally Prime
Voucher (Sales Invoice)
Odoo ERP
Account Move (account.move) with type = out_invoice
1:1Tally Sales Vouchers map to Odoo account.move records with move_type = out_invoice. Voucher number becomes the Odoo invoice reference, voucher date becomes invoice date, party reference links to the mapped res.partner, and the GST amount and rate split into Odoo's tax lines. We sequence sales invoices before purchase bills so that outstanding receivable aging reports in Odoo reflect the correct open items from day one.
Tally Prime
Voucher (Purchase Bill)
Odoo ERP
Account Move (account.move) with type = in_invoice
1:1Tally Purchase Vouchers map to Odoo account.move records with move_type = in_invoice. Vendor GSTIN, PAN, and invoice number from the Tally voucher migrate to Odoo's vendor bill fields. Reverse-charge GST entries in Tally are modelled in Odoo using the l10n_in_reverse_charge flag on the tax line.
Tally Prime
Voucher (Payment, Receipt, Journal)
Odoo ERP
Account Move (account.move) with type = entry
1:1Tally Payment and Receipt vouchers map to Odoo account.move records with move_type = entry, using the appropriate journal (cash or bank). Journal vouchers map similarly with the journal selected by matching the Tally voucher type name to the configured Odoo journal. All line items reference the mapped account.account records and maintain the debit/credit amounts from the source voucher.
Tally Prime
Cost Centre
Odoo ERP
Analytic Account (account.analytic.account)
1:1Tally Cost Centres (departments or cost pools used for expense allocation) map to Odoo account.analytic.account records. If the Tally data uses cost-centre-based budgeting, we create corresponding analytic plans in Odoo and link the budget lines during the budget migration step. Tally does not enforce cost centre usage on vouchers; we migrate the assignments present in the source data and flag any vouchers with missing cost centre references.
Tally Prime
Budget
Odoo ERP
Budget Plan (budget.plan)
1:1Tally Budget masters associate groups or cost centres with period-based budget values and map to Odoo budget.plan records. The budget lines reference the mapped account.group or analytic account. If the destination Odoo instance does not have the Budget app installed, we migrate the budget values as tags on the account.analytic.account records for manual reference.
Tally Prime
Price List
Odoo ERP
Product Pricelist (product.pricelist)
1:1Tally Price Lists associate stock items with party-type-based pricing and map to Odoo product.pricelist records. Party-type conditions (customer vs supplier) become pricelist item rules in Odoo. Conditional pricing logic in Tally that uses complex conditions may require manual configuration in Odoo's Pricelist Rules editor; we document the full rule set from Tally for the customer's admin to implement.
| Tally Prime | Odoo ERP | Compatibility | |
|---|---|---|---|
| Ledger | Account (account.account)1:1 | Fully supported | |
| Group | Account Group (account.group)1:1 | Fully supported | |
| Party (Customer and Supplier) | Contact (res.partner)1:1 | Fully supported | |
| Stock Item | Product Template (product.template)1:1 | Fully supported | |
| Stock Group | Product Category (product.category)1:1 | Fully supported | |
| Godown | Stock Warehouse (stock.warehouse)1:many | Fully supported | |
| Voucher (Sales Invoice) | Account Move (account.move) with type = out_invoice1:1 | Fully supported | |
| Voucher (Purchase Bill) | Account Move (account.move) with type = in_invoice1:1 | Fully supported | |
| Voucher (Payment, Receipt, Journal) | Account Move (account.move) with type = entry1:1 | Fully supported | |
| Cost Centre | Analytic Account (account.analytic.account)1:1 | Fully supported | |
| Budget | Budget Plan (budget.plan)1:1 | Fully supported | |
| Price List | Product Pricelist (product.pricelist)1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Tally Prime gotchas
Proprietary database requires XML-template export for all migrations
Stock quantities can reset to zero after Tally version upgrades
TSS subscription required for official data import/export features
Voucher renumbering risk when importing into Tally Prime
GSTIN-linked parties require pre-validation before import
Odoo ERP gotchas
No rollback for CSV imports
External ID conflicts on re-import
Many2many field encoding in CSV imports
Large export timeouts require batching
Version schema drift between Odoo releases
Pair-specific challenges
Migration approach
Tally data export preparation and TSS confirmation
We confirm the customer's active TSS (Tally Software Services) licence status because TSS is required for XML export, the exceptions report, and Excel template mapping. We guide the customer through restoring default XML templates if modified, then run a full XML export of the chart of accounts, voucher history, party masters, stock items, godowns, cost centres, budgets, and price lists. We validate the export against Tally's own exceptions report to surface any data integrity issues before we begin transformation. Any GSTIN validation failures are flagged and returned to the customer for correction before the next phase.
Odoo environment provisioning and Indian localisation setup
We provision a clean Odoo database on the customer's chosen deployment (Odoo.sh cloud, on-premise Docker, or existing server) and install the Indian localisation module (l10n_in) which provides the GST-compliant chart of accounts, e-invoice and e-way bill integration, and GSTR reporting. We configure the fiscal year, Indian states list, and GST registration numbers for each migrating entity. If the customer uses multi-company Odoo configuration, we create one company per Tally company registration before any data import begins.
Chart of accounts mapping and account group tree construction
We map the Tally ledger group hierarchy to Odoo's account.group tree, preserving the parent-child relationships and the affects-reporting semantics as Odoo account type assignments on individual account records. We run the first import pass in a staging Odoo database, generate the trial balance, and reconcile it against Tally's source trial balance to confirm account-level debit and credit totals match before proceeding to voucher migration. Any account-level discrepancies are investigated and corrected before the voucher import phase.
Party master, product master, and godown-to-warehouse migration
We import all Tally Parties as Odoo res.partner records, tagging each as customer or supplier based on Tally's party type, and storing the GSTIN and PAN on the Indian address record. We run GSTIN validation against the GST portal API and surface any failures. Stock items import as Odoo product.product records with HSN codes, units of measure, and opening quantities. Godowns map to Odoo stock.warehouse records, with sub-godown locations modelled inside the warehouse as stock.location records. We run a stock-by-warehouse reconciliation report against Tally's godown stock report to validate godown-level quantities before closing this phase.
Voucher migration in dependency order with opening balance sequencing
We import opening balances as Odoo account.move records of type entry using a dedicated Opening Balance journal before any open-period transactions. We then import sales invoices, purchase bills, payments, receipts, and journal vouchers in chronological order, with each voucher referencing the mapped account, partner, and tax lines from the earlier mapping phases. Voucher numbering is agreed with the customer before this phase: we use Odoo's journal configuration to either preserve original Tally voucher numbers as references or use Odoo's auto-numbering with a configurable prefix and sequence. After voucher import, we generate the outstanding receivables and payables aging report and reconcile it against Tally's outstanding summary.
Cutover, delta sync, and automation rebuild handoff
We freeze new transaction entry in Tally during cutover, run a final delta import of any vouchers added during the migration window, then enable Odoo as the system of record. We do not migrate Tally workflows, TDL customisations, or TallyVault-encrypted data because these represent application logic rather than transactional data. We deliver a written inventory of every Tally voucher type, budget, cost centre, and price list with its mapping status and any manual rebuild actions required in Odoo's studio. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. Post-migration admin support, training, and workflow rebuild are outside standard scope.
Platform deep dives
Tally Prime
Source
Strengths
Weaknesses
Odoo ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Tally Prime and Odoo ERP.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Tally Prime: Not publicly documented.
Data volume sensitivity
Tally Prime doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Tally Prime to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Tally Prime to Odoo ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Tally Prime
Other ways to arrive at Odoo ERP
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.