Skip to main content

indian-bank-statement-parser

CI Docker PyPI License Python Ruff Docs

Offline-first CLI & Python library to convert Indian bank statement PDFs (HDFC, ICICI, SBI, Axis) into standardized CSV/JSON for GST reconciliation, accounting, and lending workflows.

Quick Start

# pip
pip install indian-bank-statement-parser

# Poetry
poetry add indian-bank-statement-parser

# UV (fast)
uv add indian-bank-statement-parser

# Docker
docker pull ghcr.io/raptar231/indian-bank-statement-parser:latest
# Parse directory
parse-bank-statements --input-dir ./statements --output-dir ./parsed --bank hdfc

# Parse single file
parse-bank-statements --input-file ./stmt.pdf --output-file ./out.csv --bank icici

# GSTR-2A reconciliation
parse-bank-statements --input-dir ./stmts --output-dir ./gstr2a --bank sbi --reconcile-gstr2a --gstin 29ABCDE1234F1Z5

Why this exists

Problem with Bank CSVs This Tool
Different schema per bank One unified schema
Inconsistent date formats Normalized to YYYY-MM-DD
Mixed debit/credit amounts Separate debit/credit columns
Limited history (90-180 days) Full statement period via PDF
No CSV for credit cards Parses card PDFs
No GSTR-2A fields GSTR-2A ready CSV
Manual per-account download parse-bank-statements --input-dir ./clients

Use this if: You process 10+ statements/month, need GST reconciliation, multi-bank standardization, or full history.

Skip if: Occasional personal statements — bank CSV is fine.

Documentation

Full docs: raptar231.github.io/indian-bank-statement-parser

Supported Banks

Bank Code Status
HDFC hdfc, hdfc_cc ✅ Production
ICICI icici, icici_cc ✅ Production
SBI sbi, sbi_cc ✅ Production
Axis axis, axis_cc ✅ Production

Don't see your bank or statement format?

Open an issue or drop an email with details so support can be added:

  • 🐛 Report an unsupported document: Open an issue and attach an anonymized sample PDF/CSV
  • 🏦 Request a new bank: Open an issue with the bank name, statement type (savings/current/credit card), and an anonymized sample
  • 📧 Email: mondalsonu4@gmail.com

Please make sure to anonymize your statement (mask account numbers, names, and amounts) before sharing.

Install & Run

# Development
git clone https://github.com/raptar231/indian-bank-statement-parser
cd indian-bank-statement-parser
pip install -e ".[dev]"

# Tests
pytest tests/ -v

# Code quality
ruff check bank_parser/ tests/
mypy bank_parser/
black --check bank_parser/ tests/

License

Apache-2.0 — see LICENSE.


Support

If this tool saves you time, consider supporting development:


Built for CA firms, lenders, and fintechs processing Indian bank statements at scale.

Release files for indian-bank-statement-parser 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for indian-bank-statement-parser 0.1.0
File Size Uploaded
indian_bank_statement_parser-0.1.0.tar.gz 49.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for indian-bank-statement-parser 0.1.0
File Interpreter ABI Platform
indian_bank_statement_parser-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 109.7 kB

Release files / indian_bank_statement_parser-0.1.0.tar.gz

Download URL indian_bank_statement_parser-0.1.0.tar.gz
Size 49.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e76339afe3ae709a784cd08881732525995e2e6b6dfb105e79a0833adba9c73b
BLAKE2b-256 checksum
How to use checksums
3b6743ea21709c1aada81e5b238b5b97578a060200d1e31a66028be18567bbec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.

Transparency log

Release files / indian_bank_statement_parser-0.1.0-py3-none-any.whl

Download URL indian_bank_statement_parser-0.1.0-py3-none-any.whl
Size 60.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c05fe6b7ab28e498508f396bf3dea89711e42f01b5acc79bc856476938ab45f9
BLAKE2b-256 checksum
How to use checksums
5b04f98b5b020a6bd58e91a52bac64f3f13b8e971ae539eea695e0f73785ebdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page