Turn a bank statement into a Tally-importable XML voucher file — every transaction becomes a balanced Receipt or Payment voucher, ready for Gateway of Tally → Import Data. Free, no signup, and nothing is uploaded: parsing happens in your browser.
Tally ERP 9 and TallyPrime don't import a spreadsheet — Gateway of Tally → Import Data reads a specific
XML envelope: an <ENVELOPE> with a <HEADER> declaring
Import Data, and a <BODY> whose <REQUESTDATA> holds one
<TALLYMESSAGE> per voucher. Each message wraps a <VOUCHER> with a date,
a voucher type, a narration, and — the part a generic export can't produce — two
<ALLLEDGERENTRIES.LIST> blocks that must balance to zero. This page builds that exact
structure from your statement, one voucher per transaction.
An Excel or CSV export gives Tally one flat row per transaction: a date, an amount, a description. Tally has nowhere to put that — it has no "row" concept, only vouchers made of ledger entries, and it needs to know which ledger is debited and which is credited for every single transaction. Copy-pasting statement rows into a spreadsheet template doesn't create that double entry either; it just moves the same flat data into a different grid. The only way in is the XML voucher format, built correctly, transaction by transaction.
Every transaction becomes one of two voucher types: money coming into the account is a Receipt,
money going out is a Payment. Each voucher carries exactly two ledger entries — your bank
ledger and a counter ledger — and Tally's own sign convention is easy to get backwards: a debit entry carries
<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE> with a negative amount, a
credit entry carries No with a positive amount, and the two always sum to
exactly 0.00. Get that backwards by hand and Tally either rejects the file or posts it inverted; this tool
applies it consistently on every voucher.
Tally's XML import will not create ledger masters for you — it posts into ledgers that already exist, matched by exact name. By default this file uses Bank Account for the bank side and Suspense A/c for the counter side of every voucher, because a bank statement alone doesn't say which real expense or income ledger a transaction belongs to. Create ledgers with those exact names in Tally before importing (or rename them in Tally afterward), then reclassify each voucher out of Suspense A/c into your real chart of accounts once it's inside Tally, where you can see your actual ledger list.
No — Tally's own import only reads its XML voucher format, not a spreadsheet. A plain Excel
or CSV export has one flat row per transaction with no double entry and no voucher type, so Tally's Gateway
of Tally → Import Data screen has nothing it recognizes as a voucher. This page produces the actual
<ENVELOPE> XML structure Tally expects, with a balanced Receipt or Payment voucher for
every transaction.
Tally's XML import does not create ledger masters on the fly — both ledger names used in each voucher, your bank ledger and the counter ledger, must already exist in the company you're importing into, spelled exactly the same way. This file uses "Bank Account" and "Suspense A/c" by default; either create ledgers with those exact names in Tally first (Gateway of Tally → Create → Ledger), or open the XML in a text editor and replace those two names with your real ledger names before importing.
A bank statement only tells you money moved and a description — it does not tell you which of your chart-of-accounts ledgers it belongs to, and guessing that automatically would risk silently misclassifying entries, which we won't do. Suspense A/c is a safe, honest default: everything imports and balances correctly, then you re-classify each voucher inside Tally, where you can see your actual ledger list.