# How to add Slack to TallyPrime

> Source: https://netray.co/integrations/tally-slack
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Integrations

## 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.

## System

TallyPrime

## Capability

slack

## Intro

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.

## Use Cases

### Slash command for outstanding

**Description:** 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

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

### Low stock warnings

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

### Expense approvals

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

### Month-end close checklist

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

## System 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

### Pick a hosting spot

**Detail:** 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.

### Create the Slack app

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

### Write query functions

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

### Add the poller for alerts

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

### Implement interactivity

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

### Add observability

**Detail:** 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

**Steps:**

- Slack sends the command to the bridge, which verifies the signature.
- The bridge resolves the party to a Tally ledger.
- It requests the bills receivable for that ledger over XML.
- 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

**Steps:**

- Bridge reads closing quantity and reorder level.
- A message lists the item with a Create PO draft button.
- 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.

## 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

- 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.

## Options

### No-code automation platform

**Fit:** Simple alerts from scheduled Tally exports or spreadsheets.

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

### Custom Slack app with XML bridge

**Fit:** Teams with a developer who wants slash commands and approvals.

**Effort:** Two to four weeks.

### Partner build with Netray

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

**Effort:** Scoped per project; often a few weeks.

## 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.

## Faq

### Is there an official Slack integration for TallyPrime?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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.

## Search terms

tally slack integration, slack for tallyprime, tally slack bot, tally slash command, tallyprime slack notifications, tally outstanding slack, tally xml slack, tally inventory slack alerts

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
