Tally XML Format for Bank Statements — Voucher Structure Explained
— Technical reference

The Tally XML format for bank statements.

A Tally XML file is an ENVELOPE of VOUCHER entries. This is the structure Tally documents — the wrapper, the tags, the strict date format, and the errors that fail imports — with a working sample you can compare your files against.

The wrapper

The ENVELOPE structure

Every Tally XML payload is wrapped in an ENVELOPE with a HEADER and BODY. The header tells Tally this is an import; the body carries the vouchers:

<ENVELOPE>
  <HEADER>
    <VERSION>1</VERSION>
    <TALLYREQUEST>Import Data</TALLYREQUEST>
    <TYPE>Data</TYPE>
    <ID>Vouchers</ID>
  </HEADER>
  <BODY>
    <IMPORTDATA>
      <REQUESTDESC>
        <REPORTNAME>Vouchers</REPORTNAME>
      </REQUESTDESC>
      <REQUESTDATA>
        <TALLYMESSAGE>
          <!-- one or more <VOUCHER> entries go here -->
        </TALLYMESSAGE>
      </REQUESTDATA>
    </IMPORTDATA>
  </BODY>
</ENVELOPE>

The three tags that matter are TALLYREQUEST (set to Import Data), REPORTNAME (set to Vouchers), and the TALLYMESSAGE block that holds the transactions. A minimal header with just TALLYREQUEST imports cleanly too — the VERSION, TYPE and ID fields shown above are the full documented form.

The voucher

Inside a VOUCHER element

Each transaction is one VOUCHER element inside TALLYMESSAGE. For a bank statement, each row becomes a Payment (money out) or Receipt (money in) voucher:

<VOUCHER VCHTYPE="Payment">
  <DATE>20260317</DATE>
  <VOUCHERTYPENAME>Payment</VOUCHERTYPENAME>
  <PARTYLEDGERNAME>State Bank of India</PARTYLEDGERNAME>
  <ALLLEDGERENTRIES.LIST>
    <LEDGERNAME>State Bank of India</LEDGERNAME>
    <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
    <AMOUNT>-15000.00</AMOUNT>
  </ALLLEDGERENTRIES.LIST>
</VOUCHER>
  • VCHTYPE — the voucher kind: Payment, Receipt, Contra (or Sales, Journal…). A converter picks it per transaction: credit row = Payment, debit row = Receipt.
  • DATE — strictly YYYYMMDD with leading zeros.
  • PARTYLEDGERNAME — the bank ledger the voucher posts to (e.g. State Bank of India, grouped under Bank).
  • ALLLEDGERENTRIES.LIST — the double-entry legs: each leg names a LEDGERNAME, sets ISDEEMEDPOSITIVE to Yes/No, and carries an AMOUNT. Together, the flag, the voucher type and the amount's sign decide the debit/credit side — keep them in sync.
Batch imports

One envelope, many vouchers

A single TALLYMESSAGE can hold hundreds or thousands of VOUCHER entries — which is exactly how a statement converts: every transaction row becomes a voucher in one file. Import it via Gateway of Tally → Import Data → Vouchers (newer Tally Prime releases label the option Transactions), select the file, and Tally loads the batch.

Check the ledger mapping before you import

Every ledger named in the file must exist in the company first — create the bank ledger under the Bank group with the exact spelling, or Tally asks you to remap on-screen. The step-by-step import guide covers this end to end.

Troubleshooting

Three errors that fail imports

Invalid dates

Tally expects YYYYMMDD with leading zeros — 20240607, not 202467 or 07/06/2024. A single malformed date can stop the whole import.

Ledger not found

Every ledger named in the file must already exist in the company (grouped under Bank for bank ledgers). Missing masters are the most common import failure.

Encoding and escaping

Files should be UTF-8, and special characters in narrations or ledger names must be XML-escaped (& as &amp;). Tally writes a tally.imp log to help you trace failures.

The practical answer

You don't need to write this by hand

The format above is the reference, not the workflow. A converter builds the file for you: upload a bank statement PDF, review the extracted rows, and download a Tally-ready XML with every transaction as a voucher — correctly dated and ledgered. Hand-writing it is how dates get mangled and ledgers get missed.

Frequently asked questions

Convert your first statement — free.

30 free pages, no credit card. Upload a PDF and download Tally-ready XML in under a minute.

Get started free