Logo
AfbeeldingThe AuditBuilder

CAMT.053 | Explanation & Converter

6 minutesAudit associateAudit data analystAudit lead
When you work with bank transactions, chances are you’ll run into CAMT files. They’re quickly becoming the go-to standard across Europe. In this article, we’ll walk you through what these files actually are, and at the end, you’ll get a handy script that lets you convert them to Excel or CSV in no time.

CAMT files

What is CAMT?

CAMT files are XML reports that banks use to transmit financial transactions and balances. Think of your bank statement, but in a standardized digital format. The idea is that software can more easily read these files and process them automatically.

Different Versions

There are different “flavors” of CAMT files, each serving a different purpose:

  • camt.052: Mainly covers intraday transactions (interim balances throughout the day).

  • camt.053: This is your daily or periodic bank statement.

  • camt.054: Provides notifications of individual credits and debits (credit and debit notifications).

They are quite similar in structure, but the content and timing differ. In general, CAMT.053 (the “End-of-Day Statement”) is the most suitable for audit purposes because this type provides a complete overview of all transactions and the ending balance for a specific period (usually daily).

While CAMT.052 (intraday) and CAMT.054 (notifications) can also be useful for identifying or tracking transactions throughout the day, these messages are generally less suitable as a formal source for audits. After all, they do not provide a ‘closed’ period overview but rather (interim) status reports or notifications.

Which Banks Use CAMT?

CAMT is part of the broader ISO 20022 standard: a global framework designed to streamline how financial data is exchanged. Because of this, more and more European banks are adopting CAMT as their main reporting format.

In the Netherlands, ING, Rabobank, and ABN AMRO already provide CAMT files as the modern successor to the older MT940 format. The same shift is happening across Europe: major banks in countries like Germany, Belgium, France, and the Nordics are increasingly distributing CAMT reports as their default option.

The goal is simple: one uniform, machine-readable standard that works across borders, so companies, accountants, and software systems no longer need to juggle multiple file formats.

Disadvantages of Batch Details

However, not everything is perfect. Sometimes transactions are grouped in a batch. For example, if you make several online purchases on the same day from one party, those payments may appear bundled in your CAMT file. You would then see one total amount instead of multiple individual transactions. This can be inconvenient if you want to know exactly which payments are included in that “combined” amount.

Often, when making such batch payments in the bank, a SEPA file must be imported (PAIN file). It is advisable not to delete this file; you can often still link it later with a CAMT file to view the details.

CAMT to CSV or Excel

When you open a CAMT file, it may not immediately make much sense. That’s why many people look for a suitable way to convert it. Below is a simple Python script. It’s not extremely sophisticated, but it demonstrates the principle. You will still need some XML knowledge, especially because CAMT files often have namespaces (such as urn:iso:std:iso:20022:tech:xsd:camt.053.001.02). You need to check which namespace is in your CAMT file and adjust accordingly.

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

# --- Configuration ---
# Enter the name of your CAMT.053 XML file here
xml_file = 'dummy_camt.053.xml'
# Desired name for your Excel file
output_excel_file = 'camt_basic_output.xlsx'
# --- End Configuration ---

# Namespace for CAMT files
ns = {'camt': 'urn:iso:std:iso:20022:tech:xsd:camt.053.001.02'}

# Check if the XML file exists
if not os.path.exists(xml_file):
    print(f"Error: The file '{xml_file}' was not found. Please check the filename and path.")
else:
    # Parse the XML file
    tree = ET.parse(xml_file)
    root = tree.getroot()

    # List to store transaction data
    transactions = []

    # Iterate through all 'Entry' (transaction) elements
    for entry in root.findall('.//camt:Ntry', ns):
        # Basic data
        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({
            'Amount': amount,
            'Type': 'Credit' if credit_debit == 'CRDT' else 'Debit',
            'Booking Date': booking_date,
            'Value Date': value_date,
            'Description': additional_info
        })

    # Create a DataFrame and save to Excel
    if transactions:
        df = pd.DataFrame(transactions)
        df.to_excel(output_excel_file, index=False)
        print(f"Success! {len(transactions)} transactions have been exported to '{output_excel_file}'.")
    else:
        print("No transactions found in the file.")

Key CAMT Fields to Review

Understanding the structure helps when you extend the script:

  • Statement Metadata (Stmt) – Includes the statement ID, creation date, account, and currency. This is what you reference when documenting the source.
  • Balances (Bal) – Holds opening, closing, and interim balances, each with an amount and timestamp. These need to tie back to the general ledger and bank confirmations.
  • Entries (Ntry) – The high-level transactions containing booking date, value date, amount, and credit/debit indicator. Batch payments often surface here as single large entries.
  • Entry Details (NtryDtlsTxDtls) – Drills down into counterparty names, IBAN/BIC, remittance information, and references. Some banks omit specific nodes, so parsers should handle missing fields gracefully.

Knowing where these data points live makes it easier to capture extra information like counterparty IBANs (RltdPties/RltdAcct/Id/IBAN) or remittance texts (RmtInf/Strd).

CAMT structure

How Auditors Typically Use CAMT

Auditors use CAMT files in several ways during their work. One of the most common is for bank reconciliations: the balance (Bal) sections and detailed transaction lists make it easy to check whether all cash movements are fully captured in the general ledger.

They’re also valuable for cut-off and completeness testing. By reviewing CAMT reports around period-end, you can confirm whether transactions are recorded in the correct accounting period.

And finally, CAMT files provide a rich level of detail. The structured data makes it easier to spot things like duplicate payments, transfers to unusual countries, round-amount transactions, or payments to new vendors.

Wrapping Up

CAMT files look dense at first, but once you know the key elements and have a basic converter, they become a rich, standardized data source. Start with the sample file, validate a few balances against the ledger, and then extend the script to pull the extra attributes that matter for your audit.

Help us improve The Audit Analytics

Was this article helpful?

Let us know if this page is useful so we can keep improving our library.

Reader sentimentNo feedback yet