ml-connector
TallyPrimeMicrosoft Dynamics 365 Sales

TallyPrime and Microsoft Dynamics 365 Sales integration

TallyPrime manages your accounting and inventory. Dynamics 365 Sales manages your pipeline and customer relationships. Connecting them keeps customer records, sales history, and invoice references in sync across both systems. Customer masters created in TallyPrime automatically populate as accounts in Dynamics 365 Sales, and sales orders posted in TallyPrime flow into Dynamics 365 Sales as orders, eliminating dual data entry. ml-connector handles TallyPrime's local HTTP server constraints and Dataverse authentication on every call.

How TallyPrime works

TallyPrime exposes ledgers, groups, vouchers (purchase, sales, payment, receipt, and purchase orders), and stock items through XML or JSON over HTTP POST to a local endpoint on port 9000. Authentication is handled by company name and optional username and password supplied in the request envelope. TallyPrime has no webhooks, so all data retrieval is by polling with date range filters. The application must be running and the target company open for API calls to succeed, and the HTTP server must be manually enabled in TallyPrime Settings.

How Microsoft Dynamics 365 Sales works

Microsoft Dynamics 365 Sales is a cloud CRM built on Microsoft Dataverse that exposes accounts, contacts, leads, opportunities, quotes, sales orders, invoices, products, and price levels through OData v4.0 REST. Authentication uses OAuth2 client credentials via Microsoft Entra ID. The platform supports both webhooks through the Dataverse Event Framework for real-time updates and polling. Webhooks support Create, Update, Delete, Assign, SetState, and other custom actions with a 60-second timeout and one automatic retry for transient failures.

What moves between them

Sales data flows bidirectionally. Customer masters (groups and ledger accounts) from TallyPrime poll regularly and sync into Dynamics 365 Sales as account records, keeping the customer list aligned. Sales vouchers from TallyPrime, including sales orders and invoices, poll on a schedule and create corresponding sales orders and invoice records in Dynamics 365 Sales. Opportunity and quote data created in Dynamics 365 Sales can flow back into TallyPrime as prospective ledger entries for tracking pipeline value in your books.

How ml-connector handles it

ml-connector runs a local agent that bridges to TallyPrime's port 9000 endpoint and polls using date range filters (SVFROMDATE, SVTODATE) on a schedule you define. It caches the last-seen TallyPrime record ID to avoid reprocessing the same vouchers. On the Dynamics 365 Sales side, it authenticates once per session using OAuth2 client credentials and refreshes the bearer token before expiry. Customer groups in TallyPrime map to account records in Dynamics 365 Sales by name, and sales vouchers map to sales orders and invoices. TallyPrime does not support concurrent requests and has no native idempotency, so ml-connector keeps requests sequential and tracks which records have already been posted to Dynamics 365 Sales. Rate limits are not a concern on the TallyPrime side since it is a local application, but the polling interval must be practical (5 to 15 minutes minimum) to avoid overwhelming the single-user desktop. Every record carries a full audit trail so failed syncs can be replayed once the issue is resolved.

A real-world example

A mid-sized distributor runs TallyPrime for accounting and inventory on a local server and uses Dynamics 365 Sales for customer pipeline management and quotes. Before the integration, the sales team manually entered customer records into Dynamics 365 Sales and re-entered invoice references after each month-end close, causing duplicates and lost audit trails. With TallyPrime and Dynamics 365 Sales connected, each new customer created in TallyPrime automatically appears in the sales app within the polling interval, and sales orders and invoices sync without manual data entry. The sales team now sees the full customer history and invoice reference in one place.

What you can do

  • Sync customer masters from TallyPrime ledgers and groups as account records in Dynamics 365 Sales, keeping the customer list aligned automatically.
  • Pull sales vouchers, sales orders, and invoices from TallyPrime and create matching sales order and invoice records in Dynamics 365 Sales on a polling schedule.
  • Map TallyPrime customer groups to Dynamics 365 Sales accounts by name so customer references remain consistent across both systems.
  • Authenticate TallyPrime with company credentials and optional username and password, and Dynamics 365 Sales with OAuth2 client credentials via Microsoft Entra ID.
  • Poll TallyPrime with date range filters to retrieve only new and modified records, with deduplication and a full audit trail on every sync.

Questions

Does TallyPrime have webhooks, or does ml-connector have to poll?
TallyPrime has no native webhooks or event subscription system. ml-connector polls using date range filters and caches the last-seen record ID to avoid reprocessing. The HTTP server must be manually enabled in TallyPrime Settings and is only accessible over the local network or via a VPN agent.
How does the integration handle TallyPrime's local HTTP server requirement?
ml-connector runs a local agent on the same machine or LAN as TallyPrime that bridges to port 9000. TallyPrime must be running and the target company must be open for API calls to succeed. The application is single-user, so ml-connector keeps requests sequential to avoid inconsistent behavior.
What customer data syncs between the two systems?
Customer masters from TallyPrime ledgers and groups sync into Dynamics 365 Sales as account records. Sales vouchers including sales orders and invoices poll from TallyPrime and create corresponding records in Dynamics 365 Sales. Opportunity and quote data created in Dynamics 365 Sales can flow back into TallyPrime as prospective ledger entries.

Related integrations

Connect TallyPrime and Microsoft Dynamics 365 Sales

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

Get started