Bank to Books · Free: one statement a month

Bank statement converter: PDF to Excel and Tally

ReconScribe's bank statement converter turns a PDF statement, digital or scanned, into dated rows of debits, credits and balances, checks them against the statement's own opening balance, closing balance and totals to the paisa, and exports Tally XML or a CSV that opens in Excel, Zoho Books or QuickBooks. The free plan reads one statement a month for each company, up to 10 pages.

A real sample result

A fictional May 2026 statement in the form the converter returns, already coded to ledgers. The checks and the export files are computed by the same code that handles every upload.

Sample current account statement
Account XXXX4821 · 01/05/2026 to 31/05/2026 · 13 transactions · INR
Opening balance
2,50,000.00
Closing balance
3,85,420.50
Total debits (10 rows)
1,93,579.50
Total credits (3 rows)
3,29,000.00
Sample bank statement converted into rows: date, narration, debit, credit and running balance
DateNarrationDebitCreditBalance
02/05/2026GOOGLE WORKSPACE SUBSCRIPTION1,888.202,48,111.80
04/05/2026NEFT CR ACME CLIENT INV-22311,45,000.003,93,111.80
06/05/2026RIPPLING PAYROLL MAY 202692,500.003,00,611.80
08/05/2026AWS SERVICES EMEA12,950.002,87,661.80
10/05/2026RENT OFFICE PREMISES45,000.002,42,661.80
12/05/2026GST PAYMENT CHALLAN CIN18,600.002,24,061.80
15/05/2026NEFT CR GLOBEX CORP INV-88796,000.003,20,061.80
18/05/2026MICROSOFT 365 BUSINESS4,720.003,15,341.80
20/05/2026BANK CHARGES NEFT354.003,14,987.80
22/05/2026ELECTRICITY BILL TATA POWER8,650.003,06,337.80
25/05/2026NEFT CR INITECH SOLUTIONS INV-552188,000.003,94,337.80
28/05/2026INTERNET LEASED LINE AIRTEL6,600.003,87,737.80
30/05/2026CASH WITHDRAWAL ATM2,317.303,85,420.50

Verified: this statement balances

7 of 7 checks passed against the figures printed on the statement.

  • ✓Balance equation: opening + credits - debits = 385420.50, statement closing = 385420.50
  • ✓Total debits: summed 193579.50 vs printed 193579.50
  • ✓Total credits: summed 329000.00 vs printed 329000.00
  • ✓Debit count: counted 10 vs printed 10
  • ✓Credit count: counted 3 vs printed 3
  • ✓Running balance continuity: all 13 rows chain correctly
  • ✓Dates: in order and inside the statement period
Tally XML for the first 2 rows

A Payment voucher for the withdrawal and a Receipt voucher for the deposit, each against the bank ledger and the ledger the row was coded to. The REMOTEID lets Tally update these vouchers on a second import instead of posting them twice, as long as that export uses the same bank ledger name.

<?xml version="1.0"?>
<ENVELOPE>
  <HEADER>
    <TALLYREQUEST>Import Data</TALLYREQUEST>
  </HEADER>
  <BODY>
    <IMPORTDATA>
      <REQUESTDATA>
        <TALLYMESSAGE xmlns:UDF="TallyUDF">
          <VOUCHER REMOTEID="RS-16d6560ae5-c0a5c017d5da5f83" VCHTYPE="Payment">
            <DATE>20260502</DATE>
            <VOUCHERTYPENAME>Payment</VOUCHERTYPENAME>
            <NARRATION>GOOGLE WORKSPACE SUBSCRIPTION</NARRATION>
            <ALLLEDGERENTRIES.LIST>
              <LEDGERNAME>Bank Account 4821</LEDGERNAME>
              <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
              <ISPARTYLEDGER>Yes</ISPARTYLEDGER>
              <AMOUNT>1888.20</AMOUNT>
            </ALLLEDGERENTRIES.LIST>
            <ALLLEDGERENTRIES.LIST>
              <LEDGERNAME>Software Subscriptions</LEDGERNAME>
              <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
              <ISPARTYLEDGER>Yes</ISPARTYLEDGER>
              <AMOUNT>-1888.20</AMOUNT>
            </ALLLEDGERENTRIES.LIST>
          </VOUCHER>
          <VOUCHER REMOTEID="RS-16d6560ae5-131263e2dd9edf1b" VCHTYPE="Receipt">
            <DATE>20260504</DATE>
            <VOUCHERTYPENAME>Receipt</VOUCHERTYPENAME>
            <NARRATION>NEFT CR ACME CLIENT INV-2231</NARRATION>
            <ALLLEDGERENTRIES.LIST>
              <LEDGERNAME>Bank Account 4821</LEDGERNAME>
              <ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
              <ISPARTYLEDGER>Yes</ISPARTYLEDGER>
              <AMOUNT>-145000.00</AMOUNT>
            </ALLLEDGERENTRIES.LIST>
            <ALLLEDGERENTRIES.LIST>
              <LEDGERNAME>Sales</LEDGERNAME>
              <ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
              <ISPARTYLEDGER>Yes</ISPARTYLEDGER>
              <AMOUNT>145000.00</AMOUNT>
            </ALLLEDGERENTRIES.LIST>
          </VOUCHER>
        </TALLYMESSAGE>
      </REQUESTDATA>
    </IMPORTDATA>
  </BODY>
</ENVELOPE>
CSV for Excel, first 4 rows

A custom CSV with five of the nine columns you can pick, dates as dd/MM/yyyy and amounts as plain numbers.

Date,Narration,Debit,Credit,Balance
02/05/2026,GOOGLE WORKSPACE SUBSCRIPTION,1888.20,,248111.80
04/05/2026,NEFT CR ACME CLIENT INV-2231,,145000.00,393111.80
06/05/2026,RIPPLING PAYROLL MAY 2026,92500.00,,300611.80
08/05/2026,AWS SERVICES EMEA,12950.00,,287661.80

How it works

  1. Step 1

    Upload the statement PDF

    Upload the PDF your bank gave you, digital or scanned, up to 4 MB. If it is password protected, enter the password: it unlocks that one read and is never stored. Pages recognised as terms, disclosures or blank at the start or end are left out and do not count against your page limit.

  2. Step 2

    Every page is read, then checked

    Each page is read on its own as a one-page PDF, so the printed debit and credit columns are seen, not just the text. The pages are joined, put in date order if the bank lists newest first, and run through seven checks against the figures printed on the statement.

  3. Step 3

    Code the rows and export

    Give rows a ledger one by one or in bulk; on premium they arrive coded from your rules and past choices, marked auto until checked. Export Tally XML, a Zoho Books or QuickBooks CSV, or a custom CSV for Excel.

What it checks on every statement

AI reads the page layout. Whether the result can be trusted is decided by arithmetic in code, using only the figures the bank printed. Each check runs when the statement prints the figure it needs, and amounts must agree to the paisa.

Balance equation

Opening balance plus credits minus debits must equal the printed closing balance. When it does not, the check shows the difference.

Printed totals and counts

Summed debits and credits must equal the printed totals, and the number of debit and credit rows must equal the printed Dr and Cr counts, wherever the bank prints them.

Running balance on every row

Starting from the opening balance, each row must reproduce the balance printed beside it, through to the closing. A break is reported with its row number and date, so you know where to look.

Dates in order and in period

Rows must run in date order and fall inside the statement period. A row out of order usually means a day and month read the wrong way round, and it fails the check.

Verified only with both ends printed

Verified needs the balance proof to run from a printed opening to a printed closing balance. A balance worked out from the rows cannot reveal missing rows, so that result says Partly verified; with no printed anchors it says Could not verify.

Wrong-side rows fixed only on proof

A row read as a withdrawal when the money came in is switched only when the bank's own running balance proves it and the printed totals then agree exactly. Otherwise it stays as read, and the checks show it.

Possible duplicates flagged

Rows with the same date, amount and narration as another row are marked as possible duplicates, so a repeated entry is easy to spot before you export.

Account numbers masked

The account number is kept only as its last 4 digits, even when the statement prints it in full, and an account number in the file name is masked the same way.

Free and premium

Free

  • ✓One statement a month, up to 10 pages
  • ✓Digital or scanned PDFs, read by AI
  • ✓Balance tie-out on every statement
  • ✓Export to Tally, Zoho, QuickBooks or custom CSV
  • ✓Processed, not stored: export before you leave

Premium

  • ✓Up to 3 statements a day, up to 40 pages each
  • ✓Scanned pages read by a stronger AI
  • ✓Auto-code from your history, chart of accounts and rules
  • ✓Your 10 most recent statements saved, with your coding history kept
  • ✓Priority support

Premium is priced per company. See pricing or write to admin@reconscribe.com.

Bank statement to Excel

For Excel, export Custom CSV. Choose from nine columns (date, value date, narration, reference, debit, credit, a signed amount, balance and ledger), order them and rename the headers, for example Debit to Withdrawal. Dates come out in one of five formats, including dd/MM/yyyy and dd-MMM-yyyy.

The file is a CSV, not an .xlsx workbook, so it opens in Excel or Google Sheets. Amounts are plain numbers with two decimals and no currency symbol or separators, and a narration that starts with =, +, - or @ is prefixed so Excel shows it as text instead of running it as a formula.

Bank statement to Tally

The Tally export is an XML file in the voucher format TallyPrime and Tally ERP 9 take as a data import. Each deposit becomes a Receipt voucher and each withdrawal a Payment voucher, with two ledger entries: your bank ledger and the ledger the row was coded to. Rows left uncoded post to Suspense, or to a default ledger you name, so nothing is dropped silently.

Every voucher carries a stable ID (a Tally REMOTEID) built from the bank ledger name, the account and what the row says, so the same transaction exported again, even from a corrected re-upload, carries the same ID and Tally can match it to the voucher already imported, as long as each export uses the same bank ledger name. Check how your Tally import treats vouchers that already exist before you import a statement a second time.

Zoho Books gets its bank statement columns and QuickBooks Online its three-column format, with deposits positive and withdrawals negative. Both categorise on their side, so those files carry no ledger.

What free and premium include, exactly

The free plan reads one statement a month for each company, up to 10 pages, digital and scanned pages alike, with every check and every export. The statement is not stored: the rows stay on your screen until you leave or refresh, so export first. A failed read goes back to your allowance.

Premium reads up to 3 statements a day for each company, up to 40 pages each, with scanned pages read by a stronger AI; the daily allowance starts again at 05:30 IST. Your 10 most recent statements are kept with their coding, and the coding memory is kept apart, so clearing old statements forgets nothing. Import a chart of accounts of up to 5,000 ledgers for the ledger list, and up to 2,000 keyword rules that code new statements as they are read.

Keyword rules match whole words, so RENT codes OFFICE RENT but never TORRENT POWER, and the longest keyword wins. The coding memory skips a narration with no payee in it, such as a cheque deposit, a transfer between your own accounts or a cash withdrawal, so one past choice never codes every cheque the same way.

Frequently asked questions

Is the bank statement converter free?

Yes. The free plan reads one bank statement a month for each company, up to 10 pages, with all seven checks and every export format. You need a free ReconScribe account, and free statements are not stored, so export before you leave the page.

Can it convert a scanned bank statement?

Yes. A page with no text layer is treated as a scan and read from what the page shows by AI, with a stronger AI for scans on premium. The same seven checks run on scans, so a misread amount is caught when it breaks a printed balance or total, and a scan is shown as Verified only when every check passes from a printed opening balance to a printed closing balance.

How do I convert a bank statement PDF to Excel?

Upload the PDF, review the result and export Custom CSV, which opens directly in Excel. Pick any of the 9 columns, order and rename them, and choose one of 5 date formats. The export is a CSV file rather than an .xlsx workbook.

How do I import a bank statement into Tally?

Export Tally XML and import it into TallyPrime or Tally ERP 9 as data. Each deposit becomes a Receipt voucher and each withdrawal a Payment voucher against the ledger you coded, with Suspense (or your chosen default) for uncoded rows. Each voucher carries a stable ID, so a repeated import can be matched to the voucher already in Tally; check your import setting for vouchers that already exist before importing the same statement twice.

What happens if the statement does not balance?

It is marked Needs review, and the failing check says where: the row and date where the running balance breaks, or the summed debits against the printed total. Nothing is shown as Verified unless every check that ran passed, from a printed opening to a printed closing balance. If debits and credits came out reversed across the statement, one button swaps them and reruns the checks.

How many pages can a statement have?

Up to 10 pages on the free plan and 40 on premium. Pages recognised as terms, disclosures or blank at the start or end are left out and do not count. One upload can be up to 4 MB. On premium, split a longer statement into months and upload each part; on the free plan each upload uses that month's one statement, so upload a shorter period.

Is my bank statement stored?

Not on the free plan: the rows stay on your screen and are cleared when you leave or refresh. Premium keeps your 10 most recent statements with their coding. On both plans the PDF file itself is not kept, the account number is kept as its last 4 digits, and a PDF password is used for that one read only.

Does it code transactions to ledgers automatically?

On premium, yes: rows are filled from up to 2,000 keyword rules you import and from the ledgers your team chose before for the same payee, each marked auto until someone keeps or changes it. Rules can be imported only on premium, and the coding memory learns only from statements premium keeps, so a company that has only used the free plan sets ledgers itself, row by row or in bulk, before export.

Related

Bank to Books, free to start

Turn a bank statement PDF, even a scanned one, into clean transactions checked against its own balances and ready to import.