ml-connector
TallyPrimeCleo

TallyPrime and Cleo integration

TallyPrime keeps your accounting, inventory, and payroll in one place. Cleo moves your business transactions to trading partners and downstream systems via EDI and API. Connecting the two lets you push sales orders, purchase receipts, and invoice data from TallyPrime straight into your B2B and EDI network without manual export-and-re-entry. Your trading partners stay in sync with your TallyPrime source of truth.

How TallyPrime works

TallyPrime is a desktop accounting application installed locally, exposing ledgers, groups, vouchers (purchase, sales, payment, receipt, and purchase orders), and stock items through an HTTP API on port 9000. Communication uses XML or JSON POST requests to a single endpoint, with all operations controlled by the TALLYREQUEST envelope field (Export Data for reads, Import Data for writes). Port 9000 must be manually enabled in TallyPrime Settings, and the application server is LAN-accessible only, requiring a local agent. Authentication is optional at the transport layer and uses company name (required, case-sensitive), and optional username and password if the company is password-protected. TallyPrime supports polling only; there are no native webhooks or change streams, so integrations must periodically request Day Book or collection exports with date range filters and track seen state.

How Cleo works

Cleo Integration Cloud is a cloud-native REST API platform for B2B, EDI, and supply chain integration, accessed via https://YOURTENANT.cleointegration.com/api for cloud deployments. Authentication uses OAuth2 password grant to exchange credentials for a short-lived Bearer token. Cleo exposes folders, files, connections, users, actions, certificates, and audit events. EDI transactions and API payloads flow through Cleo as managed files, not as standalone native REST objects. Outbound webhooks are configured by tenant administrators through CIC Studio, not via a programmatic subscription API. Cleo also supports on-premise deployments using the same REST API with custom host and port.

What moves between them

The primary flow is TallyPrime into Cleo. ml-connector polls TallyPrime on a regular schedule for sales orders, purchase receipts, invoices (sales vouchers), and inventory transactions, then posts them into Cleo as files or API payloads for B2B and EDI distribution to trading partners and suppliers. Reference data such as ledger names, groups, and stock items can also be synchronized to keep downstream systems informed of TallyPrime master changes. The reverse direction, trading partner orders and receipts from Cleo into TallyPrime, is possible but less common; that flow would require a local agent to write incoming transactions back via TallyPrime's Import Data action.

How ml-connector handles it

ml-connector runs a local polling agent on the same LAN as TallyPrime, using company name and optional credentials to authenticate to the TallyPrime server on port 9000. It periodically POSTs Export Data requests with date range filters to retrieve new or updated vouchers and items since the last poll. Each record is transformed into Cleo's file or API format, then posted to Cleo via REST using OAuth2 Bearer token authentication. Tokens are refreshed automatically when requests return 401, and the integration retries failed posts with exponential backoff. Since TallyPrime is a single-user desktop application, requests must be sequential to avoid inconsistent behavior. The integration tracks which records have been sent to avoid duplicate submissions, and every transaction carries a complete audit trail including the source export timestamp, Cleo post confirmation, and any errors. TallyPrime dates must be formatted as YYYYMMDD in filter requests.

A real-world example

A mid-sized trading and distribution company in India uses TallyPrime for accounting, inventory, and GST compliance, and maintains a supplier and customer network across several regions. Before the integration, the accounting team exported sales orders and receipt vouchers from TallyPrime as email attachments or manual EDI files, then uploaded them into their Cleo integration platform for transmission to customers and freight forwarders. With TallyPrime and Cleo connected, each sales order or goods receipt voucher posted in TallyPrime automatically flows into Cleo for EDI transmission to the customer portal or the logistics provider without re-keying or file transfers, and incoming purchase orders from trading partners arriving through Cleo can be imported back into TallyPrime for processing.

What you can do

  • Poll TallyPrime for sales orders, purchase receipts, invoices, and stock items on a schedule you control, and post them into Cleo for B2B and EDI distribution.
  • Authenticate TallyPrime using company name and optional credentials, and handle Cleo OAuth2 token refresh automatically on each API call.
  • Run a local agent on your TallyPrime machine to bridge your desktop accounting application to Cleo's cloud REST API without exposing port 9000 to the internet.
  • Track which vouchers and inventory records have been sent to Cleo to prevent duplicate submissions, with a full audit trail on every transaction.
  • Transform TallyPrime accounting vouchers and master data into Cleo file or API format, and retry failed posts with backoff until they succeed or require manual investigation.

Questions

How does ml-connector reach TallyPrime if it is a local desktop application?
ml-connector runs a local agent on the same Windows machine or LAN as TallyPrime, which allows it to POST requests to TallyPrime's HTTP server on port 9000. Port 9000 must be manually enabled in TallyPrime Settings, and the agent uses the company name and optional credentials to authenticate. Since TallyPrime is single-user, the integration keeps requests sequential to avoid inconsistent behavior.
Which direction does data move between TallyPrime and Cleo?
The primary flow is TallyPrime into Cleo. Sales orders, purchase receipts, invoices, and stock items are polled from TallyPrime and posted into Cleo for distribution to trading partners via B2B and EDI networks. Reverse flow (trading partner orders from Cleo into TallyPrime) is possible using TallyPrime's Import Data action, but requires the local agent to post vouchers back to the desktop application.
Does the integration handle TallyPrime's lack of native webhooks and Cleo's webhook setup requirements?
Yes. Since TallyPrime has no webhooks, ml-connector polls on a regular schedule you define, checking for new or updated vouchers and items using date range filters. Cleo's outbound webhooks are configured by your Cleo tenant administrator through CIC Studio; ml-connector does not require programmatic webhook setup on the Cleo side, only standard REST API access.

Related integrations

Connect TallyPrime and Cleo

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

Get started