Business AutomationAccounting & bookkeeping Live

Bank Statement to Tally

Built for CA firms and bookkeepers

Bank statement PDFs turned into verified, Tally-ready books in minutes.

Statement → TallyBalance chain verified
Rows read1,284
Balance ✓1,284
Narrations read96%
For review41
DateNarrationDebitCreditBalance
02 SepUPI/SWIGGY/4218…1,240.004,82,116.40✓
02 SepNEFT/MEHTA TRADERS86,500.005,68,616.40✓
03 SepIMPS/OWN A/C ICICI1,50,000.004,18,616.40✓
04 SepACH/AWS INDIA18,402.114,00,214.29✓
05 SepUPI/RAKESH KUMAR2,000.003,98,214.29✓
05 SepRTGS/SUNRISE DIST.2,40,000.006,38,214.29✓
Swiggy · 14 rows→ Staff welfare
AWS India · 3 rows→ Software expenses
Own a/c ICICI · 6 rows→ Contra
6bank profiles
220automated tests
100%rows balance-checked

Overview

Every bank lays out its statement differently, and retyping them into Tally is slow and error-prone. This tool reads the PDF, works out the layout itself and refuses to produce output unless every running balance and total matches the bank. Then it groups transactions by party so the accountant codes a whole party in one click, and remembers the choice next month.

Before and after

Before
  • Statements arrive as PDFs, often locked, in a different layout per bank.
  • Rows were copied into Excel and then Tally, with digits transposed or rows missed.
  • Each of thousands of rows needs the right ledger and voucher type.
  • Most converters guess on messy PDFs and quietly produce wrong numbers.
What I built
  • A statement engine that detects columns, date and amount formats from the file itself.
  • A balance-chain check on every row, and a total check against the bank’s printed figures.
  • A coding screen that groups transactions by party and category for one-click ledger assignment.
  • A memory of ledger choices, so next month’s statement arrives pre-coded.

How it works

  1. 1

    Read

    The PDF is read and the bank’s layout detected automatically.

  2. 2

    Verify

    Previous balance + amount = new balance, on every single row.

  3. 3

    Group

    UPI, NEFT and IMPS narrations are parsed into parties.

  4. 4

    Code

    One ledger choice codes all of a party’s rows.

  5. 5

    Export

    A Tally-ready workbook, with doubtful rows held for review.

What it does

No retyping errors

If any row’s balance breaks, conversion stops with a clear reason.

Works with most banks

Profiles for HDFC, ICICI, SBI, Axis, Kotak and Union Bank, plus a general reader.

Gets faster every month

Party-to-ledger choices are remembered across statements.

Fewer wrongly filed entries

Own-account transfers recognised by exact name match, never guessed.

Every decision explained

Each row carries the rule, reason and confidence behind it.

Locked PDFs handled

Password-protected statements open; scanned images are refused rather than misread.

Under the hood

PythonpdfplumberFlaskReactopenpyxlRule engine
  • Three table-extraction strategies, including a fix for statements whose column lines don’t meet.
  • Date ambiguity (5 Aug or 8 May?) resolved by testing formats across the whole file.
  • An early rule mis-filed 271 transactions as transfers; replaced with exact name matching.
  • 220 automated tests, including real statements from several banks.

Outcome

Statements become coded books without retyping.
Every output is proved against the bank’s own totals.
Repeat clients get faster each month as choices are remembered.

Want this for your business?

Tell me how your team works today. I’ll tell you how much of it a system like Bank Statement to Tally could take over.

Chat on WhatsApp