Tally (TallyPrime) Integration Research

Date: 2026-05-14 Product: TallyPrime / Tally.ERP 9 (tallysolutions.com) — Tally Solutions Pvt. Ltd., Bangalore, India Current version: TallyPrime Release 6.0 (2025) — also TallyPrime Edit Log 6.0 Purpose: Evaluate whether Tally — the dominant SMB accounting/ERP software in India — has API capabilities that would let Orcha push processed AP invoices, sync reference data, and read back document status, before committing to integration work.


Important Context: What Tally Actually Is

Tally is on-premise desktop accounting software, not a cloud SaaS with a hosted API. This single fact dominates every part of this assessment and makes Tally structurally different from every cloud vendor Orcha has researched so far (Pleo, Qonto, Moss, Payhawk, Spendesk, etc.).

Cloud vendors (Pleo / Qonto / Moss / …) Tally (TallyPrime)
Deployment Vendor-hosted SaaS Customer installs .exe on a Windows PC / LAN server
API endpoint Vendor's internet domain (thirdparty.qonto.com) The customer's own machine — http://localhost:9000
Auth OAuth 2.0 / API keys issued by a developer portal None centrally — request just has to reach the Tally process; security is the customer's LAN + Tally's own user logins
Developer portal Yes No portal, no app registration, no token issuance
Reachability from Orcha's cloud Direct HTTPS call Not reachable by default — Tally listens on localhost only
Events / webhooks Common None

There is a "TallyPrime on Cloud" offering, but it is not a cloud API — it is the same desktop application running on a hosted Windows VM (Oracle Cloud Infrastructure, or AWS/Azure via partners), accessed over RDP. It does not change the integration model; it just moves the localhost.

Disambiguation — two unrelated products are both called "Tally":

Why Tally still matters despite the awkward architecture: Tally is the default books-of-account for a very large share of Indian SMBs and the mid-market. If Orcha wants to serve Indian customers (or the India operations of multi-national customers), "we integrate with Tally" is effectively table stakes — but it is an agent/connector integration, not an API integration, and should be scoped as such.


1. Summary — Capability Matrix

Capability Native XML/HTTP API Via unified API (RootFi/Commenda) Via India middleware Via file import Verdict
Read ledgers / chart of accounts / groups YES (Export) YES YES YES (XML/Excel) Available — but only if you can reach the Tally process
Read cost categories / cost centres YES (Export) Likely YES YES Available
Read suppliers (ledgers under Sundry Creditors) YES (Export) YES (contacts) YES YES Available
Read vouchers / Day Book (by date range or ID) YES (Export, SVFROMDATE/SVTODATE) YES YES YES Available — polling only
Write ledgers / groups YES (Import) YES (bi-directional) YES (POST plugins) YES (Import Masters) Available
Write cost categories / cost centres YES (Import) Likely YES YES Available
Write purchase vouchers / supplier invoices (with GST, HSN, inventory) YES (Import) YES (bi-directional) YES (POST plugins) YES (Import Vouchers) Available
Cost-centre allocation on a voucher YES (allocation tags inside the voucher XML) Likely Likely YES Available
Alter / cancel / delete an existing voucher YES (Import with ACTION attribute) Partial Partial YES Available
Attach the source invoice PDF to a voucher NO (not in the voucher data model) NO NO NO Not possible via API — third-party "Document Attachment" TDL add-on only
Trigger / manage approvals programmatically NO (no native approval API) NO NO NO Not possible — native = "Optional Vouchers"; real maker/checker is a TDL add-on
Receive status-change events (approved / posted / paid) NO — no webhooks anywhere in the product NO NO NO Not possible — must poll
Reach the Tally instance from Orcha's cloud at all NO by default — localhost listener YES (their connector agent solves it) Partly (their connector / hosted Tally) N/A (file drop) This is the gating problem

Overall assessment. Tally's data capabilities are genuinely good: it is fully bi-directional. You can read masters and vouchers, and you can write ledgers, cost centres and purchase vouchers (with GST/HSN/inventory detail) through a well-documented XML interface. For the core Orcha job — "create a coded purchase voucher in the customer's books from a processed invoice" — Tally can absolutely accept that write.

The problem is not capability, it is reachability and operational shape:

  1. Tally listens on localhost. Orcha's cloud cannot call it directly. Every real-world Tally integration solves this with an agent installed on the customer's Tally machine/LAN that bridges local Tally ↔ the vendor's cloud. Orcha would have to build, ship, and support such an agent — or rent one (see §5).
  2. No events. There are no webhooks. Document lifecycle (posted / approved / cancelled) can only be discovered by polling the Day Book.
  3. No PDF attachment, no approval API. Two of Orcha's six core integration needs simply are not in Tally's data model — they exist only as paid third-party TDL add-ons, which we cannot assume any given customer has installed.
  4. It's a desktop process. Throughput, uptime, and concurrency are bounded by the customer's PC being switched on, Tally being open, and the right company being loaded.

This is closest in shape to the SAP S/4HANA on-premise research already in this folder: a capable system whose integration cost is dominated by connectivity, not by the API.


2. API Landscape

2.1 Integration surfaces

Surface What it is Read Write
XML over HTTP The primary interface. Tally runs as a local HTTP server; you POST an XML <ENVELOPE> and get an XML response. YES YES
JSON over HTTP (via TDL) Newer. TallyPrime can receive/emit JSON, but the JSON handling is defined in TDL, not a fixed REST contract. YES YES
ODBC Tally can act as an ODBC server (and client). Mostly used for reporting/BI pulls. YES Limited
TDL (Tally Definition Language) Tally's native extension language. Lets you define new reports, modify vouchers/masters/UI, and drive HTTP/JSON exchange from inside Tally. Requires the separate TallyPrime Developer product to author. YES YES
DLL integration External DLLs callable from Tally for SQL Server / hardware / cloud bridges; data exchanged as XML/JSON. YES YES
File-based import/export XML (native) and Excel-derived XML files imported through Gateway of Tally → Import Data. YES YES

There is no central REST API, no OAuth, no developer portal, and no API keys. "Authentication" is simply whether your request can reach the Tally process, plus Tally's own internal user security on the loaded company.

2.2 How the HTTP interface is enabled

On the customer's TallyPrime: F12 (Configure) → Data Synchronization / Connectivity → set Tally as Server, default port 9000. The integrating app then POSTs to http://<tally-host>:9000 with Content-Type: text/xml. This is a built-in feature of every TallyPrime edition — no add-on licence required to switch it on.

2.3 XML envelope structure

<ENVELOPE>
  <HEADER>
    <VERSION>1</VERSION>
    <TALLYREQUEST>Import</TALLYREQUEST>   <!-- Import | Export | Execute -->
    <TYPE>Data</TYPE>
    <ID>All Masters</ID>                  <!-- or "Vouchers", or a report name -->
  </HEADER>
  <BODY>
    <DESC>
      <STATICVARIABLES>
        <SVCURRENTCOMPANY>Acme Pvt Ltd</SVCURRENTCOMPANY>
        <!-- for reads: <SVFROMDATE>, <SVTODATE> etc. -->
      </STATICVARIABLES>
    </DESC>
    <DATA>
      <TALLYMESSAGE>
        <!-- LEDGER / GROUP / COSTCENTRE / VOUCHER object goes here -->
      </TALLYMESSAGE>
    </DATA>
  </BODY>
</ENVELOPE>

2.4 Official tooling


3. Write Capability Verification

Write is confirmed and well documented. This is not an inferred capability — Tally's entire Import request type exists to write data in.

Writable masters: Groups, Ledgers, Cost Categories, Cost Centres, Stock Groups, Stock Items, Units of Measure, Godowns, Voucher Types, Currencies.

Writable transactions: all voucher types — Purchase, Sales, Payment, Receipt, Journal, Contra, Debit/Credit Note, etc. Vouchers can be created, altered, cancelled, and deleted (the operation is set via an ACTION attribute on the object). Purchase vouchers accept supplier invoice number, GST/tax detail, HSN codes, and inventory lines.

Constraints / gotchas:

Community corroboration: multiple independent toolkits write to Tally via this exact interface — the tally-integration Python package on PyPI, community repos (e.g. NoumaanAhamed/tally-prime-api-docs, aadil-sengupta/Tally.Py), and a large ecosystem of "Excel-to-Tally" converters. The write path is heavily exercised in the wild.


4. iPaaS & Middleware Discovery

4.1 Mainstream iPaaS — none

There is no Zapier, Make.com, Workato, Celigo, n8n, or Tray.io connector for TallyPrime the accounting software. Every "Tally" app on those marketplaces is the unrelated tally.so form builder (see disambiguation note above). This is expected — mainstream iPaaS connectors assume a reachable cloud endpoint, which Tally does not have.

4.2 Unified accounting APIs

Platform Tally support Notes
RootFi (now Commenda) YES — Tally Prime and Tally ERP9, advertised as bi-directional sync RootFi was acquired by Commenda (announced ~March 2025). RootFi solved the localhost problem with its own "Tally Connector" — a small agent the customer installs on the Tally desktop that runs minimised in the background and continuously syncs to RootFi's cloud; Orcha would then talk to RootFi's unified REST API. Commenda's site lists Tally among 50+ integrations and repeats the bi-directional/real-time claim. Brand and commercial terms are mid-transition — verify current product name, pricing, and whether the standalone RootFi API is still sold before relying on it.
Merge.dev NO Merge's accounting catalogue is cloud systems only (Xero, QBO, NetSuite, Sage Intacct, Zoho Books, Dynamics, …). No Tally.
Codat NO No Tally, and Codat has publicly wound down investment in accounting integrations.

RootFi/Commenda is the single most important finding in this section: it is a working existence proof that a cloud product can integrate with on-premise Tally bi-directionally, and it is the one path where Orcha would not have to build and maintain its own connector agent.

4.3 India-specific middleware & API-as-a-service

A whole cottage industry exists specifically to put an API in front of Tally:

Provider What it offers Indicative price
tallyprimeapi.com GET + POST API "plugins" for vouchers, masters, receipts/payments Subscription; not fully public
api2books.com GET + POST API plugins; submit JSON to a per-object POST URL ₹1,350 + GST for 3 GET modules, +₹450/module; very cheap
CData Commercial ODBC / JDBC / OData drivers + an "API Server" that exposes Tally as OData Per-seat/server licensing
AI Accountant / Talligence / TallyCloudHub etc. Connector agents installed on the Tally machine, syncing over HTTPS to a cloud Varies

These all use the same underlying XML/HTTP or ODBC interface — they are convenience wrappers, and they all still require something running next to Tally.

4.4 Competitive signal — Suvit / Vyapar TaxOne

Suvit (rebranded Vyapar TaxOne) is an Indian accounting-automation product that does almost exactly what Orcha does: it ingests invoices/bills/receipts/bank statements (photo or PDF), extracts the data with AI, creates vouchers, and pushes them straight into Tally — no manual entry. This is simultaneously (a) hard proof that Orcha's intended use case is technically achievable into Tally, and (b) a note that this space already has India-native incumbents.


5. Alternative Channels & The Connectivity Problem

Because Tally has no reachable cloud endpoint, "how do we reach it" is a first-class architecture decision, not a footnote.

Channel How it works Pros Cons
A. Orcha-built connector agent Orcha ships a small Windows service installed on the customer's Tally machine/LAN. It receives jobs from Orcha's cloud (poll or long-lived connection), translates to local XML/HTTP calls, returns results. Full control; real-time-ish; no third-party fees; this is the proven pattern (RootFi, Suvit, AI Accountant all do this) Orcha must build, code-sign, distribute, version, and support software on customer desktops — a new operational discipline
B. Rent a connector via unified API Use RootFi/Commenda: their agent sits on the customer's Tally box, Orcha calls their unified REST API. No agent to build/maintain; one API for Tally and other accounting systems later Third-party dependency + per-connection cost; brand/commercial uncertainty post-acquisition; less control over the data mapping
C. Hosted / cloud Tally If the customer already runs "TallyPrime on Cloud" or Tally on a partner-hosted AWS/Azure VM, a "virtual connection client" can bridge it. No desktop footprint if customer is already hosted Only works for the subset of customers on hosted Tally; still needs a bridge component
D. File-based exchange Orcha produces native Tally XML files; the customer (or a scheduled job) imports them via Import Data, and exports back out. Dead simple; no live connection; works even when Tally is firewalled Not real-time; manual or scripted on the customer side; no clean status read-back; clunky UX
SFTP No native Tally SFTP capability. Would just be a transport for option D.
Webhooks Do not exist in Tally. No outbound event mechanism of any kind. Status changes are discoverable only by polling the Day Book

Bottom line: options A and B are the only ones that give a product-grade experience. A is more work but more control; B trades money and a dependency for speed-to-market.


6. Licensing & Access Requirements

6.1 What the customer must already own

Item Cost (India list, 2025) Needed for integration?
TallyPrime Silver (single-user, one PC) ₹22,500 + 18% GST (~€250) one-time, perpetual Customer needs a TallyPrime licence — they almost certainly already have one
TallyPrime Gold (unlimited users on a LAN) ₹67,500 + 18% GST (~€750) one-time, perpetual Same — Gold if multi-user
TallyPrime Server (large deployments) ₹2,70,000 + 18% GST Only for big customers
TSS — Tally Software Services Annual subscription (renewal) Keeps the product updated (statutory/GST changes) and powers "connected" features. The local XML/HTTP/ODBC interface itself is part of the base product and works without active TSS — but a customer with lapsed TSS is on an outdated build. Verify there is no TSS gate on any connectivity feature the chosen design depends on.

Good news: the XML/HTTP API is included in every TallyPrime edition at no extra cost. There is no "API module" to buy, no API-user seat, no per-call metering from Tally itself. This is the opposite of vendors that gate API access behind an Enterprise tier.

6.2 What may cost extra

Item When it's needed Cost
TallyPrime Developer Only if Orcha goes the TDL route (custom reports/objects inside Tally) Separate paid product; pricing not public — sales contact required
Document Attachment TDL add-on If the customer wants the source invoice PDF linked to the voucher Third-party add-on (AAPL, Antraweb, LogicTech, …); per-site licence
Voucher Approval / Transaction Authorisation TDL add-on If the customer wants a real maker/checker workflow Third-party add-on; per-site licence
Unified API (RootFi/Commenda) If Orcha chooses channel B instead of building an agent Per-connection / platform fee — request current quote
India API middleware (api2books etc.) If used as a shortcut wrapper From ~₹1,350 + GST — negligible, but adds a dependency

6.3 What the customer's admin must do before Orcha can connect

  1. Install TallyPrime (already done in practice).
  2. In F12 → Configure, enable Tally as an HTTP server and confirm the port (default 9000).
  3. Ensure the right Company is loaded in Tally whenever a sync runs.
  4. Make the Tally machine reachable by the chosen channel — install Orcha's agent (A), install the unified-API agent (B), or set up the hosted bridge (C). This is the real work and is per-customer.
  5. Keep Tally running during sync windows (it's a desktop app — if the PC is off, integration is off).
  6. Optionally, configure Tally user security so the integration runs under a defined Tally user.
  7. Ensure required company features are enabled (e.g. Cost Centres, Inventory, GST) — masters/vouchers that use a disabled feature will be rejected on import.

6.4 Customer-facing setup checklist (for an Orcha onboarding doc)


7. Orcha-Specific Deep Dive

Orcha need Supported? How Confidence
Sync reference data inbound (read CoA / ledgers / cost centres / suppliers to validate against) YES Export request for List of Accounts / ledger / cost-centre / group masters; or export Sundry Creditors for suppliers High
Write reference data (create/update ledgers, groups, cost categories, cost centres) YES Import request with LEDGER / GROUP / COSTCATEGORY / COSTCENTRE objects in <TALLYMESSAGE> High
Write transactional data (push a coded purchase voucher / supplier invoice) YES Import request with a VOUCHER object, VCHTYPE="Purchase", ledger entries, GST/HSN, optional inventory lines, supplier invoice no. High
Cost-centre allocation on the voucher YES CATEGORYALLOCATIONS / cost-centre allocation tags nested inside the ledger entry of the voucher XML Medium-High (well attested; build against the API Explorer to confirm exact tags)
Alter / cancel a previously pushed voucher YES Import with ACTION="Alter" / ACTION="Cancel" / ACTION="Delete" and the voucher's REMOTEID or master-id Medium-High
Attach the source invoice PDF to the voucher NO Not in Tally's voucher data model. Only possible if the customer has installed a third-party "Document Attachment" TDL add-on — and even then it is not a standard API write. Orcha would keep the PDF on its own side and link out. High (that it's not natively possible)
Trigger / manage approvals NO No approval API. Native Tally offers only "Optional Vouchers" (a voucher saved as Optional doesn't hit the books until regularised — Orcha could push vouchers as Optional so a human regularises them in Tally). A real maker/checker workflow is a third-party TDL add-on. High
Read status / lifecycle (posted / approved / cancelled / paid) PARTIAL — polling only No webhooks. Re-Export the Day Book or specific vouchers by date range (SVFROMDATE/SVTODATE) or by id and diff against last known state. "Paid" is inferred by finding a linked Payment voucher against the supplier ledger. High

Orcha Integration Capability Summary

Need Verdict Channel
Read masters (validate coding) ✅ Available XML Export
Write masters (cost centres, ledgers) ✅ Available XML Import
Push coded purchase voucher ✅ Available XML Import
Cost-centre allocation on voucher ✅ Available XML Import
Attach source PDF ❌ Not possible via API — (keep PDF on Orcha side)
Approval workflow ❌ Not native Workaround: push as "Optional Voucher"
Status read-back ⚠️ Polling only XML Export of Day Book
Reach the Tally instance at all ⚠️ Requires a connector agent Build (A) or rent (B)

Net: four of Orcha's six core data needs are cleanly met; "attach PDF" and "approvals" are not, and "status" is poll-only. None of that is the hard part — the hard part is connectivity, which is a build-or-buy decision before any XML is written.


Architecture decision

Approach Cost Complexity Control Best when
Build an Orcha connector agent + native XML/HTTP Engineering only (no per-call fees) High — new discipline: desktop software lifecycle, code-signing, AV/firewall support, versioning Full Orcha commits to India/Tally as a strategic market and wants margin + control
Rent connectivity via RootFi/Commenda unified API Per-connection platform fee Medium — one REST API, they own the agent Partial Orcha wants speed-to-market and may add other accounting systems via the same API later
File-based exchange (Orcha emits Tally XML, customer imports) Low Low Low A pragmatic pilot / proof-of-value with one or two customers before investing
TDL custom build TallyPrime Developer licence + TDL expertise High + niche skill Full (inside Tally) Only if the integration must live inside Tally's UI — not Orcha's case
  1. Phase 0 — De-risk connectivity (decide build-vs-buy). Before any feature work, get a current quote and product status from Commenda (post-RootFi) for their Tally connector + unified API, and scope what an Orcha-built agent would cost to build and support. This decision gates everything else. Recommendation: start on RootFi/Commenda to validate demand, keep "build our own agent" as the scale play.
  2. Phase 1 — Reference data sync. Read the customer's ledgers, groups, cost categories and cost centres into Orcha so invoice coding validates against real master data. Build and test reads against the TallyPrime API Explorer first.
  3. Phase 2 — Push purchase vouchers. Write coded purchase vouchers (with GST/HSN and cost-centre allocations). Upsert any missing masters first. Decide the approval posture: push as a normal voucher, or push as an Optional Voucher for a human to regularise in Tally.
  4. Phase 3 — Status read-back. Poll the Day Book on a schedule; reconcile pushed vouchers (posted? altered? cancelled?) and infer "paid" from linked payment vouchers. Set customer expectations that this is near-real-time, not event-driven.
  5. Phase 4 — Decide on PDF/approvals. Accept that the source PDF stays on Orcha's side (link out, don't attach), unless a specific customer has a Document Attachment TDL add-on worth integrating with. Treat real approval workflow as out of scope for Tally.

Headline recommendation

Tally is integrable and the data model fits Orcha's AP use case well — but treat this as an on-premise connector project, not an API project. Budget the effort against connectivity (build or rent an agent), not against XML. The fastest credible route to a working Indian-market integration is RootFi/Commenda's unified API (subject to confirming its post-acquisition status); building Orcha's own connector agent is the higher-control, higher-cost alternative worth revisiting once Tally demand is proven.


9. Sources

Official Tally documentation

Community / developer

Unified API / middleware

Pricing & licensing

Competitive / ecosystem

Verification flags (could not be fully confirmed in this pass)