Tally XML · TallyPrime and Tally.ERP 9 · nothing uploaded
Bank statement to Tally XML converter
Drop a PDF bank statement and download a Tally XML file that creates a Payment or Receipt voucher for every row, between your bank ledger and a second ledger of your choice. Nothing is uploaded.
Exports to Excel · CSV · QBO · OFX · QFX · Xero · Tally
How it works
Three steps. No upload.
The whole conversion runs in your browser tab, so your statement never reaches a server.
- 01
Drop the PDF
An Indian bank statement with ₹ amounts and day-first dates works, and so does any other text PDF.
- 02
Name your ledgers
Type the bank ledger as it exists in Tally, an optional company name, and the other ledger to post each row against.
- 03
Import in Tally
Use Import, Vouchers in Tally and pick the XML. Reclassify the second ledger’s rows afterwards.
The balance check
Check the statement, then post the vouchers
Once a voucher is in Tally it is an accounting entry, and deleting a month of them is tedious. So the statement is checked first. Every row is added up and compared with the opening and closing balances printed on it.
This example is in rupees with lakh grouping, the way many Indian statements print numbers. Amounts like 1,25,430.50 are read correctly, and balances marked Cr or Dr are understood. If the check says Off by an amount, fix the row on the review screen before you export.
example-bank-in_2026-09.pdf
- Opening balance
- 1,25,430.50
- + Credits
- 3,25,000.00
- − Debits
- 38,776.50
- = We calculated
- 4,11,654.00
- Statement says
- 4,11,654.00
If the last row had been missed:
Off by 118.00 possible missed line on page 2
The file
One voucher per row
This is a real export of a made-up statement. Money out becomes a Payment voucher, money in a Receipt. Each voucher has two ledger entries of equal size, one on the bank ledger and one on the other ledger.
Each row becomes one voucher
| Statement row | Voucher type | Other ledger side | Bank ledger side |
|---|---|---|---|
| Money out | Payment | Debited | Credited |
| Money in | Receipt | Credited | Debited |
A deposit, as a Receipt voucher
<TALLYMESSAGE xmlns:UDF="TallyUDF">
<VOUCHER VCHTYPE="Receipt" ACTION="Create">
<DATE>20260902</DATE>
<VOUCHERTYPENAME>Receipt</VOUCHERTYPENAME>
<NARRATION>Salary credit</NARRATION>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Bank Account</LEDGERNAME>
<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
<AMOUNT>-85000.00</AMOUNT>
</ALLLEDGERENTRIES.LIST>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Suspense A/c</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>85000.00</AMOUNT>
</ALLLEDGERENTRIES.LIST>
</VOUCHER>
</TALLYMESSAGE>A withdrawal, as a Payment voucher
<TALLYMESSAGE xmlns:UDF="TallyUDF">
<VOUCHER VCHTYPE="Payment" ACTION="Create">
<DATE>20260903</DATE>
<VOUCHERTYPENAME>Payment</VOUCHERTYPENAME>
<NARRATION>Rent Sharma Estates</NARRATION>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Suspense A/c</LEDGERNAME>
<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
<AMOUNT>-32500.00</AMOUNT>
</ALLLEDGERENTRIES.LIST>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Bank Account</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>32500.00</AMOUNT>
</ALLLEDGERENTRIES.LIST>
</VOUCHER>
</TALLYMESSAGE>- Bank ledger
- Defaults to “Bank Account”. It must already exist in your company in Tally.
- Other ledger
- Defaults to “Suspense A/c”, so every row has somewhere to land. Reclassify the entries in Tally afterwards.
- Dates
- Written as yyyymmdd, the way Tally reads them.
- Narration
- The description from the statement.
- Company
- Optional. If you type the company name, the file asks Tally to import into that company.
Import
Import into Tally
TallyPrime
- 1.Create the bank ledger and the other ledger in your company first, with the same names you typed here.
- 2.Choose Import, then Vouchers.
- 3.Pick the XML file and let it run.
- 4.Open Day Book to check the vouchers, then reclassify the rows posted to the other ledger.
Tally.ERP 9
- 1.The menu is under Gateway of Tally, Import of Data, Vouchers.
- 2.The ledger rules are the same: both ledgers must already exist.
FAQ