Csv To Iif Converter Here
import csv import re from datetime import datetime from collections import defaultdict def parse_csv_to_transactions(csv_file, mapping): transactions = defaultdict(list) with open(csv_file, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: txn_id = row[mapping['group_key']] txn = 'date': reformat_date(row[mapping['date_col']]), 'memo': row[mapping['memo_col']], 'amount': float(row[mapping['amount_col']]), 'account': row[mapping['account_col']]
transactions[txn_id].append(txn) return transactions csv to iif converter
def generate_iif(transactions, output_file): with open(output_file, 'w', encoding='utf-16') as f: # IIF prefers UTF-16 f.write("!TRNS\tTRNSTYPE\tDATE\tACCNT\tAMOUNT\tMEMO\tNAME\n") f.write("!SPL\tTRNSTYPE\tDATE\tACCNT\tAMOUNT\tMEMO\t\n") import csv import re from datetime import datetime
converter: input_encoding: utf-8 output_encoding: utf-16 transaction_grouping: "Reference_Number" columns: - csv: "Posting Date" iif: "DATE" transform: "date_to_us" - csv: "Transaction Amount" iif: "AMOUNT" transform: "sign_by_account_type" - csv: "Bank Account" iif: "ACCNT" lookup: "bank_to_qb_accounts.csv" output_file): with open(output_file
"csv_columns": ["Date", "Description", "Amount", "Account"], "iif_targets": "DATE": "Date", "MEMO": "Description", "AMOUNT": "Amount", "ACCNT": "Account" , "transaction_group_key": ["Date", "Reference"]