ml-connector
TallyPrimeJira

TallyPrime and Jira integration

TallyPrime runs accounting and inventory for small to mid-sized businesses, especially in India and Southeast Asia. Jira tracks tasks, bugs, and projects across teams. Connecting the two lets procurement teams track purchase orders and inventory movements as Jira issues without manual updates. When a purchase voucher is entered in TallyPrime, a corresponding Jira issue is created; when stock items are received, the Jira worklog records the received quantity. Your procurement and finance records stay synchronized.

How TallyPrime works

TallyPrime exposes ledgers, groups, vouchers (purchase, sales, payment, receipt, and purchase orders), and stock items through an HTTP POST endpoint on port 9000 running on a locally-installed instance. The API uses XML request envelopes with Import Data for writes and Export Data for reads, with date range filters and collection-based queries. Authentication is optional at the transport layer; instead, network security via firewall or VPN is expected, though company access can be protected with username and password in the request. TallyPrime has no webhooks or event stream, so ml-connector polls the Day Book at intervals between 5 and 15 minutes to detect new vouchers and stock movements.

How Jira works

Jira exposes projects, issues, worklog entries, and issue links through a REST API with JSON request and response. Authentication uses OAuth 2.0 (recommended via 3-legged authorization code flow) or Basic auth with email and API token. Jira offers webhooks for issue creation, update, deletion, and comment events, registered via the REST API and valid for 30 days before expiry and refresh are required. Jira's issue descriptions use Atlassian Document Format (ADF), and custom field IDs are unique per instance. Jira has no native financial entities like invoices, purchase orders, or GL accounts, so the integration models procurement and inventory as issues, comments, and worklogs.

What moves between them

The main flow runs from TallyPrime into Jira. ml-connector polls TallyPrime's Day Book every 10 minutes for new purchase vouchers and stock item movements within a date range. Each new purchase voucher creates a Jira issue in a designated procurement project, with the vendor name, amount, and due date mapped to issue custom fields. When a stock item receipt voucher appears in Tally, ml-connector adds a Jira worklog entry to the corresponding item issue, recording the received quantity. Reference data such as vendor names and stock item descriptions are read from TallyPrime and normalized into Jira issue titles and descriptions. The flow is read-only from Jira back to TallyPrime; Jira does not write to TallyPrime.

How ml-connector handles it

ml-connector requires a local agent running on the same machine or LAN as TallyPrime to bridge the cloud connector to port 9000, since Tally's HTTP server is not internet-accessible. The agent polls Tally by sending XML POST requests to the Export Data endpoint with date range filters (SVFROMDATE, SVTODATE in YYYYMMDD format), comparing returned voucher IDs against the last-seen state to detect new records. ml-connector stores the Tally host IP, port, and optional company password encrypted. For Jira, ml-connector uses OAuth to obtain and refresh an access token, and registers a webhook at creation to receive issue update notifications. Jira webhooks expire after 30 days, so ml-connector tracks the creation timestamp and refreshes before expiry by calling the refresh endpoint. When polling Tally, ml-connector converts each purchase voucher's currency amount to a custom numeric field in Jira, handles the company name case sensitivity required by Tally's SVCURRENTCOMPANY envelope field, and avoids re-polling the same date range by tracking the high-water mark. Stock movements are modeled as worklog entries with the received quantity and date. Because Tally is single-user and concurrent requests can cause inconsistent reads, ml-connector keeps export requests sequential and includes a small backoff between polls.

A real-world example

A mid-sized trading company in India uses TallyPrime for accounting and inventory management across multiple branches and vendors. The procurement team manually checked TallyPrime each morning to see which purchase orders had arrived, then created Jira tickets in their project management system to track receiving and quality checks, copying vendor names and amounts by hand. With TallyPrime and Jira connected, each new purchase voucher in Tally automatically creates a Jira issue with the vendor, invoice amount, and expected delivery date. When the goods are received, the stock movement in Tally triggers a worklog entry in the corresponding Jira issue, eliminating manual ticket updates and keeping procurement and finance in step.

What you can do

  • Poll TallyPrime's Day Book for new purchase vouchers and stock movements, creating corresponding Jira issues without manual entry.
  • Map vendor names, purchase amounts, and due dates from TallyPrime vouchers to Jira issue custom fields and description.
  • Record stock item receipts in TallyPrime as Jira worklog entries to track received quantities and dates.
  • Authenticate TallyPrime via optional username and password in the request envelope, and Jira via OAuth 2.0 or Basic auth.
  • Refresh Jira webhooks before 30-day expiry to maintain event stream continuity across the integration.

Questions

How does ml-connector reach TallyPrime if it runs on a local machine?
ml-connector requires a local agent running on the same network as TallyPrime, or on the TallyPrime machine itself. The agent acts as a bridge, accepting requests from ml-connector and forwarding them to TallyPrime's port 9000. This is necessary because TallyPrime's HTTP server is LAN-only and not exposed to the internet.
What happens when a purchase is entered in TallyPrime?
ml-connector polls TallyPrime's Day Book at regular intervals and detects the new purchase voucher. It extracts the vendor name, amount, and date, then creates a Jira issue in your procurement project with those details mapped to custom fields. You can then assign the issue to a team member for receiving and quality checks.
Does ml-connector sync data back from Jira to TallyPrime?
No, the integration is one-way from TallyPrime to Jira. Stock movements and purchase records flow from Tally into Jira as issues and worklogs, but changes made in Jira do not update TallyPrime. This prevents accidental overwrites of financial records while allowing the procurement team to manage tasks in Jira.

Related integrations

Connect TallyPrime and Jira

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

Get started