ml-connector
TallyPrimeZendesk

TallyPrime and Zendesk integration

TallyPrime runs accounting and inventory. Zendesk runs customer support. When they are connected, your support team can see a customer's financial history and recent transactions while handling their support request, without logging into TallyPrime separately. New customer organizations in TallyPrime flow into Zendesk with their account status and credit standing. Transaction records and voucher data appear as notes on related support tickets, providing the full business picture at the moment of customer contact.

How TallyPrime works

TallyPrime is a desktop-first accounting application that exposes ledgers, groups, vouchers (purchase, sales, payment, receipt, purchase order), and stock items through a local HTTP server on port 9000. All operations use XML request envelopes sent via POST, with a TALLYREQUEST field controlling whether the request reads (Export Data) or writes (Import Data). The server runs only on the local machine or LAN and is not enabled by default; customers must manually enable the HTTP server in Advanced Configuration. TallyPrime has no webhooks or native event subscriptions, so data is read by polling with date range filters on the Day Book or specific collections.

How Zendesk works

Zendesk is a cloud support platform that exposes tickets, users, organizations, and groups through a REST API with base URLs scoped to each customer's subdomain. It authenticates with OAuth 2.0 authorization code flow and supports both webhook event subscriptions (9 event categories including ticket created, updated, and solved events) and polling. Webhook signatures are verified with HMAC-SHA256 using the X-Zendesk-Webhook-Signature header. Zendesk has no native finance or ERP entities; invoices, purchase orders, GL accounts, and items do not exist as first-class objects, so all TallyPrime financial data must be mapped into ticket comments, custom fields, or organization fields.

What moves between them

The flow runs from TallyPrime into Zendesk. ml-connector polls TallyPrime's Ledger and Voucher collections on a regular schedule (typically every 15-30 minutes), extracting customer groups and sales transactions. For each customer in TallyPrime, it creates or updates a corresponding Zendesk organization with the customer name and account status. Sales and payment vouchers associated with each customer are transformed into Zendesk ticket comments or custom field updates, providing support agents with a transaction timeline without leaving Zendesk. Reference data such as customer groups and credit limits are synced as organization custom fields. TallyPrime is read-only, so no data flows back.

How ml-connector handles it

ml-connector runs a local agent on the same network as the TallyPrime instance to bridge HTTP calls to port 9000, since TallyPrime servers are LAN-only and not cloud-accessible. It sends XML Export Data requests with date range filters (SVFROMDATE, SVTODATE in YYYYMMDD format) to poll for new or changed records since the last sync run. Because TallyPrime returns all matching records in a single response with no pagination or stream offsets, ml-connector tracks the last-seen voucher ID and filters client-side. On the Zendesk side, it refreshes the OAuth 2.0 access token on each session and creates organizations matching TallyPrime customer groups, mapping the company name and account details into organization fields. Vouchers are inserted as timestamped comments on matching support tickets, linked by customer email or organization name. TallyPrime's lack of idempotency means duplicate Import Data calls would create duplicate vouchers, so ml-connector uses the Alter action for updates and never re-submits a successful export. Every voucher ID and ticket comment carries a full audit trail so failed records can be replayed.

A real-world example

A mid-sized wholesale distribution company in India uses TallyPrime for accounting and inventory across multiple warehouses and uses Zendesk for customer support. When a customer calls with a support issue, the agent needs to check recent orders, payments, and credit status from TallyPrime but currently has to alt-tab away from Zendesk or ask a finance team member over Slack. With TallyPrime and Zendesk connected, each support ticket displays the customer's latest invoices, payments, returns, and current credit balance as Zendesk organization data and ticket comments, so agents handle questions about delivery delays, pricing mismatches, or credit disputes with full context in one window. Month-end, the finance team can also verify that all high-value or disputed transactions were properly logged.

What you can do

  • Poll TallyPrime ledgers and sales vouchers on a schedule and create corresponding Zendesk organizations for each customer.
  • Display customer account status, credit limit, and account balance from TallyPrime directly on Zendesk organization records.
  • Transform TallyPrime purchase, sales, and payment vouchers into timestamped comments on Zendesk support tickets, linked by customer name or email.
  • Bridge TallyPrime's local-only HTTP server through a network agent so cloud connectors can reach port 9000.
  • Retry failed voucher syncs with a full audit trail and support manual replay without duplicating records in either system.

Questions

Does the integration require a local agent to run near TallyPrime?
Yes. TallyPrime's HTTP server on port 9000 runs only on the local machine or LAN and is not cloud-accessible. ml-connector includes a lightweight agent that runs on the same network as the TallyPrime instance and bridges HTTP calls to port 9000, handling the XML request envelope formatting and response parsing.
Which direction does data flow between TallyPrime and Zendesk?
The flow is from TallyPrime into Zendesk only. Customer groups, ledgers, and vouchers are polled from TallyPrime and synced into Zendesk as organizations, custom fields, and ticket comments. TallyPrime is read-only; no data flows back from Zendesk to TallyPrime.
How does the integration handle TallyPrime's lack of webhooks or change streams?
ml-connector polls TallyPrime's Ledger and Voucher collections on a regular schedule (typically every 15-30 minutes) with date range filters and compares returned IDs against the last-seen state to detect new or changed records. Because TallyPrime returns all records in a single response with no pagination, client-side filtering tracks which vouchers have already been synced to Zendesk.

Related integrations

Connect TallyPrime and Zendesk

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

Get started