ml-connector
TallyPrimeAnaplan

TallyPrime and Anaplan integration

TallyPrime keeps the books for accounting, inventory, and tax. Anaplan runs the budgeting and forecasting models that need those actuals to stay accurate. Connecting the two pushes TallyPrime general ledger balances and posted vouchers into Anaplan planning modules so plan versus actual reporting reflects the real ledger, and pulls approved budget figures back from Anaplan into TallyPrime ledgers as reference data. ml-connector handles the very different access models on each side, the on-premise local agent in front of TallyPrime and the asynchronous bulk actions in Anaplan, and moves the data on the schedule you set.

How TallyPrime works

TallyPrime is a desktop application, not a cloud SaaS, so all access runs against a locally installed instance through its HTTP server on port 9000. Requests are XML or JSON envelopes posted to a single endpoint, where the TALLYREQUEST field selects Export Data to read or Import Data to write. All accounts are Ledgers grouped under Groups, and transactions are Vouchers such as Sales, Purchase, Payment, and Receipt, all dated in YYYYMMDD format. There is no transport-level authentication, no webhook system, and no native pagination, so changes are detected by polling the Day Book or a collection with a date range. The TallyPrime application must be running with the target company open for any call to succeed.

How Anaplan works

Anaplan is a cloud planning platform, not an ERP, so it has no native invoice, vendor, or GL account objects. Data lives inside a Workspace and Model hierarchy as Modules, Lists, and Line Items, and nearly every call needs a workspace_id in lowercase hex and a model_id in uppercase hex through the Integration API v2.0 at https://api.anaplan.com/2/0/. Bulk import and export run as named actions a model builder created in the model, executed as asynchronous tasks that return a taskId you poll until COMPLETE. Files upload in chunks before an import runs, and the model is locked while a task executes. Authentication uses an AnaplanAuthToken from basic or certificate login, valid for 35 minutes, or an OAuth2 grant, and Anaplan does not push events.

What moves between them

The main flow runs from TallyPrime into Anaplan. On the schedule you set, ml-connector exports general ledger balances and posted vouchers from TallyPrime over the local agent for the chosen period, formats them into the file an Anaplan import action expects, uploads the chunks, and runs that import so actuals land in the planning model. Ledger and Group masters move the same direction so the Anaplan accounts and cost center lists stay aligned with the TallyPrime chart. Approved budget or forecast figures can flow back from an Anaplan export action into TallyPrime as ledger reference data. Cadence is typically each night or each period close, since neither system pushes events.

How ml-connector handles it

ml-connector stores both credential sets encrypted and reaches TallyPrime only through the customer local agent, because port 9000 is never exposed to the cloud, posting XML or JSON envelopes with the company name in SVCURRENTCOMPANY and the date window in SVFROMDATE and SVTODATE. On the Anaplan side it logs in for an AnaplanAuthToken and reuses it within the 35 minute window rather than minting one per call, then runs the model builder's named import and export actions, polling each taskId until COMPLETE and downloading export chunks. Both systems are pull only, so it polls on a schedule rather than waiting for a push. TallyPrime Ledgers and Groups map to Anaplan Lists for accounts and cost centers so each posted value lands on a member that already exists. TallyPrime has no idempotency keys, so it tracks imported voucher numbers and uses Alter to update rather than re-import, while on Anaplan it serializes actions against a model because a running task locks it, and it backs off on the 600 request per minute limit when a call returns HTTP 429. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized distribution business with around 200 staff runs TallyPrime for accounting, inventory, and GST across three branches, and its finance team builds the annual budget and rolling forecast in Anaplan. Before the integration, an analyst exported a trial balance and voucher reports from each TallyPrime company at month end and pasted the actuals into Anaplan by hand, which delayed plan versus actual reporting by several days and introduced mapping errors when account names did not line up. With TallyPrime and Anaplan connected, ledger balances and vouchers load into the Anaplan actuals modules automatically each period, mapped to the right account and cost center lists, and approved budget figures flow back to TallyPrime. Variance reporting is ready on the first day of close instead of after a week of re-keying.

What you can do

  • Load TallyPrime general ledger balances and posted vouchers into Anaplan planning modules each period.
  • Keep Anaplan account and cost center lists aligned with TallyPrime Ledgers and Groups.
  • Return approved Anaplan budget and forecast figures to TallyPrime as ledger reference data.
  • Bridge the on-premise TallyPrime local agent and Anaplan token or OAuth2 authentication.
  • Poll both pull-only systems on your schedule, with retries and a full audit trail on every record.

Questions

Which direction does data move between TallyPrime and Anaplan?
The main flow is TallyPrime into Anaplan. General ledger balances, posted vouchers, and chart of accounts masters move from TallyPrime into Anaplan as planning actuals and list members. Approved budget or forecast figures can flow back from an Anaplan export action into TallyPrime ledgers as reference data.
Why does TallyPrime need a local agent?
TallyPrime is a desktop application whose HTTP server on port 9000 is only reachable on the same machine or LAN, with no cloud endpoint. ml-connector talks to a small local agent the customer runs next to TallyPrime, which forwards the XML or JSON envelopes to port 9000 and relays the responses. The TallyPrime application must be running with the target company open for any call to work.
How does the integration run Anaplan imports and exports?
Anaplan only runs named import and export actions a model builder has already created in the model, so ml-connector discovers those action IDs and runs them rather than writing cells directly. Each run is asynchronous, so it starts the action, polls the returned taskId until the task reports COMPLETE, and downloads file chunks for exports. Because a running task locks the model, it serializes actions against the same model and backs off when the 600 request per minute limit returns HTTP 429.

Related integrations

Connect TallyPrime and Anaplan

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started