Guides · File formats

camt.053 format explained: every XML element, with a real example

Updated November 8, 2026 · 10 min read · By the Utilly team

A camt.053 file is a bank statement written as ISO 20022 XML: <GrpHdr>, <Stmt>, <Acct>, <Bal>, <Ntry>. This page explains every element you'll need to read one, takes a real entry apart tag by tag, and shows how the balances prove the file is complete. The examples come from Utilly's fictional camt.053 sample (the same Dutch business account in euros as our MT940 sample), so you can open the file and follow along.

Short answer: camt.053 is the ISO 20022 bank-to-customer statement. Inside <Document><BkToCstmrStmt> there is one GrpHdr (message ID and creation time) and one or more Stmt elements. Each statement names the account in Acct/Id (IBAN or other ID, plus currency), gives balances in Bal (OPBD opening booked, CLBD closing booked) and lists one Ntry per booking: an unsigned Amt with CdtDbtInd CRDT (money in) or DBIT (money out), a status, a BookgDt and ValDt, and NtryDtls/TxDtls with the counterparty, references and remittance text. Dates are ISO (2026-10-01), amounts use a decimal point. Opening booked balance plus the entries must equal the closing booked balance.

Open a real camt.053 file

Utilly's fictional camt.053 sample has two statements and 13 entries, including a card payment, bank fees, a salary payment booked a day after its value date and a reversed direct debit (RvslInd). Download it to read the XML, or open it in the converter to see every entry as a spreadsheet row with the balance check done.

1. What a camt.053 file looks like

This is the start of the sample file, cut after the first entry. A camt.053 is an XML document: every value sits between an opening and closing tag, and the tags nest from the message down to a single booking.

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08">
  <BkToCstmrStmt>
    <GrpHdr><MsgId>EX2610-STMT</MsgId><CreDtTm>2026-10-31T18:00:00</CreDtTm></GrpHdr>
    <Stmt>
      <Id>EX2610A</Id>
      <ElctrncSeqNb>10</ElctrncSeqNb>
      <CreDtTm>2026-10-15T18:00:00</CreDtTm>
      <FrToDt><FrDtTm>2026-10-01T00:00:00</FrDtTm><ToDtTm>2026-10-15T23:59:59</ToDtTm></FrToDt>
      <Acct><Id><IBAN>NL00EXMP0123456789</IBAN></Id><Ccy>EUR</Ccy>
        <Svcr><FinInstnId><BICFI>EXMPNL2A</BICFI></FinInstnId></Svcr></Acct>
      <Bal><Tp><CdOrPrtry><Cd>OPBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="EUR">8412.65</Amt><CdtDbtInd>CRDT</CdtDbtInd><Dt><Dt>2026-10-01</Dt></Dt></Bal>
      <Ntry>
        <Amt Ccy="EUR">1850.00</Amt>
        <CdtDbtInd>DBIT</CdtDbtInd>
        <Sts>BOOK</Sts>
        <BookgDt><Dt>2026-10-01</Dt></BookgDt>
        <ValDt><Dt>2026-10-01</Dt></ValDt>
        <AcctSvcrRef>EX26100100001</AcctSvcrRef>
        <NtryDtls><TxDtls>
          <Refs><EndToEndId>NOTPROVIDED</EndToEndId><AcctSvcrRef>EX26100100001</AcctSvcrRef></Refs>
          <RltdPties><Cdtr><Nm>Voorbeeld Vastgoed BV</Nm></Cdtr></RltdPties>
          <RmtInf><Ustrd>Huur kantoor oktober 2026</Ustrd></RmtInf>
        </TxDtls></NtryDtls>
      </Ntry>
      …
      <Bal><Tp><CdOrPrtry><Cd>CLBD</Cd></CdOrPrtry></Tp>
        <Amt Ccy="EUR">9480.61</Amt><CdtDbtInd>CRDT</CdtDbtInd><Dt><Dt>2026-10-15</Dt></Dt></Bal>
    </Stmt>
    <Stmt>…</Stmt>
  </BkToCstmrStmt>
</Document>

The tag names are short abbreviations of the ISO 20022 element names: BkToCstmrStmt is BankToCustomerStatement, Ntry is Entry, CdtDbtInd is CreditDebitIndicator, BookgDt is BookingDate. The file itself is plain UTF-8 XML, normally with a .xml extension; some banks deliver several statements zipped together. Our sample writes two elements in their shorter, older-version shapes for readability (<Sts>BOOK</Sts> and <Cdtr><Nm>); see versions for the version 08 shapes.

2. Every main camt.053 element

These are the elements you need to read a statement, in the order they appear. Paths are relative to the element above them.

ElementISO nameWhat it holdsIn the sample
Document/BkToCstmrStmtBankToCustomerStatementThe message itself. The xmlns namespace on Document says it's camt.053 and which versioncamt.053.001.08
GrpHdrGroupHeaderOnce per file: MsgId (the bank's message ID), CreDtTm (when the file was created), sometimes MsgPgntn (page number and last-page indicator when a message is split)EX2610-STMT, 2026-10-31T18:00:00
StmtStatementOne statement for one account and period. Repeats: a file can hold several days or several accounts. Has Id, often ElctrncSeqNb (electronic sequence number) or LglSeqNb, CreDtTm and FrToDt (period from/to)2 statements: EX2610A (1–15 October) and EX2610B (16–31 October)
Acct/IdAccount / IdentificationThe account: IBAN, or Othr/Id for a non-IBAN account number. Acct/Ccy is the account currency and Acct/Svcr the bank (BIC)NL00EXMP0123456789, EUR, EXMPNL2A
BalBalanceRepeats per balance type. Tp/CdOrPrtry/Cd is the type (OPBD, PRCD, CLBD, CLAV…), then Amt with a Ccy attribute, CdtDbtInd and Dt. See balancesOPBD 8412.65 CRDT; CLBD 9480.61 CRDT
TxsSummryTransactionsSummaryOptional counts and totals of the entries (for example TtlCdtNtries, TtlDbtNtries)Not used
NtryEntryOne booking on the account. Repeats; a statement with no bookings has none. See the entry, tag by tag7 + 6 entries
Ntry/Amt + CdtDbtIndAmount, CreditDebitIndicatorThe booked amount, always unsigned, with the currency in the Ccy attribute. CRDT = credit, money in; DBIT = debit, money out<Amt Ccy="EUR">1850.00</Amt> DBIT
Ntry/RvslIndReversalIndicatorPresent and true when the entry reverses an earlier one. CdtDbtInd still gives the direction of this booking: CRDT with RvslInd true means a debit was reversedThe 129.99 energy direct debit, reversed on 2026-10-30
Ntry/StsStatusBOOK (booked) in a statement; PDNG (pending) mainly in camt.052 intraday reports. Newer versions also define INFO and FUTRBOOK
Ntry/BookgDt, Ntry/ValDtBookingDate, ValueDateEach wraps a Dt (date) or DtTm (date and time). Booking date: when the bank posted the entry. Value date: when the money counts for interest and availabilityThe salary payment: booked 2026-10-20, value date 2026-10-19
Ntry/AcctSvcrRefAccountServicerReferenceThe bank's own reference for the entry; NtryRef is another optional entry referenceEX26100100001
Ntry/BkTxCdBankTransactionCodeWhat kind of booking it is: Domn/Cd, Fmly/Cd, SubFmlyCd (for example PMNT / RCDT / ESCT, a received SEPA credit transfer), or a bank's Prtry code. The camt equivalent of MT940's NTRF-style type codesNot used
Ntry/NtryDtls/TxDtlsEntryDetails / TransactionDetailsThe underlying payment(s): Refs, AmtDtls, RltdPties, RmtInf, AddtlTxInf. See entry detailsOne TxDtls per entry
Ntry/AddtlNtryInfAdditionalEntryInformationFree text about the entry, often all there is for card payments and feesBEA Betaalpas Kantoorhandel Centrum Amsterdam 05.10.26

Two things trip people up, as with MT940. First, amounts are never negative: <Amt Ccy="EUR">1850.00</Amt> with DBIT is money out, and an overdrawn balance is a Bal with DBIT. Second, the Ccy attribute carries the currency on every amount; the decimal separator is always a point.

3. An entry (Ntry) tag by tag

Taking apart the first entry of the sample's second statement, a salary payment:

<Ntry>
  <Amt Ccy="EUR">2210.00</Amt>
  <CdtDbtInd>DBIT</CdtDbtInd>
  <Sts>BOOK</Sts>
  <BookgDt><Dt>2026-10-20</Dt></BookgDt>
  <ValDt><Dt>2026-10-19</Dt></ValDt>
  <AcctSvcrRef>EX26101900009</AcctSvcrRef>
  <NtryDtls><TxDtls>
    <Refs><EndToEndId>NOTPROVIDED</EndToEndId><AcctSvcrRef>EX26101900009</AcctSvcrRef></Refs>
    <RltdPties><Cdtr><Nm>M. de Vries</Nm></Cdtr></RltdPties>
    <RmtInf><Ustrd>Salaris oktober 2026</Ustrd></RmtInf>
  </TxDtls></NtryDtls>
</Ntry>
ElementValueMeaning
Amt2210.00, Ccy="EUR"2,210.00 euros, unsigned
CdtDbtIndDBITMoney out, so −2,210.00 in a spreadsheet
StsBOOKBooked; counts toward the balances
BookgDt/Dt2026-10-20Posted on October 20. This is the date your bank app and most bookkeeping imports show
ValDt/Dt2026-10-19Value date a day earlier: the money stopped earning interest on the 19th
AcctSvcrRefEX26101900009The bank's reference
Refs/EndToEndIdNOTPROVIDEDThe payer's end-to-end reference; NOTPROVIDED is the placeholder when the payment had none
RltdPties/Cdtr/NmM. de VriesThe creditor, who received the money. On money coming in, look at Dbtr (the payer) instead
RmtInf/UstrdSalaris oktober 2026Unstructured remittance information: the payment description. RmtInf/Strd holds structured references such as CdtrRefInf/Ref instead

Booking date versus value date matters when you reconcile: match against your bank app and books on the booking date; interest and value-dated balances follow the value date. Utilly uses BookgDt, and ValDt only when there's no booking date, so this entry becomes:

Date,Description,Reference,Amount,Balance
2026-10-20,M. de Vries - Salaris oktober 2026,EX26101900009,-2210.00,10420.61

The reference column takes the EndToEndId when there is a real one and falls back to the bank's AcctSvcrRef when it says NOTPROVIDED.

4. Entry details, batches and TxDtls

An Ntry is what was booked on the account; NtryDtls/TxDtls describes the payment or payments behind it. Usually there's one TxDtls per entry, as in the sample. A batch, such as a payroll run or a direct debit collection, can be booked as one Ntry for the total with one TxDtls per payment, each with its own amount (in AmtDtls/TxAmt/Amt or Amt), counterparty and remittance text. Some banks send only the total, with NtryDtls/Btch giving the number of transactions and no per-payment detail.

Inside TxDtlsWhat it holds
RefsEndToEndId, TxId, InstrId, MndtId (direct debit mandate), AcctSvcrRef, ChqNb (cheque number)
RltdPtiesDbtr and Cdtr (payer and payee), DbtrAcct/CdtrAcct (their accounts), UltmtDbtr/UltmtCdtr
RmtInfUstrd free text, or Strd structured references (invoice number, creditor reference)
AddtlTxInfExtra free text about this payment

Splitting a batch into its details is only safe when the details add up to what was booked. Utilly expands a batch into one row per TxDtls only when every detail has its own amount and those amounts add up to the booked Ntry amount; otherwise the entry stays one row with the booked total, so the statement still ties.

5. Balances and the balance check

Each Bal has a type code in Tp/CdOrPrtry/Cd. The ones that matter for a statement:

CodeMeaningHow Utilly uses it
OPBDOpening booked balance: the balance at the start of the periodStarting balance for the check and the running Balance column
PRCDPreviously closed booked balance: the closing balance of the previous statement, which some banks send instead of OPBDStarting balance when there's no OPBD before it
CLBDClosing booked balance: the balance at the end of the periodWhat opening + entries must equal
ITBD, OPAV, ITAV, CLAV, FWAVInterim booked, and opening, interim, closing and forward available balancesNot part of the check (available balances include funds not yet released)

A balance's CdtDbtInd works like an entry's: CRDT is a positive balance, DBIT an overdrawn one. For the sample's two statements:

OPBD opening booked balance, Oct 18,412.65
+ CRDT entries (2: 2,420.00 + 1,180.50)3,600.50
− DBIT entries (5: 1,850.00 + 64.35 + 129.99 + 450.00 + 38.20)2,532.54
CLBD closing booked balance, Oct 159,480.61
OPBD opening booked balance of statement 2, Oct 169,480.61
+ CRDT entries, including the reversal (3,150.00 + 875.00 + 129.99)4,154.99
− DBIT entries (2,210.00 + 15.75 + 312.40)2,538.15
CLBD closing booked balance, Oct 3111,097.45

The same check, one line per statement, as the converter preview shows it:

StatementOpeningEntriesClosing (CLBD)Ties?
1–15 October 2026 (7 entries)8,412.65+1,067.969,480.61Yes
16–31 October 2026 (6 entries)9,480.61+1,616.8411,097.45Yes

Each statement's CLBD should also be the next statement's opening, as 9,480.61 is here. When a statement doesn't tie, the usual causes are a reversal read the wrong way round (the sample's 129.99 reversal is CRDT, money back in), pending entries counted as booked, a message split over pages (GrpHdr/MsgPgntn) where only some pages were exported, or a camt.052/054 file that never had opening and closing booked balances. Pending (PDNG) entries are skipped when Utilly reads a file.

6. Versions, namespaces and the XSD

The message name is camt.053.001.NN: business area (camt = cash management), message number 053, variant 001, version NN. The version is in the namespace on Document, for example urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 or …camt.053.001.08. The XSD schema for each version is published in the ISO 20022 message catalogue, and banks publish their own implementation guides on top of it.

  • camt.053.001.02 is the version most European banks first implemented for SEPA, and many still send it.
  • camt.053.001.08 is the version used for the SWIFT cross-border (CBPR+) migration and by banks that have updated their reporting; later versions exist.
  • The structure is the same across versions, but a few shapes change. In version 02 the status is <Sts>BOOK</Sts> and a party's name sits directly in <Cdtr><Nm>; in version 08 they're <Sts><Cd>BOOK</Cd></Sts> and <Cdtr><Pty><Nm>.

Utilly matches elements by their local name, so it reads both shapes and the versions from 001.02 to 001.08 (and later ones that keep these element names), with or without a namespace prefix.

7. camt.053 vs MT940, camt.052 and camt.054

FormatWhat it isHow it differs from camt.053
camt.053ISO 20022 bank-to-customer statement (BkToCstmrStmt): booked entries for a day or period, with opening and closing booked balances—
MT940SWIFT customer statement in tagged text linesSame content, older format: :60F:/:62F: for OPBD/CLBD, :61: for Ntry, and everything about the counterparty squeezed into :86: (6 lines of 65 characters). Explained on MT940 format
camt.052Bank-to-customer account report (BkToCstmrAcctRpt, one Rpt per account), often sent during the dayThe intraday counterpart, like MT942: can include pending entries and often lacks a closing booked balance, so it can't always be balance-checked
camt.054Bank-to-customer debit/credit notification (BkToCstmrDbtCdtNtfctn, one Ntfctn per account)Reports individual bookings or batch details as they happen, usually without balances. Often used next to camt.053 to get the detail of batch bookings

All three camt messages use the same Ntry structure, which is why a reader built for camt.053 can usually read the entries of a camt.052 or camt.054 too.

8. How to open or convert a camt.053 file

A camt.053 is XML, so a text editor or browser opens it, which is fine for checking one entry. Excel doesn't turn it into a transaction list: opening it shows tags or a flattened XML table. Accounting systems import it through their own bank-statement functions; in SAP ERP and S/4HANA, for example, camt.053 (formats CAMT.053.001.02 and .001.08) is imported with the electronic bank statement transaction FF_5, using an XML format mapping.

To get a spreadsheet, CAMT.053 to CSV turns every booked Ntry into a row with the booking date, the counterparty name and remittance text, a reference and a signed amount (CRDT positive, DBIT negative). It checks every statement from OPBD/PRCD to CLBD as above and adds a running balance only when they all tie. The sample's first entry comes out as:

Date,Description,Reference,Amount,Balance
2026-10-01,Voorbeeld Vastgoed BV - Huur kantoor oktober 2026,EX26100100001,-1850.00,6562.65

The same preview also downloads OFX, QuickBooks .QBO or .IIF and Quicken .QIF, keeping the euro currency. Upload the .xml file as it came from the bank. What it doesn't do: Utilly reads camt.053 (and camt.052/054 files that list the same Ntry entries); it doesn't write camt XML or MT940, it skips pending entries, and it refuses XML with a DOCTYPE or ENTITY declaration for safety.

Sources, checked November 8, 2026: the ISO 20022 BankToCustomerStatement (camt.053.001.08) message definition as republished in bank and scheme implementation guides (Payments Canada's camt.053.001.08 usage guide and Sparbanken Syd's camt.053.001.08 message implementation guide), and SAP knowledge base articles 2589350 and 3628861 on importing CAMT.053.001.02 and .001.08 with FF_5. Element names are as published; the explanations and the sample file are ours.

FAQ

What is the camt.053 format?

camt.053 is the ISO 20022 bank-to-customer statement: an end-of-day or period bank statement written as XML. The root is Document/BkToCstmrStmt, with a group header (GrpHdr) and one or more statements (Stmt). Each statement names the account (Acct), gives balances (Bal, such as OPBD opening booked and CLBD closing booked) and lists one Ntry element per booking with its amount, CRDT or DBIT, booking and value dates, and details such as the counterparty and remittance text.

What is the difference between camt.053 and MT940?

Both are end-of-day bank statements with an opening balance, bookings and a closing balance. MT940 is the older SWIFT text format with tagged lines (:60F:, :61:, :86:, :62F:) and a 6 x 65 character description. camt.053 is ISO 20022 XML: every piece of information has its own element (counterparty name, IBAN, end-to-end reference, structured or unstructured remittance), so nothing has to be parsed out of free text.

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

camt.053 is the booked statement for a day or period, with opening and closing booked balances. camt.052 is the account report, typically sent during the day, and can include pending entries. camt.054 is a debit or credit notification about individual bookings or batches, usually with no balances. All three use the same Ntry entry structure.

What file extension does a camt.053 file have?

camt.053 is XML, so the file is normally a .xml file. Some banks put several statements in a ZIP archive or use their own naming, but the content starts with an XML declaration and a Document element whose namespace names the message and version, for example urn:iso:std:iso:20022:tech:xsd:camt.053.001.08.

What do OPBD, PRCD and CLBD mean in camt.053?

They are balance type codes in Bal/Tp/CdOrPrtry/Cd. OPBD is the opening booked balance, PRCD the previously closed booked balance (some banks send it instead of OPBD as the starting balance), and CLBD the closing booked balance. Opening booked balance plus all booked entries should equal the closing booked balance. Codes such as CLAV and FWAV are available balances and are not part of that check.

What do CRDT and DBIT mean in camt.053?

CdtDbtInd says which way the money moved: CRDT is a credit (money in) and DBIT a debit (money out). The Amt element is always unsigned, so CdtDbtInd is the only thing that gives the direction. On a balance, DBIT means the account is overdrawn. A reversal (RvslInd true) still uses CdtDbtInd for the direction it was booked in.

How do I convert a camt.053 file to Excel or CSV?

Excel opens camt.053 as raw XML, not as a list of transactions. Convert it to CSV first. A camt.053 to CSV converter turns each booked Ntry into a row with the booking date, counterparty and description, reference and signed amount, checks each statement balance, and gives a CSV that opens in Excel. Utilly's does this in the browser preview and also downloads OFX, QBO, IIF or QIF.

Related tools

  • Bank reconciliation checker: compare a bank statement to your books and list missing, duplicate and mismatched transactions.
  • Receipt to CSV: turn PDF or photo receipts and invoices into CSV, Excel, or QuickBooks and Xero bill imports.