SlackTallyPrime Agent view

How to add Slack to TallyPrime

Short answer

Build a Slack app whose backend reads TallyPrime through its XML/HTTP port, posts alerts and interactive approval messages, and exposes slash commands for read-only lookups such as a party's outstanding. Tally is polled, since it emits no events.

Smaller product companies, agencies and trading businesses that run Tally often run the rest of the company on Slack. Sales asks 'has this customer paid?' in a channel, and someone with Tally open answers. That person becomes a bottleneck and the answer is stale a minute later.

A Slack app can turn those questions into a slash command and push the few alerts that matter. The constraint is Tally's design: it is a desktop application with a local data folder and an HTTP port that is only live while the application is open, so the Slack backend has to be a bridge that knows how to talk to it politely.

What teams use it for

Slash command for outstanding

A command like /tally outstanding Acme returns open bills, total and oldest age, so sales can answer a customer without asking accounts.

Invoice posted notifications

When a sales voucher is saved for a key account, post the invoice number and value to the account channel.

Low stock warnings

Check stock item closing balances against reorder levels and alert the purchase channel with item and godown.

Expense approvals

Post staff expense claims as interactive messages with Approve and Reject buttons before the payment voucher is made.

Month-end close checklist

Post a threaded checklist with counts of unreconciled bank entries and ledgers with suspense balances.

TallyPrime integration surface

  • Tally HTTP/XML server: enable on a port in the connectivity settings; requests are XML envelopes with a report or collection name and optional static variables such as the company and date range.
  • ODBC driver for ad hoc SELECT-style reads of ledgers, vouchers and stock items.
  • TDL collections to define a focused query, like open bills for one ledger, instead of exporting a whole report and filtering it in Python.
  • Import Data for creating vouchers or updating a status field after a Slack approval.
  • Scheduled exports (Excel or XML) dropped into a folder as a fallback where the HTTP port cannot be enabled.

How it works

  1. 1

    Pick a hosting spot

    Run the Slack backend on a machine that can reach the Tally host. If that machine is inside the office, use Socket Mode so Slack needs no inbound port.

  2. 2

    Create the Slack app

    Define slash commands, scopes for chat posting and a bot user, install it to the workspace, and restrict channels.

  3. 3

    Write query functions

    Each command maps to a fixed Tally XML request with strict parameter handling. Resolve fuzzy party names to the exact ledger name first.

  4. 4

    Add the poller for alerts

    A scheduled job compares current Tally data with stored state to find new vouchers or crossed thresholds.

  5. 5

    Implement interactivity

    Handle button actions, verify the Slack user against an allowlist of approvers and write the result back.

  6. 6

    Add observability

    Log every command with user and query and alert an ops channel if Tally does not respond.

Example flows

Sales asks about a customer balance

Trigger: A salesperson types a slash command in a channel

  1. Slack sends the command to the bridge, which verifies the signature.
  2. The bridge resolves the party to a Tally ledger.
  3. It requests the bills receivable for that ledger over XML.
  4. An ephemeral reply shows open bills visible only to the asker.

Result: Sales gets a current answer without an accountant and without seeing other parties' data.

Reorder alert with action

Trigger: Hourly stock check finds an item under the reorder level

  1. Bridge reads closing quantity and reorder level.
  2. A message lists the item with a Create PO draft button.
  3. The button records a request for the purchase team and does not post anything in Tally.

Result: Purchase sees the shortfall early and creates the order in their usual workflow.

Keeping data on-prem

Tally and the bridge stay on your own network. Using Slack Socket Mode, the bridge opens an outbound connection to Slack, so no inbound firewall hole is required, and Tally is never reachable from outside. What does cross to Slack is the text you choose to post, so keep sensitive figures in ephemeral replies and avoid posting full ledger statements. If you add natural-language questions, route them through a locally hosted open-weight model that selects among your fixed query functions, so ledger content is not sent to a hosted AI API.

Security checklist

  • Verify Slack request signatures and reject anything older than a few minutes.
  • Restrict commands by Slack user or user group, since the Tally port itself has no per-user permissions.
  • Use ephemeral messages for balances and avoid posting data in public channels.
  • Keep read and write paths separate: slash commands are read-only, approvals write through one audited function.
  • Rotate the bot token and store it in a secrets manager.

Ways to get it done

No-code automation platform

Effort: Hours to days; limited for live queries and approvals.

Simple alerts from scheduled Tally exports or spreadsheets.

Custom Slack app with XML bridge

Effort: Two to four weeks.

Teams with a developer who wants slash commands and approvals.

Partner build with Netray

Effort: Scoped per project; often a few weeks.

Several Tally companies, tight data residency, or private-model natural-language access.

Pitfalls

  • !Fuzzy party names in commands can return the wrong customer; require an exact match or a confirmation step.
  • !Tally's port serves one request at a time, so rate-limit commands to avoid freezing the accountant's screen.
  • !Public channel replies leak balances; default to ephemeral.
  • !Duplicate alerts appear if poller state is lost after a restart; persist state.
  • !Name drift between Slack aliases and Tally ledger names breaks lookups.

Frequently asked questions

Is there an official Slack integration for TallyPrime?

Not that we can point to as a standard product feature. Integration is usually done by a custom Slack app or a third-party connector that reads Tally via its XML or ODBC interface. Check any marketplace listing for how it accesses data and whether Tally must stay open.

Can Slack users see Tally data they should not?

They can if you let them. Tally's port has no user-level permissions, so the bridge must enforce who may run which command and which parties they may query. Use an allowlist and ephemeral replies.

Can I approve a payment from Slack?

Yes. An interactive message with Approve and Reject buttons can record a decision, and the bridge can update a status or create a voucher via Import Data. Many firms prefer that the final payment entry stays manual after approval.

Does Slack need to reach my Tally server?

No. With Socket Mode the bridge connects outward to Slack, and the bridge reaches Tally on the local network. Slack never connects to the Tally host directly.

Can an AI assistant in Slack answer questions about Tally?

It can, by choosing among predefined read-only queries and summarising results. For sensitive books, use a locally hosted open model rather than a public API, and log each question and the query it ran.

Want Slack working on your TallyPrime?

A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.

Get a free assessment