Tally Accounting
Integration

Automated voucher generation for 22 event types — posting, reversal, vendor, and asset entries

Tally integration is a master switch — off by default. The procurement and asset management workflows function fully without it. Setup is one screen, three phases — Discovery scans your EAM side and your Tally master in one read, presents a colour-coded reconciliation, and lets you map per row or in bulk. Tax Deducted at Source (TDS) tracking, GST Input Tax Credit (ITC) ledger separation, and HSN/SAC validation are each independent toggles within the integration.

The Challenge

Manual journal entries for every procurement transaction consume accounting staff time and introduce transcription errors that compound over the financial year.

The asset register and Tally's fixed asset ledger drift apart — different totals, missing entries, and no systematic way to reconcile without manual comparison.

Year-end reconciliation between operational records and books of account is painful, error-prone, and typically rushed under audit timelines.

How We Address This

Queue-Based Sync

Every accounting event enters a processing queue with states: PENDING, PROCESSING, POSTED, FAILED, SKIPPED. Failed entries can be retried or regenerated. A dead letter queue captures persistent failures for manual review.

22 Event Types

Covers PR posting and reversal, PO posting and reversal, GRN posting and reversal, SA posting and reversal, vendor approval, asset creation, VDN posting, and more. Each event type generates the correct Tally voucher structure.

Discovery Setup

Six mapping types connect EAM references to Tally ledgers, groups and cost centres. A single Discovery surface scans both sides, colour-codes the unmapped rows, and lets you Pick Existing, Create New, or Skip per row — with bulk variants for the obvious cases. Every decision writes an audit record.

GST & TDS

Automatic CGST/SGST/IGST split based on vendor and organisation GSTIN. TDS deduction per PO line with section-wise rates. ITC eligibility toggle. Reverse charge flag where applicable. All reflected correctly in generated vouchers.

Pre-Process Validation

Before sync, the system validates all entries against live Tally ledgers. Missing ledgers and unmapped values are reported with resolution steps — fix before sync, not after.

Reconciliation

Compare posted totals from the system against Tally actuals. Voucher counts, vendor ledger balances, and asset ledger balances are checked. Discrepancies are highlighted for investigation.

Discovery — Three-Phase Tally Setup

ProcureTrail's Tally integration is set up through Discovery, a single admin surface that maps every EAM reference (system configuration values, system ledger keys, asset and expense categories, departments) to a corresponding Tally ledger, group or cost centre. There are three phases, and the surface is the same throughout — only the buttons change.

Phase A — Scan

GET /setup-wizard/discovery mines the EAM side (system configuration keys, SystemLedgerMap rows, active asset and expense categories, department references), pulls the corresponding Tally master state (ledgers, groups, cost centres), and presents a single table. Each row carries a current state — unmapped, mapped, or orphan — and a flag indicating whether a name match was found on the Tally side. The scan is read-only: no writes to either EAM or Tally.

Phase B — Per-Row Decisions

Three buttons per row. Each writes an audit record:

  • Pick Existing — stores the chosen Tally name on the EAM mapping. No Tally write. Audit action TALLY_SETUP_PICK_EXISTING.
  • Create New — calls Tally to create the ledger, group or cost centre with the admin-confirmed name, then stores the mapping. Pre-flights Tally connectivity (503 if unreachable), 422 if Tally rejects (duplicate name, invalid parent group). Audit action TALLY_SETUP_CREATE_NEW.
  • Skip — records the decision with an explicit reason. Posting-flow validation still fires if the skipped object is later needed — Skip is not silent suppression. Audit action TALLY_SETUP_SKIP.

Phase C — Bulk Actions

Two bulk endpoints clear the most common buckets in one click:

  • POST /setup-wizard/discovery/pick-all-matching picks the existing Tally match for every row where a name coincidence exists. One click maps every blue row.
  • POST /setup-wizard/discovery/create-all-missing creates the missing Tally object for every red and orange row where no name match was found. Groups are excluded — they need an admin-specified parent. Per-row failures don't block subsequent rows.

Both bulk endpoints emit per-row audit records, so a five-second mass setup retains the same forensic trail as fifty manual clicks. Manual edit and soft-delete operations live in the same surface — there is now one Tally setup screen, not two.

Multi-Currency Vendor Ledgers

Foreign vendors get foreign-currency ledgers in Tally — automatically. Every vendor master record in ProcureTrail carries a billing currency code (whitelist: INR, USD, EUR, GBP, CNY, JPY, SGD, AED). When the vendor ledger is created in Tally:

  • The Tally ledger master carries <CURRENCYNAME> with the vendor's currency symbol.
  • Every transaction posting against that vendor — purchase voucher, vendor debit note journal — carries forex inline on each debit and credit line: <AMOUNT>5000.00 $ @ 85.0000/$ = 425000.00</AMOUNT>.

Tally then handles the forex math, settlement gain or loss on payment, and period-end revaluation natively using its built-in workflow. ProcureTrail sends source data only — there is no parallel rupee-conversion in EAM code that could drift from Tally's own forex math.

Customs duty journals and basic-recovery journals on imports do not currently emit inline forex (they post the equivalent rupee adjustment). For most organisations this is the desired behaviour — customs duty is settled in rupees with the customs authority — but foreign-currency journal vouchers are on the roadmap.

Reversals — Journal-Flipped, Not Optional

When a posted GRN, service acceptance, customs duty journal or basic-recovery journal needs to be reversed, ProcureTrail emits a reversal voucher with the original debits and credits swapped. The reversal is a Journal voucher with debit/credit flipped — not a Purchase voucher with ISOPTIONAL=Yes. The earlier optional-voucher approach has been retired because it hid reversed amounts from Tally's Outstandings report. It survives only for the PO_REJECTED forward case, where the PO never created an obligation and an Optional voucher is appropriate.

Each reversal carries:

  • The forward voucher number in bill_name — Tally's "Against Reference" field — pairing the reversal to the forward in the Outstandings report.
  • The reversal kind (data correction, or operational) in metadata, distinguishing routine reverses from corrections.
  • For foreign-currency vendors, the forex trio (foreign amount, exchange rate, currency name) preserved across the debit/credit swap so the reversal posts at the same rate as the original.

The reversal mechanism is the same for every voucher type.

Voucher Scope — Financial Only

PO vouchers post the financial portion only

ProcureTrail is the asset register; Tally is the accounting general ledger. PO XML emitted to Tally no longer carries inventory entries. PO lines mix asset, service and expense items (for example, "Office Cleaning Service") that do not fit Tally's stock-items model, and Tally was silently dropping the inventory portion on every post. Removing the dead XML closes a latent failure on Tally setups where "Allow stock items in vouchers" is disabled. Stock-module integration in Tally (unit-of-measure master, stock groups, HSN mapping) is a larger integration than the financial-only post and is not part of the current pipeline.

Asset master auto-create

When an asset of a new classification or category is posted to Tally for the first time, ProcureTrail ensures the corresponding parent group exists in Tally's group namespace before the asset ledger is created. The group is created idempotently — if it already exists, the call is a no-op. This closes a Tally-side namespace mismatch where the asset master XML references a sub-group that Discovery's ledger iteration would never have surfaced.

What Gets Posted to Tally

The 22 event types span the full procurement and asset management lifecycle. On the procurement side: purchase vouchers when a PO is approved, expense vouchers for service acceptances, vendor debit notes for rejected or overcharged goods, and reversal entries when documents are reversed. On the asset side: asset master creation when a GRN is posted, depreciation journal entries at year-end, and write-off or disposal entries when assets are removed from the register.

Every voucher includes the correct GST split (CGST/SGST/IGST based on vendor and organisation GSTIN), TDS deduction per line where applicable, and narration that traces back to the source document — so your accountant can find the PO or GRN behind any Tally entry.

Operational Features

Incremental Sync

Only processes new or changed documents since the last sync. No need to re-export the entire dataset. Reduces processing time and avoids duplicate entries.

Test Connection

Validate Tally server connectivity before initiating a sync. Confirms the Tally instance is reachable and the target company exists.

Verified Through Audit

The Tally integration module has been through 8 rounds of systematic audit with 197 automated tests covering all event types, edge cases, and error handling paths.

22
Event types
6
Mapping types
197
Automated tests
8
Audit rounds

Assess How This Applies to Your Organisation

Share a brief overview of your setup and we will evaluate how our services may apply.

Book a Consultation