Logo
Afbeelding

CAMT.053 | Uitleg & Converter

Geschreven door The Audit Analytics | 5 minuten

Wanneer je werkt met banktransacties, kom je al snel in aanraking met CAMT-bestanden. Deze standaard is al een tijdje bekend in Nederland en wordt nu ook de standaard in Europa. In dit artikel staan we stil bij wat deze bestanden zijn en delen we aan het einde een script, waarmee je een bestand zelf kan omzetten naar Excel.

CAMT bestanden

CAMT-bestanden zijn XML-rapportages die banken gebruiken om financiële mutaties en saldi door te geven. Denk aan je rekeningafschrift, maar dan in een gestandaardiseerd digitaal jasje. Het idee daarvan is dat software die bestanden makkelijker kan uitlezen en automatisch verwerken.

Verschillende versies

Er zijn verschillende “smaken” CAMT-bestanden die elk een ander doel dienen:

  • camt.052: Deze gaat vooral over intraday-transacties (tussenstanden gedurende de dag).

  • camt.053: Dit is je dagelijkse of periodieke rekeningafschrift.

  • camt.054: Geeft meldingen van individuele bij- en afschrijvingen (krediet- en debetnotificaties).

Ze lijken qua structuur behoorlijk op elkaar, maar de inhoud en timing verschillen. Over het algemeen is CAMT.053 (het “End-of-Day Statement”) het meest geschikt voor auditdoeleinden, omdat dit type een volledig overzicht van alle transacties en het eindsaldo voor een bepaalde periode (meestal per dag) biedt.

Hoewel CAMT.052 (intraday) en CAMT.054 (notificaties) ook nuttig kunnen zijn bij bijvoorbeeld het identificeren of traceren van transacties gedurende de dag, zijn deze berichten doorgaans minder geschikt als formele bron voor audits. Ze bieden immers geen ‘afgesloten’ periode‐overzicht, maar eerder (tussentijdse) statusrapporten of notificaties.

Welke banken gebruiken CAMT?

Veel Europese banken ondersteunen intussen CAMT-standaarden. In Nederland kun je denken aan banken als ING, Rabobank en ABN AMRO die het aanbieden als opvolger van de oude MT940-standaard. Ook in andere Europese landen zie je dat grootbanken steeds vaker CAMT-rapportages uitdelen. Het idee is een uniforme standaard, zodat bedrijven en accountants niet hoeven te puzzelen met telkens verschillende bestandsformaten.

Nadelen van batchdetails

Toch is niet alles rozengeur en maneschijn. Soms worden transacties in een batch verzameld. Een voorbeeld: als je een paar onlinebestellingen dezelfde dag doet via één partij, dan kunnen die betalingen gebundeld in je CAMT-bestand staan. Je ziet dan één totaalbedrag in plaats van meerdere losse transacties. Dat is dus wat minder handig als je precies wilt weten welke betalingen er allemaal in dat “gecombineerde” bedrag zitten.

Vaak als je dit soort batch-betalingen doet in de bank, moet hiervoor een SEPA-bestand importeren. Het is aan te raden om deze niet verwijderen; je kunt deze vaak namelijk nog wel achteraf koppelen met een CAMT-bestand, zodat je de details toch kunt inzien.

CAMT naar CSV of Excel

Wanneer je een CAMT-bestand opent, zul je daar niet direct veel van kunnen maken. Vandaar dat veel mensen zoeken naar een geschikte manier om dit om te zetten. Hieronder vind je een simpel Python-scripje. Het is niet supersonisch uitgebreid, maar het laat het principe zien. Je hebt dan nog wel wat XML-kennis nodig, vooral omdat CAMT-bestanden vaak namespaces hebben (zoals urn:iso:std:iso:20022:tech:xsd:camt.053.001.02). Je moet dus even checken welke namespace in jouw CAMT-file staat, en die hierop aanpassen.

import xml.etree.ElementTree as ET
import pandas as pd
import os

# --- Configuratie ---
# Plaats de naam van je CAMT.053 XML-bestand hier
xml_file = 'dummy_camt.053.xml'
# Gewenste naam voor je Excel-bestand
output_excel_file = 'camt_basis_output.xlsx'
# --- Einde Configuratie ---

# Namespace voor CAMT-bestanden
ns = {'camt': 'urn:iso:std:iso:20022:tech:xsd:camt.053.001.02'}

# Controleer of het XML-bestand bestaat
if not os.path.exists(xml_file):
    print(f"Error: Het bestand '{xml_file}' niet gevonden. Controleer de bestandsnaam en de map.")
else:
    # Parse het XML-bestand
    tree = ET.parse(xml_file)
    root = tree.getroot()

    # Lijst om transactiegegevens op te slaan
    transactions = []

    # Itereer door alle 'Entry' (transactie) elementen
    for entry in root.findall('.//camt:Ntry', ns):
        # Basisgegevens
        amount_element = entry.find('camt:Amt', ns)
        amount = float(amount_element.text) if amount_element is not None else 'N/A'

        credit_debit_element = entry.find('camt:CdtDbtInd', ns)
        credit_debit = credit_debit_element.text if credit_debit_element is not None else 'N/A'

        booking_date_element = entry.find('.//camt:BookgDt/camt:Dt', ns)
        booking_date = booking_date_element.text if booking_date_element is not None else 'N/A'

        val_date_element = entry.find('.//camt:ValDt/camt:Dt', ns)
        value_date = val_date_element.text if val_date_element is not None else 'N/A'

        addtl_info_element = entry.find('camt:AddtlNtryInf', ns)
        additional_info = addtl_info_element.text if addtl_info_element is not None else 'N/A'

        transactions.append({
            'Bedrag': amount,
            'Type': 'Credit' if credit_debit == 'CRDT' else 'Debet',
            'Boekingsdatum': booking_date,
            'Valutadatum': value_date,
            'Omschrijving': additional_info
        })

    # Maak een DataFrame en sla op als Excel
    if transactions:
        df = pd.DataFrame(transactions)
        df.to_excel(output_excel_file, index=False)
        print(f"Succes! {len(transactions)} transacties zijn geëxporteerd naar '{output_excel_file}'.")
    else:
        print("Geen transacties gevonden in het bestand.")

Klaar voor de volgende stap? Ontdek de volledige toolkit!

Dit starter-script geeft je een solide basis. Wil je het wat uitgebreider? Dan is de CAMT Analytics Toolkit de perfecte upgrade.

Waarom upgraden?

  • Completere Data-extractie: Haal niet alleen de basisgegevens op, maar ook belangrijke details zoals de naam en het rekeningnummer (IBAN) van de tegenpartij.
  • Maximale Betrouwbaarheid: De toolkit is ontworpen om met verschillende soorten CAMT-bestanden om te gaan. Ontbrekende gegevens? Geen probleem. Het script stopt niet onverwacht en zorgt voor een soepele verwerking.
  • Uitleg & Documentatie In de toolkit zit ook veel documentatie; bijvoorbeeld hoe je de betrouwbaarheid vaststelt en hoe het script precies werkt. Ook instructies over hoe je als beginner de scripts kunt draaien.
  • Extra analyses: De toolkit is meer dan alleen een conversiescript. Het bevat ook kant-en-klare scripts voor:
    • Dubbele Transactie Analyse: Vind en markeer direct potentiële dubbele betalingen.
    • Landen Analyse: Zie in één oogopslag naar welke landen je geld toe gaat.
  • Eenvoudig: Geen gedoe met code. De scripts zijn direct klaar voor gebruik.

Upgrade nu naar de volledige toolkit!