Talk to an Expert
Talk to an Expert ✆ +91 945 945 6700
Accounting and Bookkeeping · 12 min read · Jul 20, 2026 · Updated Jul 27, 2026

How to Migrate Data From Tally to Odoo

CA Puja Pradhan

How to Migrate Data From Tally to Odoo - Featured Image
In this guide

    Migrating from Tally to Odoo means moving your masters, your closing balances and, where the case demands it, your transaction history into Odoo without losing a rupee or the audit trail behind it. The tally to odoo migration steps follow a fixed order: extract the data from Tally, clean and map it, configure Odoo, import the masters, load the balances, run both systems side by side for a month, and only then cut over. This explainer walks through each step in the order you will actually do them, and flags where an Indian business tends to trip up. If you are still deciding whether the move is worth it, our note on Tally versus Odoo weighs that up separately; here we assume the decision is made and the question is how.

    What migrating from Tally to Odoo actually involves

    Tally stores your books in its own proprietary company file. Odoo runs on a PostgreSQL database and treats accounting as one module inside a wider ERP, so the migration is not a file copy; it is a controlled re-entry of your data into a different structure. Three things travel across: master records (the reference data), balances (what each account and item is worth on the cut-over date) and, optionally, historic transactions. Odoo keeps the same double-entry logic Tally uses, so a debit stays a debit; what changes is how the two packages label and group the same entries.

    The word migration also carries a second, unrelated meaning inside Tally itself. When you open an older company in Tally Prime, it runs a version migration that rewrites the file to the newer format. That is housekeeping within Tally and has nothing to do with moving to Odoo, so keep the two ideas apart before you begin. The cleanest way to picture the real exercise is as a one-way pipeline rather than a sync: you freeze the source, move it, prove it matches, and switch off the old system. The diagram below shows that pipeline end to end.

    Seven-step flow showing the Tally to Odoo migration pipeline from data extraction through parallel running to cut-over.
    The Tally to Odoo migration pipeline

    Who needs a Tally to Odoo migration

    Not every Tally user should move. The businesses that genuinely benefit tend to share a pattern. They have outgrown standalone accounting and want inventory, manufacturing, sales and accounts in one connected place. They run multiple warehouses or need lot and serial tracking that Tally handles awkwardly. Or they have a distributed team that wants browser access rather than a Tally licence on each machine. If that is you, the migration pays for itself; if you simply want cleaner books in the tool you already own, it may not.

    Group companies are a special case. If you are consolidating several entities, the move is also a chance to standardise the chart of accounts across all of them, which is far harder to retrofit later. For that, read our guidance on mapping Tally ledgers to an Odoo chart of accounts before you export anything, because the mapping decisions you make once will govern every entity.

    The tally to odoo migration steps, in order

    Here is the sequence. Treat it as a checklist and do not skip ahead; each step assumes the one before it is signed off.

    1. Extract from Tally. Export masters and transactions using Tally's XML or Excel export. XML preserves structure best; Excel is easier to edit. Pull ledgers, groups, stock items, units, customers, suppliers, GST details and the day book for the period you intend to carry.
    2. Clean and map. Standardise names, remove duplicate ledgers, and decide the Odoo home for every Tally group. This is the step that decides whether the migration is smooth or painful.
    3. Configure Odoo. Set the fiscal year, taxes, GST fiscal positions, warehouses and the chart of accounts. Switch on multi-location and lot tracking here if you use them, because they cannot be added cleanly after stock is loaded.
    4. Import masters. Load the reference data first: accounts, products, partners, taxes. Nothing transactional moves until masters import without error.
    5. Load balances. Post opening balances as a journal entry, and load closing stock as an inventory adjustment at the Tally closing value.
    6. Run in parallel. Enter live transactions in both Tally and Odoo for one month.
    7. Reconcile and cut over. Compare the two systems, and once they agree, stop entering data in Tally.

    The heavy lifting sits in steps two and three. Odoo does not have a one-to-one equivalent for every Tally concept, so a straight import will fail unless you have already decided where each element lands.

    What moves cleanly and what needs mapping

    Masters move across with little friction. The structural features that make Tally distinctive, cost centres, godowns and bill-wise references, do not exist under the same names in Odoo and must be mapped to Odoo's own constructs first.

    Tally elementOdoo equivalentMigration note
    Ledgers and groupsChart of accountsMove cleanly; align the group hierarchy to Odoo account types.
    Stock items and unitsProducts and units of measureMove cleanly; set the costing method before import.
    Customers and suppliersContacts (partners)Move cleanly with GSTIN and address details.
    Cost centresAnalytic accountsManual mapping; Odoo tags entries rather than routing them.
    GodownsWarehouses and internal locationsEnable multi-location first; load closing stock as an adjustment.
    Stock batchesLot or serial numbersEnable lot tracking first; carry opening quantity and value per lot only.
    Bill-wise referencesOpen invoices and billsLoad as outstanding documents so ageing rebuilds correctly.
    CA Tip: Map your GST tax rates to Odoo fiscal positions before you import a single invoice. If the fiscal position is wrong, every sales and purchase document inherits the wrong tax treatment, and unwinding that after go-live is far more work than getting it right once at the start.

    A worked example: mapping one Tally company into Odoo

    To see how the rules above play out, take a small trading business closing its books on 31 March. The table maps six of its Tally masters to the Odoo destination, with the figure that should land in Odoo once the import is done. Every GST figure uses the current rates, the closing values are the ones you post as the opening journal and the inventory adjustment, and the party balance is loaded as an open invoice so the ageing rebuilds. As a rough guide, a migration of this size is priced from ₹25,000 (indicative, Exl GST), with the real quote turning on how many lots and how much history you carry. Record every stock move through inventory voucher mapping so quantities and values stay tied to the ledger.

    Tally master or fieldExample in TallyOdoo destinationValue or GST after migration
    Sales ledger (Sales @18%)Taxable sales ₹1,00,000Chart of accounts: sales income, 18% fiscal positionCGST ₹9,000 + SGST ₹9,000 = ₹18,000; invoice ₹1,18,000
    Stock item (14-inch laptop)25 units at ₹40,000 costProduct (storable), weighted-average costInventory adjustment 25 × ₹40,000 = ₹10,00,000
    Purchase ledger, inter-statePurchase ₹80,000 @18% IGSTChart of accounts: purchases, IGST 18% positionIGST ₹14,400; bill total ₹94,400
    Sundry debtor (ABC Traders)Closing balance ₹2,36,000Contact (partner) with GSTIN, receivableOpen invoice ₹2,36,000 (₹2,00,000 taxable + ₹36,000 GST at 18%)
    Godown (Pune store)Closing stock ₹10,00,000Warehouse and internal locationLoaded as one inventory adjustment at ₹10,00,000
    Fixed asset (plant), WDVWritten-down value ₹5,40,000Chart of accounts: fixed asset, plus asset registerOpening journal carries ₹5,40,000 at cost less accumulated depreciation

    Opening balances or the full history?

    This is the decision that most changes the size of the job. For the large majority of businesses, opening balances as at 1 April are enough. You carry the closing figures across, leave the earlier years fully readable in Tally for audit and assessment, and start fresh in Odoo. That keeps the import small, fast and easy to reconcile.

    Full transaction history is worth the effort only in specific cases: where you need item-level analytics across prior years, or where a pending assessment or litigation means you must be able to drill into old vouchers inside the live system. If neither applies, do not carry years of day book across just because you can; every extra year is more to clean and more that can break. Whichever route you take, the closing trial balance, the stock summary and the GST ledgers must tie exactly between the two systems.

    Common mistake: Importing three years of raw transactions to "keep everything", then spending weeks reconciling entries that never needed to move. If the old data is only for reference, opening balances plus a readable Tally backup serve the same purpose at a fraction of the risk.

    Setting the cut-over date and running in parallel

    Set the cut-over at 1 April so that a complete financial year sits inside one system and your annual audit is not split across two packages. A mid-year switch forces the auditor to stitch two sets of books together for one year, which nobody enjoys and which invites error.

    Do not switch off Tally on day one. Run both systems in parallel for a full month: enter every live transaction in Tally and in Odoo, then at the end of the month compare the profit and loss, the receivables ageing and the tax ledgers. Only when the two agree do you stop entering data in Tally. The month of overlap is your safety net; it catches mapping errors while you still have a working fallback. The migration checklist and common pitfalls lists the exact reports to compare during that window.

    Timeline showing the cut-over sequence from freezing Tally in March to stopping Tally entries in May around a 1 April go-live.
    Cut-over calendar around 1 April

    Keep the audit trail intact

    A new accounting system in India is not free to run without an edit log. Rule 3(1) of the Companies (Accounts) Rules 2014 requires every company to use accounting software with an audit trail that records each change and cannot be switched off, and the Ministry of Corporate Affairs has made this mandatory for all companies. The statutory auditor reports separately on the feature under Rule 11(g) of the Companies (Audit and Auditors) Rules 2014, a duty that sits outside CARO. Enable Odoo's log from the very first day of use, not after go-live, because entries posted before the log is on are not covered.

    This matters during migration specifically because the opening journal and the inventory adjustment are large, one-off entries. If they are posted before logging is enabled, an auditor can reasonably ask how they can be relied upon. Turn the log on, then post them, and keep the sealed Tally backup so the trail stays continuous across the change of system. The GST side deserves the same care: your input and output tax ledgers must reconcile to what you have already filed on the GST portal, so that the return figures in Odoo pick up exactly where Tally left off.

    How to check the migration is correct

    Proving the move is where discipline pays off. Reconcile in this order, and treat any mismatch as a stop sign rather than a rounding quirk:

    • Trial balance. The closing trial balance in Tally and the opening trial balance in Odoo must match to the rupee. Every general ledger account should agree line by line.
    • Stock summary. Total quantity and value per item, and per lot where you track lots, must equal the Tally closing stock.
    • Party balances. Receivables and payables ageing should rebuild to the same buckets, which only happens if you loaded open invoices rather than a net figure.
    • GST ledgers. Input and output tax balances must match your last filed returns.
    • Fixed assets. Carry the written-down value per asset; our depreciation calculator helps you confirm the opening WDV before you load it.

    If the trial balance ties but the profit and loss looks odd during the parallel month, the fault is almost always a mapping error in step two, not the import itself. That is why the parallel run exists at all, and why the same reconciliation discipline applies whether you land on Odoo or a lighter cloud ledger, as in a Tally to Zoho Books migration.

    Key terms

    • Tally XML Export: Tally's structured export format that preserves master and voucher relationships during extraction.
    • Ledger Mapping Schema: the plan that assigns each Tally ledger and group to an Odoo chart-of-accounts line.
    • Odoo Fiscal Positions: Odoo's rule set that applies the correct GST treatment to each transaction.
    • ERP Open Balances: the opening figures posted into the new system on the cut-over date.
    • Trial Balance: the list of every ledger balance used to prove the two systems agree.

    When to hand it over

    A migration you do once is a migration you will not have practised. If the books are complex, if inventory runs into thousands of lots, or if a busy filing season leaves no room for a month of parallel entry, it is usually cheaper to have it done properly than to redo it. Patron's Migration: Tally to Odoo service handles the extraction, mapping and reconciliation end to end, with a CA signing off each checkpoint. Either way, the informational ground rules on this page still apply, and you can see how software migration sits within the wider accounting and bookkeeping process.

    Key takeaways

    • Odoo runs on a PostgreSQL database, so migration is a controlled re-entry, not a file copy.
    • Masters move cleanly; cost centres, godowns and batches must be mapped to Odoo's analytic accounts, warehouses and lots first.
    • Opening balances at 1 April suit most businesses; carry full history only for analytics or live litigation.
    • Set the cut-over at 1 April and run both systems in parallel for one month before switching off Tally.
    • Enable Odoo's audit trail from day one to satisfy Rule 3(1) of the Companies (Accounts) Rules 2014.
    • Sign off only when the trial balance, stock summary, party ageing and GST ledgers all tie exactly.

    Decision guide

    Should you migrate from Tally to Odoo?
    Should you migrate from Tally to Odoo?
    Share this guide: Link copied!

    Which Tally masters need mapping before import into Odoo?

    Masters move cleanly: ledgers, groups, stock items, units of measure, customers, suppliers and GST details. Transactions can move either as opening balances or as full history through XML or Excel import. Cost centres, godown-wise stock and bill-wise references need mapping first, because Odoo uses analytic accounts and warehouses in place of the Tally structures.

    Should opening balances or full transaction history be migrated?

    Opening balances as at 1 April are enough for most businesses, with earlier years left readable in Tally for audit and assessment. Full history is worth the effort only where item-level analytics or a pending litigation demands it. Either way, the closing trial balance, stock summary and GST ledgers must tie exactly between the two systems.

    When should the cut-over date for an Odoo migration be set?

    Set the cut-over at 1 April so that a complete financial year sits inside one system and the audit is not split across two packages. Run both systems in parallel for one month, compare the profit and loss, receivables ageing and tax ledgers at the end of it, and stop entering data in Tally only once the two agree.

    What happens to Tally godowns and stock batches in Odoo?

    Odoo maps Tally godowns to warehouses and internal locations, and Tally batches to lot or serial numbers, but neither mapping is automatic. Multi-location and lot tracking must be switched on in Odoo before import, then closing stock is loaded as an inventory adjustment at the Tally closing value. Historic batch-wise movement is normally left behind, only opening quantity and value per lot are carried across.

    Does a new accounting system need an audit trail?

    Yes. Rule 3(1) of the Companies (Accounts) Rules 2014 requires every company to use software with an edit log that records each change and cannot be switched off. The statutory auditor reports on it under Rule 11(g) of the Companies (Audit and Auditors) Rules 2014, which sits outside CARO. Enable the log from the first day of use.