# How to add Microsoft Teams to TallyPrime

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

## Short answer

TallyPrime cannot push to Teams, so put a bridge service next to it that reads Tally through the XML/HTTP port, posts adaptive cards to a Teams channel or chat, and returns approvals as imported vouchers or flags. Entra ID handles who may approve.

## System

TallyPrime

## Capability

microsoft-teams

## Intro

Finance teams that run Tally and live in Microsoft 365 often end up emailing screenshots of Tally reports. Approvals for payments, credit notes or large purchases happen in chat threads with no link back to the voucher. Teams is a better home for approvals and alerts because it records who acted and when.

Tally has no webhooks or outbound event bus, so the integration is polling or schedule driven. That is acceptable for finance work, where five-minute latency rarely matters, but the design must handle the Tally application being closed, the wrong company being loaded, and the single-threaded nature of the XML port.

## Use Cases

### Payment approval cards

**Description:** Before the payment run, post each pending vendor payment to an approvers channel with amount, bill references and a button to approve or hold.

### Daily cash and bank position

**Description:** At 9:00 post balances of selected bank and cash ledgers to the finance channel from a Tally ledger query.

### Large voucher alerts

**Description:** Flag sales or purchase vouchers above a threshold or with a changed rate for a controller to review.

### GST filing reminders

**Description:** Post a checklist card ahead of GSTR deadlines showing unreconciled purchase entries and pending e-invoice or e-way bill items from Tally data.

### Ask-the-books bot

**Description:** A Teams bot answers 'receivable from customer X' by running a fixed, read-only Tally query and returning a summary card.

## System Surface

- XML over HTTP: Export Data requests return reports and collections, and Import Data creates or alters masters and vouchers, once the server is enabled on a chosen port.
- ODBC access to ledger, voucher and stock collections for read-only reporting queries from the bridge.
- TDL extensions to add a status field such as Approval Status on vouchers, so the card result can be stored inside Tally.
- Tally Edit Log, where enabled, to review who changed or altered vouchers after approval.
- Exports to Excel, PDF or XML as attachments for the Teams card when the report is too large for text.

## How It Works

### Decide the approval model

**Detail:** Write down which vouchers need approval, the thresholds and approvers, and where the status lives (a TDL field, a narration tag, or an external table).

### Register an app in Entra ID

**Detail:** Create an app registration, grant only the Graph or Bot Framework permissions needed, and map approver groups to Entra security groups.

### Create the Teams bot or incoming workflow

**Detail:** For alert-only use a workflow or webhook into a channel. For buttons that call back, use a bot with adaptive cards and a public HTTPS endpoint.

### Build the poller

**Detail:** On a schedule, request pending vouchers from Tally, compare with a local state store to avoid duplicates, and post cards.

### Handle the callback

**Detail:** On button press, verify the user's Entra identity, record the decision, and update Tally via Import Data or the status field.

### Monitor the Tally host

**Detail:** Post a health alert to an IT channel if the port stops answering so a closed application is noticed quickly.

## Example Flows

### Vendor payment approval

**Trigger:** Accounts clerk marks payments pending for the week

**Steps:**

- Poller reads payment vouchers with Approval Status pending.
- A card per vendor shows amount, bills and due dates.
- Approver clicks Approve; the bot checks group membership.
- Bridge updates the status and notifies the clerk.

**Result:** Approvals leave a Teams record and the clerk releases only approved payments.

### Morning finance digest

**Trigger:** Weekday 9:00 timer

**Steps:**

- Bridge queries bank ledgers, receivables aging and payables due.
- Totals are rendered as one adaptive card.
- The card links to a PDF export saved on a file share.

**Result:** The finance head sees position without opening Tally on each machine.

## On Prem

Tally stays on the office network; only the bridge has outbound access to Microsoft 365. If the bot callback needs a public endpoint, place a reverse proxy in a DMZ that forwards only the specific callback path to the bridge, and never publish the Tally port. For firms that want natural-language questions in Teams without sending ledger content to a public AI service, run an open-weight model locally to translate the question into one of a set of fixed, read-only Tally queries and to phrase the result.

## Security

- Authenticate approvers with Entra ID and check group membership on every callback, not only when posting the card.
- Keep the Tally port bound to the internal network; it has no built-in authentication.
- Post only the minimum figures to channels, and use private channels for payment data.
- Sign and validate bot messages and use a secrets vault for client secrets.
- Keep a separate log of decisions with user, time and voucher reference.

## Options

### Power Automate with a custom connector

**Fit:** Light alerting where a flow can call the bridge or a file drop and post to Teams.

**Effort:** Days; limits appear with two-way approvals and on-premises reach.

### Custom Teams bot on the XML port

**Fit:** Teams that want interactive approvals and have a developer on hand.

**Effort:** Three to five weeks including app registration and testing.

### Partner build with Netray

**Fit:** Approval policies across several companies, or a private-model assistant in Teams.

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

## Pitfalls

- The XML port answers only while Tally runs with the company loaded, so scheduled jobs fail quietly on a closed app.
- Two bots writing to the same voucher can overwrite each other; keep a single writer service.
- Adaptive card actions need a public HTTPS callback, which is a security review item for on-premises shops.
- Approvals recorded outside Tally can drift from the books unless status is synced back.

## Faq

### Can TallyPrime send alerts to Microsoft Teams directly?

**Answer:** No. Tally has no outbound webhooks. A small service polls Tally's XML or ODBC interface on a schedule and posts to Teams through a webhook, workflow or bot. That works well for finance alerts where a few minutes of delay is acceptable.

### How do approvals in Teams update Tally?

**Answer:** The bot records the decision and then writes it back with an Import Data XML request, often to a custom status field added through TDL, or to the voucher narration. Avoid editing posted amounts through the bot; limit it to status changes.

### Does this need Microsoft 365 licences for everyone?

**Answer:** Approvers and channel members need Teams access, which comes with most Microsoft 365 business plans. Tally users who do not use Teams are unaffected. Check your plan for bot and workflow limits before committing.

### Can the Teams bot answer questions about the books?

**Answer:** Yes, if it runs predefined read-only queries such as receivables by customer. Free-form questions need a language model to pick a query, which can run on a private open-weight model so ledger data is not sent to an external service.

### What if Tally is closed at night?

**Answer:** Scheduled checks will fail. Either leave the Tally host running with the company loaded, or have the bridge skip and raise a health alert. Do not queue large catch-up batches blindly when it comes back.

## Search terms

tally microsoft teams integration, microsoft teams for tallyprime, tally teams approval workflow, tally teams bot, tallyprime adaptive cards, tally payment approval teams, tally alerts microsoft teams, tally xml teams webhook

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