VouchRow

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
statement.pdf statement.xml
<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>
Balanced · every row checked before this Tally XML file was written

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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 work

Running balance check

RowAmountBalance
  • 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:

ElementContents
<TALLYREQUEST>Import DataTells Tally this is an import
<REPORTNAME>VouchersThe 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
Key elements in the converted file

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.

ProblemCauseFix
Voucher rejected or not importedA LEDGERNAME doesn't match an existing ledgerCorrect the name in the XML or create the ledger, then import again
Imported, but the bank balance didn't changeVouchers posted to a newly created ledger with a similar nameDelete the new ledger's vouchers, fix the name, re-import
Vouchers dated before the books begin are rejectedTally won't accept entries before the company's books beginning dateAdjust the books beginning date, or import only later statements
Amounts on the wrong sideA hand-built file used the usual sign convention, not Tally'sUse the converted file, which follows Tally's convention
Whole file refused as invalidAn unescaped & or < in a description in a hand-built fileDescriptions are escaped here; regenerate the file
Same statement imported twiceTally creates the vouchers againImport 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 entryExcel import with mappingTally XML from the PDF
Typing requiredEvery voucherNone after mappingNone
Mapping stepNoYes, per layoutNo
Sign convention handledBy youBy your mappingYes
Checked against the statementBy youNoRunning balance and totals
Works in Tally.ERP 9YesDepends on versionYes

Who uses it

Who converts statements to Tally XML

01

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.

02

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.

03

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.

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.