Typing a bank statement into Tally line by line is the slowest part of month-end for most practices. TallyPrime can import vouchers directly, so the real work is getting the statement into a shape Tally accepts and importing it without disturbing the ledgers you already have.
This guide walks through the XML route, which works in every TallyPrime release and in Tally.ERP 9.
Pick your route
There are three practical ways to get a bank statement into the books:
| Route | Good for | Watch out for |
|---|---|---|
| Manual voucher entry | A handful of transactions | Slow, and typos only show up at reconciliation |
| Excel import with a mapping template (TallyPrime 4.0 and later) | Teams that already keep statements in Excel | You build and maintain the column mapping yourself, per layout |
| XML import of prepared vouchers | Monthly statements, many clients | The file must reference ledgers that exist, and dates inside your books |
TallyPrime’s Bank Reconciliation screen can also import a statement, but that feature matches the statement against vouchers you have already entered. It helps you reconcile; it doesn’t replace getting the entries into the books first.
The rest of this guide uses XML, because one file carries the voucher type, both ledger lines, the narration and the cheque or UTR reference for every row.
Before you start
A few minutes here saves most failed imports:
- Open the right company and check the financial year. Every voucher date must fall inside the company’s books. A statement from March imported into a company whose books begin in April will be rejected row by row.
- Check the bank ledger. It should exist under the Bank Accounts group, and its name must match the name in your import file exactly, including spaces and punctuation, for example
HDFC Bank A/c. - Agree the opening balance. The bank ledger’s balance on the day before the statement starts should equal the statement’s opening balance. If it doesn’t, find that difference first. Importing on top of it only hides it.
- Decide on a suspense ledger for rows you can’t classify yet, such as
Bank Suspenseunder Suspense A/c. You’ll clear it after the import. - Take a backup. TallyPrime offers one on the import screen. Say yes.
Step 1: Get a clean, digital statement
Download the statement from net banking as a PDF for the full period you’re posting. Avoid photos and scanned copies: a scanned page has no text layer, so every row has to be read by OCR and checked by hand.
Before converting, look at the first and last page. Note the opening balance, the closing balance and the number of pages. You’ll use those numbers at the end.
If the PDF asks for a password, see how to open a password-protected statement PDF.
Step 2: Convert the rows and check the balance
Whatever tool you use, the converted rows must reconcile before they go anywhere near Tally:
- Every running balance: previous balance + credit − debit must equal the balance printed on that row.
- The total: opening + total credits − total debits must equal the closing balance.
A row that fails is almost always a misread amount, a narration that swallowed a number, or a row split across a page break. Fix it against the PDF now. Once it’s a voucher, the same mistake costs you a reconciliation hunt.
KhataSheet runs both checks automatically and flags the exact row that doesn’t add up. You can edit the cell in place and the check re-runs. The PDF is read in your browser and not uploaded.
Step 3: Map each row to a ledger and voucher type
Tally needs to know the other side of every bank entry:
- Debits (money out) usually become Payment vouchers: bank credited, expense or party debited.
- Credits (money in) usually become Receipt vouchers: bank debited, income or party credited.
- Cash withdrawals and deposits, and transfers between two of your own bank accounts, are Contra vouchers.
Set up rules for the narrations you see every month: SWIGGY, ZOMATO → Staff Welfare, ATM WDL → Cash (Contra), ACH D- LIC → Insurance, CHRG / SMS CHG → Bank Charges. Anything left over goes to the suspense ledger for now.
Tip: decode UPI narrations before you map them. The payee’s UPI ID and the 12-digit RRN tell you who was paid far more reliably than the truncated name. The UPI narration decoder splits them for you.
Step 4: Import the ledger masters first
Every ledger named in the vouchers must already exist, or Tally rejects the voucher with Ledger 'X' does not exist!. Import the masters file before the vouchers:
- In TallyPrime, press Alt+O (Import) and choose Masters.
- Set the file format to XML and select the masters file.
- Set Behaviour of import if master already exists to Ignore Duplicates.
- Accept the backup prompt and press Enter to import.
Step 3 matters more than it looks. TallyPrime offers three behaviours: Combine Opening Balances, Ignore Duplicates and Modify with New Data. With anything other than Ignore Duplicates, a ledger you already have, say Staff Welfare under Indirect Expenses, can be altered by the import, including being moved into whatever group the file names. In our own tests with TallyPrime 7.2, the default setting did exactly that. Ignore Duplicates creates only the ledgers that are missing and leaves existing ones untouched.
Step 5: Import the vouchers
- Press Alt+O (Import) and choose Transactions.
- Set the file format to XML and select the vouchers file.
- Accept the backup prompt and press Enter.
TallyPrime shows a summary when it finishes. Read it rather than dismissing it. The counts of vouchers created or altered should equal the number of rows you converted, and errors should be zero.
Tally.ERP 9: the same files work. Use Gateway of Tally → Import of Data → Masters, then Import of Data → Vouchers.
Step 6: Check the result
Don’t sign off on the import summary alone:
- Open the bank ledger for the statement period. Its closing balance should equal the statement’s closing balance. If the opening agreed in “Before you start”, this is the strongest single check you have.
- Open the Day Book for the statement dates and spot-check a few vouchers against the PDF: date, amount, direction, narration and reference.
- Look at the suspense ledger. Its balance is your to-do list for reclassification.
- If anything was rejected, open the Exceptions report that TallyPrime offers after the import, or check the
Tally.implog in the TallyPrime folder.
Common import errors and what they mean
| Message | Cause | Fix |
|---|---|---|
Ledger 'X' does not exist! | A voucher names a ledger that isn’t in the company | Import the masters file first, or create the ledger with that exact name |
The date ... is Out of Range! | The voucher date is outside the company’s books | Check the financial year and books beginning from date, or split the statement |
Voucher date is missing (Educational mode) | TallyPrime’s free Educational mode only accepts certain dates (the 1st, 2nd and 31st) | Use a licensed installation for real data |
Could not set 'SVCurrentCompany' | The company name in the file doesn’t match any loaded company | Load the company, or leave the company name blank to import into the active one |
| Everything doubled after a second import | The vouchers had no stable ID, so Tally created new ones | Use a file whose vouchers carry a stable ID, or delete the first import before re-importing |
Re-importing after a correction
Mistakes happen: a ledger mapped wrongly, a row fixed late. With plain XML vouchers, importing the corrected file again creates a second copy of every voucher. KhataSheet gives each voucher a stable ID (Tally’s REMOTEID) built from the bank ledger, date, amounts, reference and narration. Re-importing the same statement updates those vouchers instead of duplicating them, and we verified this in TallyPrime 7.2. If your tool doesn’t do this, delete the earlier vouchers before importing again.
After the import
The statement is in the books; now finish the job:
- Clear the suspense ledger. Reclassify each entry to the right party or expense ledger.
- Reconcile. Mark bank dates for the imported entries and list what’s still outstanding. Our bank reconciliation checklist covers the routine.
- Save your rules. Next month’s statement from the same client will look the same. Keeping the mappings means the second import is far faster than the first.
Turn the statement into an import file
KhataSheet reads the PDF in your browser, checks every running balance and gives you Tally-compatible XML vouchers and a ledger masters file.
Open the converterThis guide is general information, not professional advice. Menus can change between software versions; check your version's help if a screen looks different. Tally, Tally.ERP 9 and TallyPrime are trademarks of Tally Solutions Pvt. Ltd. KhataSheet is not affiliated with Tally Solutions or any bank.