Guide
Integrating with Tally without replacing it
Tally holds the books for a very large share of Indian businesses, and it is usually the system people most want to connect and least want to replace. Both of those instincts are right.
Who this is for: Owners and IT staff at businesses running Tally who need it to exchange data with a website, CRM, ERP, or reporting layer.
9 min read · Last reviewed 25 September 2026
Almost every integration conversation we have in Gujarat reaches Tally within ten minutes. It holds the ledgers, the stock, the outstanding, and often the only complete record of what the business actually did. It is also, quite reasonably, the system nobody wants to touch.
The good news is that replacing it is rarely the right answer, and rarely necessary. The useful question is not how to migrate off Tally but how to let it exchange data with everything else.
How Tally exposes its data
Tally is not a black box, but it is also not a modern API-first product, and the difference matters when planning.
The XML interface
Tally can act as an HTTP server and accept XML requests, returning XML in response. This is the main integration surface and it supports both reading and writing — you can pull ledgers, vouchers, stock items and outstanding, and you can post vouchers back. It is enabled in Tally's configuration rather than installed separately.
ODBC
Tally also exposes an ODBC interface, which suits reporting tools and ad-hoc querying. It is generally read-oriented and often simpler for getting data into a spreadsheet or a BI layer, at the cost of less control than the XML route.
TDL
Tally Definition Language is the customisation layer inside Tally itself, used to add fields, reports and behaviour. It is powerful and it is also where a lot of hard-to-maintain customisation accumulates over the years. Worth knowing what TDL customisation already exists in your installation before planning anything, because it frequently explains why your data does not look the way the documentation suggests.
Configuration details and capabilities differ between Tally.ERP 9 and Tally Prime, and across releases. Confirm against your own installation and version rather than against any guide, including this one.
The constraints that catch people out
These are the practical realities that separate an integration that works on a laptop from one that runs every day. None of them are obstacles exactly, but every one of them has to be designed around.
- Tally generally needs to be running, with the relevant company loaded, for the interface to respond. An integration that assumes an always-available endpoint will fail whenever someone closes the application or the machine restarts.
- It typically runs on a desktop or a server inside the office rather than in a data centre, which means power cuts, Windows updates and someone rebooting the machine are all part of your uptime model.
- Multi-user and single-user installations behave differently, and licensing affects what concurrent access is possible.
- The data model is Tally's, not yours. Concepts like ledgers, groups and voucher types have specific meanings that do not map one-to-one onto another system's schema, and pretending otherwise produces subtle wrongness rather than obvious errors.
- Company data is in Tally's own format. Reading the files directly is not a supported integration route and should not be part of a plan.
Patterns that work
Scheduled pull into a staging store
Rather than querying Tally live whenever another system needs something, pull on a schedule into a database you control, and let everything else read from there. This is the single most useful decision in most Tally integrations. It means a dashboard still loads when Tally is closed, other systems are not coupled to an office desktop's availability, and you can query the data in ways Tally was never intended to serve.
One direction wherever possible
Decide which system owns each piece of data and move it one way. Two-way synchronisation between Tally and anything else is where integrations go to die, because you inherit conflict resolution, and conflicts in accounting data are not the kind you want resolved automatically.
Write back through a queue, never directly from a form
Where vouchers do need to be posted into Tally, put a queue between the source and the write. Tally being unavailable then delays a posting instead of losing it, retries become possible, and you get a record of what was attempted. A web form that writes straight into Tally will eventually take an order it cannot record.
Reconcile, do not assume
Any integration that moves financial data should be able to answer, on demand, whether both sides agree. A daily count-and-total comparison catches silent drift early, and silent drift is the failure mode that costs the most to unwind.
What people usually actually want
Stated as an integration requirement, the request is usually to connect Tally to something. Underneath, it is nearly always one of a small number of jobs:
| The ask | What it usually is | Direction |
|---|---|---|
| Dashboards the owner can see from anywhere | Scheduled pull into a reporting store | Out of Tally |
| Stop double entry between the website and the books | Queued voucher posting | Into Tally |
| Outstanding and ageing without asking the accountant | Scheduled pull plus a simple interface | Out of Tally |
| Automatic payment reminders to customers | Scheduled pull plus messaging | Out of Tally |
| Stock visibility for the sales team | Scheduled pull, read-only | Out of Tally |
Most of these are read-only, and read-only integrations are dramatically simpler and safer than write-back. It is worth establishing which category you are in before scoping anything, because the two are not comparable pieces of work.
See it working
Our automation finder takes about a minute and produces a structured read on your own process — what it touches, where the effort goes, and whether it is worth automating at all. It is not a lead form with a progress bar; it will tell you when the answer is no.
Work out which one you areWhen Tally genuinely is the constraint
Sometimes the honest answer is that the business has outgrown it — typically around multi-location inventory, complex manufacturing costing, or many concurrent users needing role-based access. Those are real limits.
But the decision should follow from a specific thing Tally cannot do, not from a general feeling that the business should have something more modern. Migration costs are dominated by data history and retraining, neither of which appears in a software quotation, and a business that migrates to escape a process problem usually rebuilds the same problem at greater expense.
Common questions
- Does Tally have an API?
- Tally exposes an XML interface over HTTP that supports reading and writing, and an ODBC interface suited to reporting. It is not a REST API in the modern sense, and it generally requires Tally to be running with the relevant company open, but it is a genuine integration surface that supports most of what businesses actually need.
- Can data be written back into Tally automatically?
- Yes, vouchers can be posted programmatically through the XML interface. The important design decision is to put a queue between the source system and the write, so that Tally being closed or the machine restarting delays a posting rather than losing it.
- Do we need to be on Tally Prime rather than Tally.ERP 9?
- Both expose integration interfaces, though capabilities and configuration differ across versions and releases. The practical answer depends on your specific installation, including any TDL customisation already in place, which should be checked before scoping any integration work.
- Is it safe to read the Tally data files directly?
- No. The company data is in Tally's own format and direct file access is not a supported integration route. Anything built that way is liable to break on upgrade and risks the integrity of your books. Use the XML or ODBC interfaces.
Related guides
Three-way matching, and why it breaks in small manufacturing
Matching the purchase order to the goods receipt to the invoice is the oldest control in payables. It is also the one most small factories quietly abandon, and for understandable reasons.
Purchase invoice reconciliation against GSTR-2B
Every month, the purchases in your books and the invoices in your GSTR-2B fail to agree, and somebody spends days working out why. Most of that work is mechanical, and a specific part of it is not.
If this describes a process you recognise — we are a small company in Vadodara that builds exactly this kind of thing. No obligation and no sales sequence: get in touch or try the automation finder, which will tell you when the answer is not to automate.
+91 93131 52136 · hello@twishivplatforms.com

