Tally vouchers from a PDF statement
PDF bank statement to Tally XML
Tally doesn't import a bank statement the way other software does. It imports vouchers, in its own XML envelope. This converter turns a PDF statement into those vouchers, balanced and checked, ready for TallyPrime or Tally.ERP 9.
- TallyPrime and Tally.ERP 9
- Receipt and Payment vouchers
- Lakh and crore amounts read correctly
- Every voucher balanced to zero
<VOUCHER VCHTYPE="Receipt"> <DATE>20260302</DATE> <NARRATION>STRIPE PAYOUT</NARRATION> <ALLLEDGERENTRIES.LIST> <LEDGERNAME>Suspense A/c</LEDGERNAME> <AMOUNT>4210.00</AMOUNT> </ALLLEDGERENTRIES.LIST></VOUCHER><VOUCHER VCHTYPE="Payment"> <DATE>20260305</DATE> <NARRATION>CHECK #1042</NARRATION></VOUCHER>
The short answer
How to convert a PDF bank statement to Tally XML
To convert a PDF bank statement to Tally XML, each transaction is written as a Tally voucher inside Tally's import envelope: a Receipt voucher for money in and a Payment voucher for money out, each with two ledger entries (the bank ledger and the other side) that sum to zero. Upload the PDF here, review the extracted rows, download the XML, and import it in TallyPrime with Import → Transactions.
That's different from every other format on this site. QuickBooks, Xero and Quicken import a statement and let you categorise it afterwards. Tally imports finished accounting entries, and it matches ledgers by name. So the conversion has to get two things right that other formats don't care about: the ledger names and the sign convention, where Tally writes a debit as a negative amount.
Every row is checked against the statement's running balance and totals before the vouchers are built, so the bank ledger's closing balance in Tally matches the statement.
Step by step
Importing a bank statement into TallyPrime from a PDF
- 1Convert and reviewSign in, upload the PDF statement (digital or scanned) and check any rows flagged by the running-balance check. Password-protected statement PDFs, common with Indian banks, are fine: enter the password when asked; it unlocks the file in your browser and is never sent to us or stored.
- 2Export Tally XMLChoose Tally XML (on Professional and Business plans). Credits become Receipt vouchers and debits become Payment vouchers, dated with the transaction date and carrying the description as narration.
- 3Check the ledger namesOpen the XML in a text editor. On each voucher, one LEDGERNAME is the bank ledger, written as the statement's account number, and the other is Suspense A/c. Replace the account number with your bank ledger's exact name from the Chart of Accounts, and make sure a ledger called Suspense A/c exists.
- 4Open the company and importIn TallyPrime, open the company, then Import → Transactions, set the file format to XML and give the path to the file. In Tally.ERP 9: Gateway of Tally → Import of Data → Vouchers.
- 5Read the import resultTally reports how many vouchers were created and lists any errors. The usual causes are a ledger name that doesn't match, or a date before the company's books begin.
- 6Reassign from SuspenseOpen the Suspense A/c ledger and alter each voucher to its proper ledger, or do it in bulk with your usual method. Then run bank reconciliation against the statement.
Why it works
Built for Tally's rules
Balanced vouchers
Tally rejects a voucher whose ledger entries don't sum to zero. Every voucher is balanced before the file is written.
Tally's sign convention
Tally writes debits as negative amounts, the opposite of most formats. Getting it backwards imports every amount on the wrong side; it's handled here.
Indian number formats
Lakh and crore grouping (1,23,456.78) and western grouping are both read correctly, with the format fixed per statement rather than guessed per row.
Suspense, not guesses
The other side of each voucher posts to Suspense A/c, so nothing lands in a plausible but wrong ledger. You reassign from one place.
Safe XML
Ampersands and angle brackets in descriptions ("AT&T", "<REVERSAL>") are escaped, so one narration can't make the whole file unreadable.
Checked before export
A misread digit is caught on its own row
Every conversion is tested against the statement: the running balance on every row, page subtotals, opening plus movement against closing, the printed credit and debit totals, and the transaction count. When a number does not add up, VouchRow names the row and highlights the line it came from on the PDF.
Arithmetic only: it verifies amounts, balances and totals, not descriptions or dates, and two errors that cancel out would pass. The source-line link covers the rest.
How the checks workRunning balance check
- POS AMAZON MKTPLACE−86.4316,604.12
- CHECK #1042−1,250.0015,354.12
- ZELLE FROM J MORALES+640.0015,994.12
Every row agrees with the balance printed beside it.
The format
The Tally XML format for bank statement vouchers
Tally's import file is an XML envelope with a request header and a list of TALLYMESSAGE elements, one per voucher. These are the parts that matter:
| Element | Contents |
|---|---|
| <TALLYREQUEST>Import Data | Tells Tally this is an import |
| <REPORTNAME>Vouchers | The data being imported is vouchers |
| <VOUCHER VCHTYPE="Receipt"> or "Payment" | Voucher type: Receipt for money in, Payment for money out; both exist in every company by default |
| <DATE> | Transaction date as YYYYMMDD |
| <EFFECTIVEDATE> | The value date where the statement prints one, otherwise the transaction date |
| <REFERENCE> | Cheque number or reference, where printed |
| <NARRATION> | The full transaction description |
| <ALLLEDGERENTRIES.LIST> | Two per voucher: the bank ledger and the other side |
| <LEDGERNAME> | Matched by exact name against your company's ledgers |
| <ISDEEMEDPOSITIVE> | Yes on the debit side, No on the credit side |
| <AMOUNT> | Negative for the debit side, positive for the credit side; the two sum to zero |
Ledgers
Why ledger names decide whether the import works
Tally matches each LEDGERNAME against the ledgers in the open company, character for character. "HDFC Current A/c" and "HDFC Current" are different ledgers. Depending on how the company is set up, a voucher naming a ledger that doesn't exist is either rejected or posted to a new ledger with that name. Neither is what you want, and the second one is silent: the import succeeds and your bank ledger's balance doesn't move.
The converter writes the bank side under the statement's account number, which is deliberately not a ledger name you're likely to have, so a mismatch is obvious. Before importing, replace it with your bank ledger's exact name as shown in the Chart of Accounts. The other side is written as Suspense A/c. Tally has a Suspense A/c group but not necessarily a ledger with that name, so create one under that group if your company doesn't have it.
Troubleshooting
Tally import errors and fixes
When Tally reports errors on import, it names the voucher but not always the reason. These are the usual causes.
| Problem | Cause | Fix |
|---|---|---|
| Voucher rejected or not imported | A LEDGERNAME doesn't match an existing ledger | Correct the name in the XML or create the ledger, then import again |
| Imported, but the bank balance didn't change | Vouchers posted to a newly created ledger with a similar name | Delete the new ledger's vouchers, fix the name, re-import |
| Vouchers dated before the books begin are rejected | Tally won't accept entries before the company's books beginning date | Adjust the books beginning date, or import only later statements |
| Amounts on the wrong side | A hand-built file used the usual sign convention, not Tally's | Use the converted file, which follows Tally's convention |
| Whole file refused as invalid | An unescaped & or < in a description in a hand-built file | Descriptions are escaped here; regenerate the file |
| Same statement imported twice | Tally creates the vouchers again | Import each statement once; delete the duplicate set if it happens |
Alternatives
Tally XML or Excel for Tally Prime?
Many searches are for "bank statement PDF to Excel for Tally Prime", and Excel has its place. Newer TallyPrime releases can import from Excel through a field-mapping step, and some firms like to review and label rows in a spreadsheet before anything reaches Tally.
XML is Tally's native import route and needs no mapping: the voucher type, ledger entries, signs and narration are already in the structure Tally expects. If you want to review in Excel first, export both from the same conversion; the pages are only counted once. Label rows in bulk here before export if that helps your review.
Statements
Reading Indian and South Asian bank statements
Statements from Indian, Pakistani and Gulf banks bring their own quirks. Amounts may use lakh and crore grouping (1,23,456.78), and that format is identified once per statement so a value isn't misread halfway down a page. Dates are usually day-first; the order is decided once from every date on the statement. Withdrawal and deposit columns set the direction of each row, and the currency is detected from the statement.
Many Indian banks email password-protected PDF statements, with the password built from your name, date of birth or customer ID. Upload the file as it arrived and enter that password when asked. It unlocks the file in your browser and is never sent to us or stored.
Side by side
Ways to get a bank statement into Tally
| Manual voucher entry | Excel import with mapping | Tally XML from the PDF | |
|---|---|---|---|
| Typing required | Every voucher | None after mapping | None |
| Mapping step | No | Yes, per layout | No |
| Sign convention handled | By you | By your mapping | Yes |
| Checked against the statement | By you | No | Running balance and totals |
| Works in Tally.ERP 9 | Yes | Depends on version | Yes |
Who uses it
Who converts statements to Tally XML
CA firms and accountants
Client statements arrive as PDFs every month. Converting to vouchers removes the data entry, and the reconciliation shows each statement ties before it's imported.
Businesses catching up on bank entries
Months of unentered bank transactions become Receipt and Payment vouchers in one import per statement, then get reassigned from Suspense.
Firms in Pakistan, Bangladesh and the Gulf
Tally users whose banks don't offer a Tally-ready export, with statements in western or South Asian number formats.
FAQ
PDF bank statement to Tally XML: questions
How do I import a bank statement into Tally Prime?
Convert the PDF statement to Tally XML, check the bank ledger name in the file matches yours exactly, open the company in TallyPrime, then use Import → Transactions with XML as the file format. In Tally.ERP 9, use Gateway of Tally → Import of Data → Vouchers.
Which voucher type is used?
Receipt for credits and Payment for debits, against the bank ledger. Both voucher types exist in every Tally company by default.
Why does everything import into Suspense A/c?
That's deliberate. Guessing a ledger for each transaction would post rows to wrong accounts silently, which is far harder to find later than a single Suspense balance you reassign. Make sure a ledger called Suspense A/c exists before importing.
Do Indian number formats parse correctly?
Yes. Lakh and crore grouping (1,23,456.78) is handled, as is western grouping, and the format is fixed per statement rather than guessed row by row.
What does "voucher rejected" mean in the import result?
Usually that a named ledger couldn't be found, or that the voucher's entries don't balance. Every voucher written here is balanced, so check the ledger names first.
Can I convert password-protected bank statement PDFs?
Yes. Upload the statement as the bank emailed it and enter its password when asked. The file is unlocked in your browser; the password is never sent to us or stored.
Can I get Excel for Tally instead of XML?
Yes. Export Excel from the same conversion at no extra page cost, review or label it, and use TallyPrime's Excel import if your release supports it. XML needs no mapping, which is why it's the default for Tally.
Which plan includes Tally XML?
Professional ($39 a month, 900 pages) and Business ($99 a month, 2,500 pages). Only pages with transactions are counted.
Keep going
Related guides and converters
Tally guides
Related formats
Turn PDF statements into Tally vouchers
Create an account, convert a statement and export Tally XML on the Professional plan ($39 a month, 900 pages) or Business. Every voucher is balanced and every row checked first.