Convert CSV to Tally XML

Stop typing vouchers by hand. Convert your bank CSV into Tally-ready XML with proper Payment, Receipt, and Contra voucher types — auto-mapped and balanced.

Built for Indian CAs, bookkeepers, and business owners using TallyPrime or Tally ERP 9. Free online tool.

Bank-grade security - Files encrypted in transit, never stored
Trouble converting a file? Tell us — we fix issues fast. Report it

How It Works

1

Upload Your Bank CSV

HDFC, SBI, ICICI, Axis, Kotak, or any bank. Any column layout — Date, Narration, Debit, Credit, Balance detected automatically.

2

Verify Ledger Mapping

Bank ledger and expense/income ledgers identified from your data. Confirm the mapping matches your Tally Chart of Accounts.

3

Download Tally XML

Properly structured XML with ENVELOPE > TALLYMESSAGE > VOUCHER tags. Import via Alt+O > Transactions in TallyPrime, or Gateway of Tally > Import Data > Vouchers in Tally ERP 9.

Works With Every Indian Bank Statement

Every bank exports CSV differently — different column names, date formats, and narration styles. Our tool adapts to each layout automatically.

HDFC BankState Bank of IndiaICICI BankAxis BankKotak MahindraBank of BarodaPunjab National BankCanara BankIndusInd BankYes BankIDFC FirstFederal BankUnion BankBank of IndiaIndian BankCentral Bank+ any bank worldwide
CSV

What is CSV?

Comma-Separated Values

The standard download format from Indian banks — HDFC, SBI, ICICI, Axis, and others. Each bank uses its own column names and date formats. Tally cannot create vouchers from raw CSV — the data must be converted to XML first.

XML

What is XML?

Tally XML Voucher Format

Tally's native import structure using ENVELOPE > BODY > IMPORTDATA > TALLYMESSAGE > VOUCHER tags. Each voucher contains ledger entries with YYYYMMDD dates, debit/credit amounts, narrations, and voucher type codes. The only format Tally accepts for bulk voucher creation.

Why This Tool

Auto Voucher Type Detection

Debits become Payment vouchers, credits become Receipt vouchers, bank-to-bank transfers become Contra vouchers. No manual classification needed.

YYYYMMDD Date Conversion

Indian banks export DD/MM/YYYY or DD-Mon-YYYY. Tally XML requires YYYYMMDD. We auto-detect and convert — the #1 cause of failed imports eliminated.

Ledger Name Matching

Validates that bank and expense/income ledger names follow Tally conventions. Flags mismatches before you import — not after.

XML Special Character Escaping

Narrations with &, <, >, or " are automatically escaped to valid XML entities. Raw special characters break Tally's XML parser silently.

Handles Any Bank CSV Format

HDFC's 7-column layout, SBI's transaction remarks, ICICI's merged debit/credit — auto-detected regardless of column names or order.

Duplicate Voucher ID Prevention

Each voucher gets a unique number. Duplicate IDs cause Tally to reject entire import batches — we generate sequential, non-repeating identifiers.

When to Use This

Monthly Client Bookkeeping

CAs and bookkeepers importing 10-15 client bank statements into Tally every month. Convert each CSV in seconds instead of typing vouchers manually.

GST Return Preparation

Bank transactions feed into GSTR-3B and reconciliation reports. Accurate voucher import ensures your GST filings match your bank records.

Year-End Bulk Entry

Importing 6-12 months of backlogged bank data during tax season. Hundreds of vouchers created from a single CSV upload.

Tally Voucher Types for Bank Imports

Each bank transaction maps to a specific Tally voucher type. Using the wrong type misclassifies your books and breaks reconciliation.

Payment Voucher (F5)

Money going out — vendor payments, rent, salary, utility bills, EMI debits. The bank account is credited, expense/liability ledger is debited.

CSV debit column → Payment voucher

Receipt Voucher (F6)

Money coming in — customer payments, interest income, refunds, NEFT/IMPS credits. The bank account is debited, income/asset ledger is credited.

CSV credit column → Receipt voucher

Contra Voucher (F4)

Bank-to-bank transfers, cash deposits, ATM withdrawals. Both sides are bank or cash ledgers — no P&L impact.

Transfer narrations → Contra voucher

Journal Voucher (F7)

Adjusting entries, provisions, accruals, and corrections that don't involve actual cash movement. Used for non-standard entries.

Manual classification when needed

How to Import XML Vouchers Into Tally

TallyPrime

  1. Open your company in TallyPrime
  2. Press Alt+O (Import) > Transactions
  3. In File Path, give the folder holding your downloaded .xml and select the file
  4. Press Enter to import
  5. If any vouchers are skipped, open the Exceptions report — it names the ledger or field at fault

Tally ERP 9

  1. Open your company in Tally ERP 9
  2. Go to Gateway of Tally > Import Data > Vouchers
  3. In Import File Name (XML), type the full path, e.g. C:\Users\You\Downloads\statement.xml
  4. Press Enter to import
  5. Any errors are listed in Tally.imp in the Tally ERP 9 folder

ERP 9 has no file browser here. Type just the file name only if you copied the .xml into the Tally ERP 9 installation folder — otherwise type the full path.

Common Tally XML Import Errors

"Ledger does not exist" — vouchers silently skipped

Every ledger name in the XML must match your Tally company's Chart of Accounts exactly — including spaces, capitalization, and group hierarchy. Create the bank ledger (e.g., "HDFC Bank A/C 12345") and all contra ledgers in Tally before importing.

Duplicate Voucher Numbers cause entire batch rejection

Tally rejects XML files containing duplicate voucher numbers. This happens when re-importing the same file or when the converter generates non-unique IDs. Our tool creates sequential, unique voucher numbers for every export.

Date errors — "Invalid Date" or transactions in wrong period

Tally XML requires YYYYMMDD format (e.g., 20260115 for Jan 15, 2026). Indian bank CSVs use DD/MM/YYYY or DD-Mon-YYYY. We auto-detect and convert. Also ensure the dates fall within your Tally company's financial year.

XML parse failure — special characters in narration field

Bank narrations often contain &, <, >, or " characters (e.g., "M/S ABC & Sons"). These are reserved XML characters that break the parser. We escape them to &amp;, &lt;, &gt;, &quot; automatically.

Vouchers imported but not appearing in Bank Reconciliation

Bank reconciliation in Tally only shows vouchers linked to the correct bank ledger. Verify the bank ledger name in the XML matches your Tally bank ledger exactly, and that the ledger is configured under "Bank Accounts" group.

Frequently Asked Questions

Q

Can TallyPrime import CSV files directly?

TallyPrime can import bank statements in CSV/Excel for reconciliation, but creating vouchers from raw CSV requires XML format. Our tool generates the exact XML structure Tally expects.

Q

Which Tally versions does the XML work with?

Tally ERP 9, TallyPrime, and TallyPrime 7.0. The XML voucher import format is consistent across all modern Tally versions.

Q

My import fails with "Ledger does not exist" — what do I do?

Every ledger a voucher posts to must exist in your Tally company. Names must match exactly, including spaces and capitalization. The file creates "Bank Account" and "Suspense (Imported)" itself, so only names you supplied need to exist already — a bank ledger name you typed, or ledger names from your own file. Create any missing one at Gateway of Tally > Create > Ledger. Tally skips a voucher whose ledger it cannot find and lists it, so nothing is posted to the wrong ledger.

Q

What is the "Suspense (Imported)" ledger in my Tally?

When a transaction does not say which ledger it belongs to — as on most bank statements — it is posted to "Suspense (Imported)". It sits under Tally's built-in Suspense A/c group, so it shows on your Balance Sheet and does not change your profit. After importing, open those vouchers and change the ledger to the right one (Rent, Sales, a party and so on). The file creates this ledger itself — and "Bank Account" too, unless you typed your own bank ledger name — so you do not need to create them first. If your file names a ledger for each row, those names are used instead. Cash withdrawals, cash deposits and transfers between your own accounts land here too — to move one to your Cash or other bank ledger, turn on F12 (Configure) > "Use Payment/Receipt as Contra" once, then select that ledger in the voucher.

Q

What voucher types does the XML contain?

Payment vouchers for money going out (expenses, vendor payments), Receipt vouchers for money coming in (income, customer receipts), and Contra vouchers for bank-to-cash or bank-to-bank transfers.

Q

My bank CSV uses DD/MM/YYYY dates but Tally XML needs YYYYMMDD — is that handled?

Yes. We auto-detect your CSV date format and convert to YYYYMMDD for the XML. This is the #1 cause of "Invalid Date" errors in Tally imports.

Q

Can I import vouchers for GST reconciliation?

Yes. Once vouchers are in Tally, they appear in bank reconciliation and feed into GSTR-3B and other GST returns. Accurate voucher import is critical for GST compliance.

Q

I have 10+ client bank statements to import monthly. Does this scale?

Yes. Upload each CSV separately and download the XML. Each file converts in seconds — no limit on conversions or transaction count.

Q

What if my CSV has narration text with special characters?

Ampersands (&), angle brackets (<>), and other XML-reserved characters in narrations are automatically escaped so they don't break the XML parser.

Q

Is my data secure?

Encrypted in transit via TLS, processed in memory, never stored. Your bank data is deleted immediately after conversion.