DEV Community

Cover image for How to Automate Bank Statement Imports with Python
Oddshop
Oddshop

Posted on • Originally published at oddshop.work

How to Automate Bank Statement Imports with Python

Bank statement python tools can save hours of manual work, but only when they’re built for real-world complexity. Most businesses still rely on tedious CSV-to-Tally imports, requiring accountants to retype every transaction. This bank statement python solution streamlines that process by automatically converting bank exports into Tally Prime XML format.

The Manual Way (And Why It Breaks)

Manually entering bank transactions into Tally Prime is time-consuming and error-prone. Accountants often spend hours copying data from CSV files, mapping fields, and creating vouchers. Each entry must align with Tally’s voucher structure — date, narration, amount, and ledger. With multiple banks and transaction types, this process becomes a repetitive burden. For businesses using bank account automation, the lack of integration tools only compounds the problem. Even small changes in bank formats require manual recoding. This is where a bank statement python script becomes useful — it automates the mapping and conversion steps.

The Python Approach

Here's a simplified Python script that mimics the core logic of a bank statement python tool. It reads a CSV file, processes each row, and prepares data for Tally import. While this version only supports basic mappings, it shows how a script can extract and structure transaction data.

import pandas as pd
from pathlib import Path

# Load the bank statement CSV file
statement_file = 'statement.csv'
df = pd.read_csv(statement_file)

# Rename columns to match Tally voucher fields
df.rename(columns={
    'Date': 'voucher_date',
    'Description': 'narration',
    'Amount': 'amount',
    'Type': 'voucher_type'
}, inplace=True)

# Define ledger mapping for debits and credits
ledger_map = {
    'Payment': 'Cash',
    'Receipt': 'Bank',
    'Contra': 'Bank'
}

# Create a new column for ledger account
df['ledger'] = df['voucher_type'].map(ledger_map)

# Format date for Tally
df['voucher_date'] = pd.to_datetime(df['voucher_date'], format='%d-%m-%Y').dt.strftime('%Y-%m-%d')

# Prepare output DataFrame for XML
output_data = df[['voucher_date', 'narration', 'amount', 'ledger']]

# Save to a CSV (simulating what Tally expects)
output_data.to_csv('temp_tally_import.csv', index=False)
Enter fullscreen mode Exit fullscreen mode

This snippet uses pandas to load and restructure data, mapping columns to Tally fields. It handles date formatting and basic voucher type classification. However, it lacks complex features like XML generation, multi-bank support, and configurable ledger mappings. A full tool addresses these limitations and provides a complete workflow for accounting software integration.

What the Full Tool Handles

  • Parses CSV files from major Indian banks like HDFC, ICICI, and SBI
  • Maps CSV columns to Tally voucher fields such as date, narration, and amount
  • Generates Tally-compatible XML for direct import into Tally Prime
  • Offers configurable ledger account mapping for debits and credits
  • Supports multiple transaction types including payment, receipt, contra, and journal
  • Handles diverse bank formats with a single, unified import process

This tool is a bank statement python utility that supports various formats and reduces manual effort significantly. It bridges the gap between raw bank exports and Tally’s structured data requirements.

Running It

To use the tool, simply import it and call the main function with your bank statement and output file paths:

import bank_to_tally
bank_to_tally.convert('statement.csv', output_file='tally_import.xml')
Enter fullscreen mode Exit fullscreen mode

The script accepts optional flags for custom ledger mappings and transaction types. It outputs a clean XML file ready for Tally Prime import.

Get the Script

Skip the build and get a working solution today. Download Bank Statement to Tally Importer →

$29 one-time. No subscription. Works on Windows, Mac, and Linux.

Built by OddShop — Python automation tools for developers and businesses.

Top comments (0)