TallyPrime and ADP integration
TallyPrime runs accounting, inventory, and payroll for businesses in India and Southeast Asia. ADP handles payroll processing and worker records across your company. Connecting the two keeps your general ledger in agreement with your payroll costs and headcount. After each payroll run, ADP generates labor cost GL documents that post into TallyPrime's general ledger allocated to the correct cost centers, and worker records keep both systems aligned without re-keying.
What moves between them
The main flow is from ADP into TallyPrime. After each payroll run, ml-connector reads ADP's general ledger documents and worker records and polls TallyPrime's day book on a schedule tied to your payroll calendar. Labor cost GL documents from ADP are mapped to TallyPrime ledgers and cost centers, then posted as vouchers into TallyPrime's general ledger. Worker changes (hires, terminations) in ADP update corresponding records in TallyPrime so headcount is synchronized. Reference data such as cost centers and departments are aligned in both directions so payroll allocations land on valid TallyPrime dimensions. No financial data flows back from TallyPrime to ADP, since ADP GL documents are read-only.
How ml-connector handles it
ml-connector stores ADP client credentials and mTLS certificate encrypted and presents the certificate on every HTTPS request, refreshing the OAuth2 bearer token when calls return 401. For TallyPrime, it requires the target host IP and port (default 9000), company name, and optional credentials; all TallyPrime calls are sequential to avoid inconsistent behavior on the single-user desktop application. Polling intervals are tied to your payroll schedule rather than fixed frequency. On the TallyPrime side, ml-connector polls day books with date range filters (SVFROMDATE, SVTODATE in YYYYMMDD format) and compares returned voucher IDs against last-seen state to detect new records; because TallyPrime returns all matching records in a single response with no pagination, the connector tracks state between polls. ADP rate limits return HTTP 429 per-node, so ml-connector backs off and retries with exponential jitter. Cost centers are validated before posting to TallyPrime. Every voucher and GL posting carries an audit trail and can be replayed if a downstream call fails. TallyPrime has no native idempotency, so ml-connector uses Alter actions for updates and avoids duplicate Import requests.
A real-world example
A mid-sized services firm runs TallyPrime for accounting and inventory across two offices in India, and uses ADP Workforce Now for payroll across both locations. Before the integration, the accountant exported payroll registers from ADP monthly, manually calculated labor cost allocations by cost center, and entered them as journal vouchers in TallyPrime, a process taking 3-4 days each month-end and prone to posting errors. After payroll processing, the worker headcount in TallyPrime often drifted from ADP due to delayed hires and terminations. With TallyPrime and ADP connected, payroll GL documents flow automatically into TallyPrime immediately after each pay run, allocated to the correct cost center for each office, and worker changes sync in both directions. Month-end close is compressed to hours, and the labor accounts reconcile without manual intervention.
What you can do
- Post ADP payroll general ledger documents into TallyPrime's general ledger after every pay run, mapped to the correct cost centers and ledger accounts.
- Keep TallyPrime worker records and headcount synchronized with ADP hires, terminations, and rehires in real time.
- Map ADP cost centers and departments to TallyPrime groups and ledger dimensions so payroll allocations land on valid accounts.
- Authenticate ADP with OAuth2 and the required mutual TLS client certificate, and access TallyPrime through its local HTTP server with company and optional user credentials.
- Poll TallyPrime day books and ADP GL documents on a payroll-calendar schedule, with retries on rate limits and a full audit trail on every voucher.
Questions
- How does ml-connector reach TallyPrime if it is a desktop application?
- TallyPrime runs a local HTTP server on port 9000 that must be manually enabled in TallyPrime Settings. ml-connector requires a local agent running on the same machine or local network as TallyPrime to bridge the gap between the cloud connector and the LAN-only server. The agent makes XML or JSON POST requests to http://<tally-host-ip>:9000 with the company name and optional credentials.
- Why does ADP require a mutual TLS certificate and how does it affect the integration?
- ADP requires a client certificate at the TLS layer on every connection in addition to OAuth2 credentials for authentication. ml-connector stores the certificate encrypted and presents it on each request. Because certificates have expiry dates, ml-connector tracks the certificate's remaining validity and alerts when renewal is needed to prevent outages.
- How does ml-connector handle TallyPrime's lack of webhooks and pagination?
- TallyPrime has no webhooks or event subscriptions, so ml-connector polls day books on a schedule tied to your payroll calendar using date range filters. TallyPrime returns all matching records in a single response without pagination, so ml-connector compares returned voucher IDs against the last-seen state to identify new records and avoid duplicates.
Related integrations
More TallyPrime integrations
Other systems that connect to ADP
Connect TallyPrime and ADP
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started