Skip to content

ISO 20022 message

camt.053 format: bank-to-customer statement

camt.053 is the ISO 20022 end-of-day account statement: for each account, the opening and closing balances and every entry booked in the period, with the details banks need for automatic reconciliation (references, counterparties, remittance information, bank transaction codes). It replaces the SWIFT MT940 (and MT950 between banks).

camt.053 at a glance
Messagecamt.053, root element <BkToCstmrStmt>
NameBank-to-customer statement
SentBank → account owner
SWIFT MT counterpartMT940 / MT950
Read bycamt Statement Viewer

Who sends it, and when

The bank that holds the account (the account servicer) sends it to the account owner, once per business day, usually early the next morning. It travels over the bank’s file channels: host-to-host (SFTP), EBICS in Germany, France, Austria and Switzerland, SWIFT, or as a download from online banking. One file can carry statements for many accounts.

The structure of a camt.053

camt.053 · structure
Document
└─ BkToCstmrStmt
   ├─ GrpHdr               MsgId, CreDtTm, MsgPgntn
   └─ Stmt                 one per account and period
      ├─ Id, ElctrncSeqNb, LglSeqNb, CreDtTm, FrToDt
      ├─ Acct              Id (IBAN or Othr), Ccy, Ownr, Svcr
      ├─ Bal               one per type: OPBD, CLBD, CLAV, FWAV …
      ├─ TxsSummry         number and sum of entries
      └─ Ntry              one per booking
         ├─ Amt, CdtDbtInd, RvslInd, Sts, BookgDt, ValDt, AcctSvcrRef
         ├─ BkTxCd         Domn (Cd, Fmly/Cd, Fmly/SubFmlyCd), Prtry
         └─ NtryDtls
            ├─ Btch        a batch: MsgId, PmtInfId, NbOfTxs, TtlAmt
            └─ TxDtls      Refs, Amt, RltdPties, RltdAgts, RmtInf, RtrInf

Versions in use

Version .001.02, the 2009 schema, is still what many European banks send. Version .001.08, from 2019, is the one SWIFT’s cross-border rules (CBPR+) use and many banks have moved to; later versions exist. Between them, elements were added and a few restructured: a bank’s BIC is <BIC> in .001.02 and <BICFI> in later versions, and an entry status is a bare code up to .001.06 and <Sts><Cd> from .001.07. The viewer reads .001.02 to .001.13.

An annotated camt.053

An excerpt of the sample the viewer opens (fictitious companies, published test account numbers):

camt053-v08-statement.xml
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>STMT20261028NW001</MsgId>
      <CreDtTm>2026-10-29T06:15:00+00:00</CreDtTm>
      …
    </GrpHdr>
    <Stmt>
      <Id>GBP-301-20261028</Id>
      <ElctrncSeqNb>301</ElctrncSeqNb>
      …
      <Acct>
        <Id>
          <IBAN>GB29NWBK60161331926819</IBAN>
        </Id>
        <Ccy>GBP</Ccy>
        …
      </Acct>
      <Bal>
        <Tp>
          <CdOrPrtry>
            <Cd>OPBD</Cd>
          </CdOrPrtry>
        </Tp>
        <Amt Ccy="GBP">125430.50</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        …
      </Bal>
      …
      <Ntry>
        <Amt Ccy="GBP">12500.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>
          <Cd>BOOK</Cd>
        </Sts>
        …
        <AcctSvcrRef>NW261028000101</AcctSvcrRef>
        <BkTxCd>
          <Domn>
            <Cd>PMNT</Cd>
            <Fmly>
              <Cd>RCDT</Cd>
              <SubFmlyCd>DMCT</SubFmlyCd>
            </Fmly>
          </Domn>
        </BkTxCd>
        <NtryDtls>
          <TxDtls>
            <Refs>
              …
              <EndToEndId>INV-2026-1043</EndToEndId>
              …

“…” marks lines left out.

camt.053 sample, explained
In the fileWhat it says
camt.053.001.08The namespace says which message and version this is.
<ElctrncSeqNb>301The statement’s sequence number: a gap means a missing statement.
<Cd>OPBD</Cd> … 125430.50 CRDTOpening booked balance: a credit balance of 125,430.50 GBP. Amounts are never negative; CdtDbtInd gives the sign.
12500.00 CRDT … BOOKA booked credit of 12,500.00 GBP: it counts toward the closing balance.
PMNT / RCDT / DMCTBank transaction code: a received domestic credit transfer.
<EndToEndId>INV-2026-1043The payer’s reference, carried unchanged from their payment: the key for matching the invoice.

Open this sample in the camt Statement Viewer

Common validation errors

What most often goes wrong in a camt.053, and the rule that reports it in the viewer and the API:

  • camt.balance.roll-forward (Balances do not roll forward): The opening booked balance plus the booked entries does not give the closing booked balance: an entry is missing, duplicated or has the wrong sign.
  • camt.summary.sum (Transaction summary sum differs): TxsSummry totals disagree with the entries.
  • camt.balance.missing (Booked balance missing): No opening (OPBD or PRCD) or closing (CLBD) booked balance.
  • camt.entry.booking-date (Booked entry without booking date): A booked entry without a booking date.
  • ccy.decimals (Too many decimals for the currency): An amount with more decimals than its currency allows (JPY has none).
  • iban.invalid (Invalid IBAN): An account or counterparty IBAN that fails its check digits.

Check a camt.053 from a script or an AI agent

Scripts and AI agents can do the same without a browser: POST /api/v1/validate or the MCP tool validate_payment_file returns every issue with its rule id, severity, line and path, and whether the file is valid. No key is needed, and the file is processed in memory and never stored (API and MCP docs).

REST · curl
curl -s --data-binary @camt053-v08-statement.xml https://iso20022-navigator.com/api/v1/validate
MCP · tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "validate_payment_file",
    "arguments": {
      "content": "<the file text>"
    }
  }
}