Skip to content
StatementSmith
Bank statement converter

Convert CSV to Tally XML

Drop in a bank statement CSV and get Tally voucher XML back, with a balance check that proves nothing was dropped.

No sign-up needed. Files never leave your browser.

Tally XML: Not yet import-tested in TallyPrime. The structure follows Tally's published sample and its documented sign convention, and nobody has put this output through a real installation. Import one statement and check the vouchers against your company file before you rely on it.

Tally does not read bank statements. It reads vouchers: accounting entries that name the ledger on both sides of every transaction. A statement has to be turned into bookkeeping before it can go anywhere near a company file.

That is what this produces: an XML file of Receipt and Payment vouchers, one per transaction, each carrying two ledger entries that sum to zero. Money in becomes a Receipt debiting the bank; money out becomes a Payment crediting it.

The ledger names are placeholders, and deliberately so. A Tally company names its accounts however its owner chose, and nothing in a bank statement could tell us what yours are called. So the file uses Bank Account and Suspense, which are easy to find and repoint once the entries are in front of you.

New to the format? Read what varies in a bank statement CSV. It covers what is inside one, and what it cannot tell you.

Balance validation

A converter that tells you when it missed something.

Most tools hand you a file and let you find out in your ledger. Every conversion here is reconciled against the closing figure first. That figure is read from your statement’s balance column, or typed in from the page when there isn’t one.

When the totals don’t meet you get the exact size of the gap, every row that did read, and the converted file anyway.

Sample balance check

Closing balance is 240.18 short

A transaction may be missing. Review the rows below, or re-upload including all pages.

Opening4,210.11
Rows total1,154.46
Computed5,364.57
Statement says5,604.75

A sample result. This is the same component the converter uses.

Client statements never leave the tab

Conversion runs in your browser, in JavaScript on this page.

No server copy

Closing the tab discards the file and everything read out of it. There is nothing to delete later and nothing to breach.

Nothing to opt out of

There is no upload step to decline, because there is no upload. Open your browser's network tab and convert. You will see no request carrying your data.

Keeps working with the network off

Once this page has loaded, conversion runs with no connection at all. Useful on a client site with locked-down wifi. It also proves the file stays put.

Questions people actually ask

What ledgers does the file use?

The bank side is written against a ledger named Bank Account, and the other side against Suspense. Both are placeholders meant to be pointed at your real ledgers. A Tally company file names its accounts however its owner chose, and there is nothing in a bank statement that could tell us what yours are called.

Why is money coming in written as a negative number?

Because Tally writes a debit as a negative amount, and money arriving in a bank account is a debit, an asset increasing. The file states the direction twice, in the sign and in an ISDEEMEDPOSITIVE flag beside it, and the two always agree. It looks wrong at a glance and is the format working as intended.

Is this the same as a Tally backup?

No. A backup carries a whole company: masters, vouchers, configuration. This is a voucher import file, a list of transactions and nothing else. It adds entries to a company that already exists rather than replacing one.

Does my statement get uploaded anywhere?

No. The conversion runs inside your browser using JavaScript on this page. The file is read from your disk into memory, converted, and offered back as a download. Nothing is sent to a server, so there is nothing for us to store, log or delete. You can confirm this by opening your browser's network tab while you convert.

Do I need an account?

No. There is no sign-up, no email capture and no usage limit on CSV conversion.

How do I know every transaction came through?

Every conversion shows a balance check above the results. If your file has a running balance column, the opening and closing balances are read from it. Otherwise you type them in from your statement. The check adds up every converted transaction, compares the total to the closing balance, and tells you the exact size of any difference.

My dates came out wrong. What happened?

A date like 05/01/2026 is ambiguous: 5 January in the UK and most of Europe, 1 May in the US. Turn on the day-first option and the file is re-read immediately. If your statement contains a date that can only be day-first, such as 19/02, the converter points this out before you download.

Some rows were skipped. Is that a problem?

Usually not. Totals rows, page footers, repeated column headings and blank lines carry no transaction date, so they are left out and counted. The skipped count is shown with the results so you can check it against what you expected.

Try it on the statement that’s annoying you right now.

No account, no card, no limit. If the layout isn’t recognised you will know immediately, rather than after a support ticket.

Convert a statement