Aan de slag

Begin met het bouwen van veilige applicaties met Bankafschrift-parser

Vereisten

Installeren

pip install bankstatementparser

Voor Polars DataFrame-ondersteuning:

pip install bankstatementparser[polars]

Snelstart

Automatisch detecteren en elk formaat parsen

from bankstatementparser import create_parser, detect_statement_format

fmt = detect_statement_format("transactions.ofx")
parser = create_parser("transactions.ofx", fmt)
df = parser.parse()  # pandas DataFrame
print(df.head())

Dit werkt met .xml (CAMT/PAIN.001), .csv, .ofx, .qfx, .mt940 en .sta-bestanden.

CAMT.053 parsen

from bankstatementparser import CamtParser

parser = CamtParser("statement.xml")
transactions = parser.parse()

PAIN.001 parsen

from bankstatementparser import Pain001Parser

parser = Pain001Parser("payment.xml")
payments = parser.parse()

Grote bestanden streamen

Gebruik streaming voor bestanden met duizenden transacties om het geheugen beperkt te houden:

parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
    process(transaction)  # Geheugen blijft constant

In-memory parsing

Parseer vanuit bytes zonder schijf-I/O -- handig voor SFTP- of API-workflows:

xml_bytes = download_from_sftp()
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
transactions = parser.parse()

Parallelle bestandsverwerking

Parseer meerdere bestanden gelijktijdig:

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "statements/jan.xml",
    "statements/feb.xml",
    "statements/mar.xml",
])
for r in results:
    print(r.path, r.status, len(r.transactions), "rows")

Deduplicatie

Detecteer exacte duplicaten en vermoedelijke overeenkomsten met betrouwbaarheidsscores:

from bankstatementparser import CamtParser, Deduplicator

parser = CamtParser("statement.xml")
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(parser.parse()))

print(f"Unique: {len(result.unique_transactions)}")
print(f"Exact duplicates: {len(result.exact_duplicates)}")
print(f"Suspected matches: {len(result.suspected_matches)}")

Veilige ZIP-verwerking

Verwerk gezipte XML-bestanden met ingebouwde beveiligingscontroles (bombeveiliging, afwijzing van versleutelde bestanden):

from bankstatementparser import iter_secure_xml_entries, CamtParser

for entry in iter_secure_xml_entries("statements.zip"):
    parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
    print(f"{entry.source_name}: {len(parser.parse())} transactions")

Exporteren

parser = CamtParser("statement.xml")
parser.export_csv("output.csv")
parser.export_json("output.json")

# Polars (vereist bankstatementparser[polars])
polars_df = parser.to_polars()

CLI-gebruik

# Parsen en weergeven
python -m bankstatementparser.cli --type camt --input statement.xml

# Exporteren naar CSV
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv

# Streamen met zichtbare PII
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii

CLI-opties:

Lokale ontwikkelomgeving opzetten

git clone https://github.com/sebastienrousseau/bankstatementparser.git
cd bankstatementparser
python3 -m venv .venv && source .venv/bin/activate
pip install poetry && poetry install --with dev

De testsuite uitvoeren:

pytest

API-referentie

Parserklassen

Klasse Formaat Import
CamtParser CAMT.053 (ISO 20022) from bankstatementparser import CamtParser
Pain001Parser PAIN.001 (ISO 20022) from bankstatementparser import Pain001Parser
CsvStatementParser CSV from bankstatementparser import CsvStatementParser
OfxParser OFX from bankstatementparser import OfxParser
QfxParser QFX from bankstatementparser import QfxParser
Mt940Parser MT940 from bankstatementparser import Mt940Parser

Hulpfuncties

Functie Doel
detect_statement_format(path) Automatische formaatdetectie
create_parser(path, fmt) De juiste parser aanmaken
parse_files_parallel(paths) Meerdere bestanden gelijktijdig parsen
iter_secure_xml_entries(zip_path) ZIP-bestanden veilig itereren

Dataklassen

Klasse Doel
Deduplicator Detectie van dubbele transacties
DeduplicationResult Resultaat met unieke, exacte en vermoedelijke overeenkomsten
InputValidator Bestandspaden en formaten valideren
Transaction Genormaliseerd transactierecord
FileResult Resultaat van parallelle parsing
ZipXMLSource ZIP-lidwrapper

Uitzonderingen

Uitzondering Wanneer gegenereerd
ParserError Parseerfouten
ExportError Exportfouten (CSV/JSON/Excel)
ValidationError Invoervalidatiefouten
ZipSecurityError ZIP-beveiligingscontrolefouten