Statement To Tally Xml | Bank
The journey from a raw to Tally XML is a classic accounting automation story: identify structured data, map it to Tally’s internal format, generate XML, and import. Businesses that adopt this process save hours each month, reduce errors, and keep books always reconciled.
The process of importing bank statements to Tally XML is relatively straightforward. Users need to upload their bank statement in XML format, map the statement to their Tally account, and then import the data into Tally. The user interface is intuitive, and the instructions provided are clear. However, some users may face difficulties in obtaining the XML file from their bank, which could lead to frustration. bank statement to tally xml
| Tool | Input | Output | |------|-------|--------| | TallyPrime (in-built CoA import) | CSV | Tally XML | | AutoEntry / Dext | PDF/CSV | Tally XML | | Excel with VBA macro | Excel | Tally XML | | Python script (open source) | CSV/Excel | Tally XML | | Tally ERP 9 – ODBC connector | Database | Tally XML | The journey from a raw to Tally XML
Tally will not create a ledger automatically unless the XML specifically instructs it to. If your bank statement lists a vendor "Amazon Web Services" but your Tally only has "AWS," the import will fail or create an entry without a proper ledger. Users need to upload their bank statement in
Overall, the bank statement to Tally XML feature is a valuable addition to Tally's accounting software. While there may be some minor issues with usability and accuracy, the benefits of this feature far outweigh the drawbacks. With some further refinement and testing, this feature has the potential to become a robust and reliable tool for businesses to manage their bank statements.
with open('bank_statement.csv') as f: reader = csv.DictReader(f) for row in reader: voucher = ET.SubElement(msg, "VOUCHER") ET.SubElement(voucher, "DATE").text = row['Date'].replace('-','') if row['Debit']: ET.SubElement(voucher, "VOUCHERTYPENAME").text = "Payment" ET.SubElement(voucher, "AMOUNT").text = row['Debit'] else: ET.SubElement(voucher, "VOUCHERTYPENAME").text = "Receipt" ET.SubElement(voucher, "AMOUNT").text = row['Credit'] ET.SubElement(voucher, "NARRATION").text = row['Narration']
<ENVELOPE> <HEADER> <TALLYREQUEST>Import Data</TALLYREQUEST> </HEADER> <BODY> <IMPORTDATA> <REQUESTDESC> <REPORTNAME>Vouchers</REPORTNAME> </REQUESTDESC> <REQUESTDATA> <TALLYMESSAGE> <VOUCHER> <DATE>20250401</DATE> <VOUCHERTYPENAME>Bank Payment</VOUCHERTYPENAME> <PARTYNAME>Vendor A</PARTYNAME> <AMOUNT>5000.00</AMOUNT> <NARRATION>Rent payment</NARRATION> </VOUCHER> <!-- more vouchers --> </TALLYMESSAGE> </REQUESTDATA> </IMPORTDATA> </BODY> </ENVELOPE>