TopBankStatementConverter
Tally XML wraps bank transactions as VOUCHER entries inside an ENVELOPE Tally imports natively, payments for debits, receipts for credits, dates as YYYYMMDD. Free for 5 pages/month, no add-on needed.

Convert a Bank Statement PDF to Tally XML

Last verified May 23, 2026

Files deleted after conversion
256-bit SSL encryption
We never store your data

A bank statement converts to Tally XML by wrapping each transaction in the structured XML envelope Tally imports natively: an outer ENVELOPE, a TALLYMESSAGE for each entry, and a VOUCHER element typed as Payment for debits or Receipt for credits, with the date written as YYYYMMDD and the narration carried across. Upload the PDF above, confirm the preview, and download a ready-to-import .xml file. No third-party add-on, TDL, or Excel template is needed, Tally reads the file directly.

  • What the file is: a well-formed Tally XML document, ENVELOPE > BODY > IMPORTDATA > TALLYMESSAGE > VOUCHER, that Tally Prime and ERP 9 import without any add-on.
  • Voucher mapping: debits are written as Payment vouchers, credits as Receipt vouchers, each posted against your bank ledger.
  • Date handling: statement dates are converted to the YYYYMMDD format Tally's XML requires, so vouchers are not rejected on import. .
  • Encoding: UTF-8 output, so UPI, NEFT and regional-language narrations survive intact.
  • Cost: 5 pages a month free with no signup, then credit packs.

What is inside a Tally XML voucher file

Tally XML is not a spreadsheet with an .xml extension, it is a specific request document Tally's import engine understands. Each transaction becomes a VOUCHER node, and each voucher carries its own ledger entries so the import posts as real accounting, not raw rows.

XML elementWhat it holdsFilled from your statement
ENVELOPE / HEADERImport request wrapper and actionSet to import vouchers
VOUCHER (VCHTYPE)Voucher type, Payment or ReceiptDebit column to Payment, credit column to Receipt
DATE / EFFECTIVEDATEVoucher date in YYYYMMDDThe posting date, reformatted
NARRATIONFree-text descriptionThe full bank narration, verbatim
ALLLEDGERENTRIES.LISTThe two ledger legs and amountsBank ledger plus a holding ledger for the contra leg

Because each voucher is self-contained and typed, Tally validates and posts it the same way it would a voucher you keyed by hand. If a date or voucher type were malformed, Tally would reject the line, which is exactly why the converter normalises both before writing the file. The full import walkthrough lives in how to import bank statements into Tally.

Tally XML versus TDL, Excel templates, and ODBC

Tally XML is the most portable way to get transactions in because it needs nothing installed. The alternatives each carry friction that XML import avoids.

MethodWhat it requiresMain tradeoff
Tally XML importNothing extra, built into TallyThe file must be well-formed and use valid voucher types
TDL add-onA loaded TDL file / paid utilitySetup, licensing, and version compatibility per Tally release
Excel-to-Tally templateA macro-enabled workbook configured per formatManual column mapping; macros break across Excel and Tally versions
ODBC / APITally running with ODBC enabled, a connectorTechnical setup; not practical for a one-off statement

For a single statement or a monthly batch, XML import wins on simplicity: download the file, open the import dialog, done. If you would rather have plain rows to manipulate before posting, the Excel converter gives you a spreadsheet instead, and the main Tally converter covers the end-to-end voucher workflow including ledger mapping.

How the import dialog reads the file, step by step

It helps to know what Tally does with the file once you point the import dialog at it, because that explains why each formatting rule matters. Tally treats the XML as a request: it reads the action in the header, walks each TALLYMESSAGE in order, and tries to create the VOUCHER it finds inside.

For each voucher, Tally checks that the voucher type exists, that the date parses, and that the ledger entries balance and reference real ledgers. If all three hold, it posts the voucher; if any fail, that line is rejected and Tally reports it in the import log. This is why the converter is strict about three things up front, valid Payment and Receipt types, YYYYMMDD dates, and balanced legs, so the import log comes back clean instead of listing skipped lines. After import, Tally shows a count of vouchers added; that number should match the transaction count you saw in the preview, which is your fastest sanity check that nothing was dropped.

Because the file is processed top to bottom, the vouchers post in statement order, so your day book reads in the same sequence as the original statement. That ordering also means the running balance you reconcile against lines up date by date, making it easy to spot a single missing or duplicated entry.

Why the XML route beats retyping or copy-paste

The alternative to a structured XML file is either re-keying every voucher or pasting rows into a template, and both lose information the XML keeps. Retyping discards nothing technically but costs time and introduces errors; template paste is faster but flattens the data.

A spreadsheet template typically captures date, amount and a description, then relies on a macro to guess the voucher type and ledger. The XML file the converter builds instead encodes the voucher type explicitly per line, escapes the narration so special characters survive, and formats the date so Tally never rejects it. The result is that an XML import is reproducible: the same statement always produces the same vouchers, which matters when an auditor asks how a figure got into the books. If you do prefer a manual review pass, convert to a sheet with the CSV converter first, check it, then export Tally XML for the actual posting, you get the review step without giving up the clean import.

The file-level details that make an import succeed

  • Valid voucher types only. Tally rejects unknown VCHTYPE values. We emit the standard Payment and Receipt types so the import engine accepts every line. .
  • YYYYMMDD dates. Tally's XML date elements do not accept DD/MM/YYYY; we convert every date so vouchers post on the right day instead of erroring out.
  • Balanced ledger entries. Each voucher's debit and credit legs sum to zero, the bank ledger on one side, a holding ledger on the other, so Tally never reports an unbalanced voucher.
  • Well-formed and escaped. Special characters in narrations (&, <, quotes) are XML-escaped, so a stray ampersand in a UPI string does not break the whole file.

What breaks Tally XML imports in the wild

From building voucher files across hundreds of bank templates, the failures we see in hand-built or template-generated XML cluster around three issues, all of which the converter avoids:

  • Wrong date format. The single most common rejection: a DD-MM-YYYY date copied straight from the statement into the DATE element. Tally silently skips or errors on those lines. We reformat to YYYYMMDD before writing.
  • Unescaped narrations. UPI strings and merchant names often contain ampersands and angle brackets that make the XML invalid, so Tally refuses the entire file. We escape every reserved character.
  • Missing bank ledger. The file references a bank ledger that does not exist in the company, so the import has nowhere to post. We name the ledger clearly so you can create it first; see the note below.

One ledger has to exist before you import: the bank ledger named in the file. Create it under Bank Accounts in your company, then run the import and the vouchers post against it.

Handling several statements, banks or companies

The XML file is portable, which makes multi-account and multi-company work straightforward. One file imports into whichever company you open the import dialog from, so the same workflow scales from a single account to a full client roster.

If you keep more than one bank account, convert each statement separately and import each file against its matching bank ledger, keeping one file per account avoids mixing transactions and makes the per-account reconciliation clean. For a practice handling several companies, the routine is identical per company: open the company in Tally, import that company's statement file, reclassify. Because the converter names the bank ledger in the file, you can tell at a glance which account a file belongs to before importing it into the wrong books. Across HDFC, SBI, ICICI, Axis and Kotak the column layouts differ, but the converter detects each and still emits the same standard voucher structure, so your downstream import process never changes from one bank to the next.

For a busy close, convert the whole month for every account in a batch, then import them in sequence. Each import posts in statement order and reports its own voucher count, so you can verify each account independently rather than untangling one giant file. The walkthrough at how to import bank statements into Tally covers the dialog options that matter when you import file after file.

From statement to a clean import file in seconds

Upload the PDF above, confirm the preview reads your debits and credits correctly, choose Tally XML, and download a well-formed voucher file. Create the bank ledger in your company if it is not there yet, then import through Gateway of Tally and reclassify the holding-ledger legs to your real ledgers. The voucher count Tally reports after import should match the preview, which is your one-glance confirmation that nothing was dropped. For ongoing or multi-client work, credit packs keep the per-file cost low; the first five pages each month are free on the free converter.

Related converters & guides

Frequently asked questions

What does a Tally XML bank statement file contain?

It is a well-formed XML document with an ENVELOPE wrapping one VOUCHER element per transaction. Each voucher is typed as Payment (for debits) or Receipt (for credits), carries the date in YYYYMMDD format, the original narration, and two balanced ledger entries, your bank ledger and a holding ledger.

Do I need a TDL or add-on to import the XML?

No. Tally Prime and ERP 9 import voucher XML natively through Gateway of Tally > Import > Vouchers. No TDL file, paid utility, or Excel macro template is required.

Why does the date have to be in YYYYMMDD format?

Tally's XML date elements expect the YYYYMMDD form. A statement date left as DD/MM/YYYY is a common cause of rejected or skipped vouchers, so the converter reformats every date before writing the file.

Is the Tally XML converter free?

Yes, the first five pages every month are free with no signup. Larger statements and regular use are covered by affordable credit packs.

Will special characters in UPI narrations break the file?

No. Reserved XML characters such as ampersands and angle brackets in narrations are escaped, so a UPI string with an '&' will not invalidate the document. The narration is otherwise preserved verbatim.

Can I open and edit the XML before importing?

Yes, it is plain UTF-8 text you can open in any editor. If you would rather work with rows and columns, convert to Excel instead and post the vouchers manually in Tally.