Skip to content
stmtai

Explainer

camt.053 bank statements: the ISO 20022 format

camt.053 is the ISO 20022 XML statement replacing MT940. What GrpHdr, Bal, Ntry and TxDtls hold, how it maps to MT940 tags, and where the migration stands.

8 min read · Last reviewed · by the stmtai team

camt.053 is the ISO 20022 XML message a bank sends to an account holder as an end-of-day statement. It is the structured replacement for the MT940 tagged-text format and it is delivered the same way: through corporate banking portals, host-to-host links and SFTP, to the treasury systems and ERPs of companies large enough to have an electronic reporting agreement with their bank. Most small businesses will never see one, though in Switzerland, the Netherlands, Germany and the Nordics business online banking often offers a camt.053 download alongside CSV and PDF. If someone has sent you an XML file whose first real element is BkToCstmrStmt, this guide explains what is in it, how it relates to MT940, and what to do when your software cannot read it.

The camt family

ISO 20022 is a catalogue of financial messages defined as XML schemas. Each message has a name made of a business area, a number and a version. The cash management area is camt, and three of its messages report on accounts:

MessageNamePurpose
camt.052BankToCustomerAccountReportIntraday report. Transactions booked so far today, sent one or more times during the day. Replaces MT941 and MT942.
camt.053BankToCustomerStatementEnd-of-day statement. Opening balance, every booked entry, closing balance. Replaces MT940.
camt.054BankToCustomerDebitCreditNotificationNotification of individual credits or debits, often used to deliver the detail behind a batch entry on the statement. Replaces MT900 and MT910.

The full identifier includes the version. camt.053.001.02 is what most European banks first implemented during the SEPA rollout, and camt.053.001.08 is the version adopted for the SWIFT cross-border migration and by many banks that have refreshed their reporting since. Later versions exist. The overall structure is the same across all of them, but element shapes differ in places: in .02 the entry status is a bare Sts element holding BOOK and a party is Cdtr with Nm directly inside, while .08 nests them as Sts/Cd and Cdtr/Pty/Nm. The sample below uses .08.

What a file looks like

A trimmed statement with one debit entry:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>STMT260630001</MsgId>
      <CreDtTm>2026-06-30T23:15:00</CreDtTm>
    </GrpHdr>
    <Stmt>
      <Id>00126</Id>
      <ElctrncSeqNb>126</ElctrncSeqNb>
      <CreDtTm>2026-06-30T23:15:00</CreDtTm>
      <Acct><Id><IBAN>GB29NWBK60161331926819</IBAN></Id><Ccy>GBP</Ccy></Acct>
      <Bal>
        <Tp><CdOrPrtry><Cd>OPBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="GBP">14250.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-06-29</Dt></Dt>
      </Bal>
      <Bal>
        <Tp><CdOrPrtry><Cd>CLBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="GBP">13050.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Dt><Dt>2026-06-30</Dt></Dt>
      </Bal>
      <Ntry>
        <Amt Ccy="GBP">1200.00</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <Sts><Cd>BOOK</Cd></Sts>
        <BookgDt><Dt>2026-06-30</Dt></BookgDt>
        <ValDt><Dt>2026-06-30</Dt></ValDt>
        <AcctSvcrRef>BANKREF001</AcctSvcrRef>
        <BkTxCd><Domn><Cd>PMNT</Cd><Fmly><Cd>ICDT</Cd><SubFmlyCd>ESCT</SubFmlyCd></Fmly></Domn></BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs><EndToEndId>INV4471</EndToEndId></Refs>
            <RltdPties><Cdtr><Pty><Nm>Acme Supplies Ltd</Nm></Pty></Cdtr></RltdPties>
            <RmtInf><Ustrd>Invoice 4471</Ustrd></RmtInf>
          </TxDtls>
        </NtryDtls>
      </Ntry>
    </Stmt>
  </BkToCstmrStmt>
</Document>

Element names are abbreviated the same way throughout ISO 20022: vowels dropped, so Statement becomes Stmt, Entry becomes Ntry, Creditor becomes Cdtr and Remittance Information becomes RmtInf. Once you know the pattern you can read most of a file cold.

The structure

GrpHdr: group header

One per file. MsgId is the bank's unique reference for this message and CreDtTm is when it was generated. A copy or duplicate is meant to be flagged with CpyDplctInd on the Stmt (COPY, DUPL or CODU), although some banks simply resend with the same MsgId.

Stmt: the statement

One per account per period. A single file can hold several Stmt blocks for several accounts. Inside sit Id and ElctrncSeqNb (the statement number, which increments each banking day), an optional FrToDt for the period, Acct with the IBAN or other account identifier and its currency, and then the balances and entries.

Bal: balances

Each Bal has a type code, an amount with its currency, a credit or debit indicator and a date. The codes you will see:

CodeMeaning
OPBDOpening booked. The balance at the start of the period, which should equal the previous day's CLBD.
CLBDClosing booked. The balance at the end of the period.
OPAV and CLAVOpening and closing available: the funds actually at the account owner's disposal on that date, which can differ from the booked balance because of uncleared credits, holds or an agreed credit line.
ITBD and ITAVInterim booked and available, used in camt.052 intraday reports.
FWAVForward available, the expected available balance on a future date.
PRCDPreviously closed booked. Some banks send this instead of, or as well as, OPBD.

CdtDbtInd is CRDT for a positive balance and DBIT for an overdrawn one. The amount itself is never signed.

Ntry: entries

One Ntry per booked movement on the account. Amt and CdtDbtInd give the amount and direction. Sts is BOOK for a booked entry; camt.052 can also carry PDNG for pending, and newer versions add INFO and FUTR, though national guidelines usually keep camt.053 to booked entries only. BookgDt and ValDt are the booking and value dates. AcctSvcrRef is the bank's own reference. An entry can be a single payment or a batch: a payroll run or a direct debit collection arrives as one Ntry for the total.

NtryDtls and TxDtls: the transactions inside an entry

NtryDtls holds the breakdown. For a single payment there is one TxDtls. For a batch there can be hundreds, each with its own references, parties and amount, or the bank may send only a Btch element with the count and total and deliver the detail separately in camt.054. Inside TxDtls, Refs carries the identifiers (EndToEndId set by the payer, InstrId, TxId, and MndtId for a direct debit mandate), RltdPties names the debtor and creditor with their accounts, RltdAgts names their banks, and AmtDtls gives the original amount and exchange rate when a currency conversion happened.

RmtInf: remittance information

What the payer wrote on the payment. Ustrd is unstructured text, up to 140 characters per occurrence. Strd is the structured form with invoice numbers, amounts and creditor references in their own fields, which is what makes automatic invoice matching work when the payer's software fills it in.

BkTxCd: bank transaction codes

Every Ntry carries a BkTxCd with a three-level ISO code and, usually, the bank's proprietary code alongside it under Prtry. The three levels are Domn (domain), Fmly (family) and SubFmlyCd (sub-family):

LevelExamples
DomnPMNT payments, ACMT account management, CAMT cash management, SECU securities, FORX foreign exchange, LDAS loans and deposits
Fmly under PMNTICDT issued credit transfers, RCDT received credit transfers, IDDT issued direct debits, RDDT received direct debits, CCRD customer card transactions, MCRD merchant card transactions
SubFmlyCdESCT SEPA credit transfer, DMCT domestic credit transfer, XBCT cross-border credit transfer, STDO standing order, SALA salary, CHRG charges, INTR interest, POSD point-of-sale debit card payment, CWDL cash withdrawal

ISO publishes the full list, several hundred combinations, as an external code set. The point of the scheme is that PMNT/RCDT/ESCT means the same thing from every bank, where how banks populate MT940's :61: type codes and lay out :86: differs from one bank to the next. In practice banks populate the ISO code with varying care, so reconciliation software matches on the proprietary code as a fallback.

camt.053 and MT940

The two carry the same statement. Field for field:

MT940camt.053
:20:GrpHdr/MsgId
:25:Stmt/Acct/Id
:28C:Stmt/ElctrncSeqNb and LglSeqNb
:60F:Bal with Cd OPBD
:61:Ntry: Amt, CdtDbtInd, BookgDt, ValDt, BkTxCd, AcctSvcrRef
:86:NtryDtls/TxDtls: RltdPties, Refs, RmtInf
:62F:Bal with Cd CLBD
:64:Bal with Cd CLAV
:65:Bal with Cd FWAV

The gain is that camt.053 gives the counterparty, the references and the remittance text their own elements with defined lengths, where MT940 packs all of it into six lines of :86: in a layout each bank chooses. The MT940 guide shows what that looks like from the other side. The cost is size: a camt.053 file is several times the bytes of the equivalent MT940.

Migration status

SWIFT's coexistence period for cross-border interbank payment messages ended in November 2025, and interbank payment instructions over SWIFT are now ISO 20022 only. Bank-to-customer statement reporting was never on that deadline. SWIFT has a later end date for the interbank MT 940, 942 and 950 messages, currently planned for November 2028, but that governs bank-to-bank traffic. For the statements a bank sends its own customers, each bank decides when, and whether, to stop sending MT940.

As of September 2026 the picture is mixed. Most European corporate banks have offered camt.053 for years and some have told customers when their MT940 reporting will end; elsewhere camt.053 is usually available on request while MT940 continues. ERP vendors have kept pace: SAP, Oracle and Microsoft Dynamics 365 import camt.053, and Business Central added camt.053.001.08 in its 2025 release cycle. If your company relies on an MT940 feed, ask your bank for its written timetable and test camt.053 in parallel before you need it.

Who receives camt.053

Corporate treasury teams reconciling many accounts across several banks. Finance departments running SAP, Oracle or Dynamics with bank statement import configured. Payment providers that hold accounts at partner banks and reconcile settlement. In every case the file travels machine to machine, and the finance staff see the result in a reconciliation screen rather than the XML.

If you have a camt.053 file and need the transactions

Use the system the file was meant for, if it exists. If a treasury or ERP system requested the feed, its bank reconciliation module is the right place to import it, and it will handle batch entries and camt.054 detail properly.

Otherwise, go back to the same account through a different door. The bank that generates camt.053 also produces a PDF statement and a CSV export for the same account, with the same opening and closing balances. stmtai does not read camt.053, and it does not read MT940 either. It takes PDF statements, scanned images and CSV, QIF and OFX exports, checks them against the opening and closing balances the statement prints, and writes Excel, CSV, QuickBooks .qbo or Xero CSV. For a bookkeeper who needs the month's transactions in a spreadsheet or an accounting package, the PDF of the account is the better source anyway: it is readable, the balances are in plain sight, and converting it to Excel takes a few minutes.

Questions

What is the difference between camt.053 and camt.054?

camt.053 is the statement: balances plus every entry booked in the period. camt.054 is a notification about specific credits or debits, sent without balances, and banks use it to carry the individual payments behind a batch entry that appears as one line on the camt.053. If your statement shows a payroll as a single debit, the camt.054 for that day lists each employee payment.

Why does my camt.053 show one entry for forty separate payments?

Because the bank booked them as a batch. A bulk payment file or a direct debit collection posts to the account as one Ntry for the total, and the individual transactions live inside NtryDtls as separate TxDtls elements, or in a camt.054 sent alongside. Reconciliation software that only reads the Ntry level will show the batch total and nothing else.

Does Xero or QuickBooks import camt.053?

Neither imports it natively. QuickBooks Online accepts QBO, QFX, OFX and CSV uploads; Xero accepts CSV, OFX, QIF, QBO and QFX depending on region. Third-party tools exist that convert camt.053 to OFX or CSV for either, but the practical route is the CSV or OFX export from the same bank account, or a converted PDF statement.

The dates in the file are in the future. Is it corrupt?

Probably not. Check whether you are looking at ValDt or BookgDt. The value date can fall after the booking date for some payment types, and FWAV balances are by definition dated ahead. A CreDtTm slightly after midnight on the following day is also normal, since banks generate end-of-day files after the books close.

Can I open a camt.053 file in Excel?

Excel will load it through Data, From XML, but the nested NtryDtls and TxDtls elements flatten into repeated columns and a batch entry with many transactions spreads across dozens of rows with blanks. You will spend longer cleaning the result than converting the PDF statement of the same account would take. A text editor is the quicker way to read one or two entries.

Can camt.053 carry more than one currency?

Each Stmt block reports one account in one currency, usually given in Acct/Ccy (the element is optional, so not every bank fills it), and every Amt inside carries its own Ccy attribute which should match. Multi-currency arrangements arrive as separate Stmt blocks, one per currency account, sometimes in the same file. A conversion that happened on a single payment is recorded in AmtDtls with the original currency and the exchange rate.

Related guides

All guides · All banks and formats