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-matchingpicks the existing Tally match for every row where a name coincidence exists. One click maps every blue row.POST /setup-wizard/discovery/create-all-missingcreates 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.
Further Reading
Reconciling Your Register With TallyVoucher count matching, ledger balance comparison, and phantom posting detection.
GST ITC Reversed — Vendor GSTIN IssuesWhen ITC claims fail because of vendor registration problems.
TDS Short Deduction NoticeWhy it happens and how embedding TDS in the PO workflow prevents it.
Assess How This Applies to Your Organisation
Share a brief overview of your setup and we will evaluate how our services may apply.