camt.053 format explained: every XML element, with a real example
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.
| Element | ISO name | What it holds | In the sample |
|---|---|---|---|
Document/BkToCstmrStmt | BankToCustomerStatement | The message itself. The xmlns namespace on Document says it's camt.053 and which version | camt.053.001.08 |
GrpHdr | GroupHeader | Once 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 |
Stmt | Statement | One 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/Id | Account / Identification | The 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 |
Bal | Balance | Repeats per balance type. Tp/CdOrPrtry/Cd is the type (OPBD, PRCD, CLBD, CLAV…), then Amt with a Ccy attribute, CdtDbtInd and Dt. See balances | OPBD 8412.65 CRDT; CLBD 9480.61 CRDT |
TxsSummry | TransactionsSummary | Optional counts and totals of the entries (for example TtlCdtNtries, TtlDbtNtries) | Not used |
Ntry | Entry | One booking on the account. Repeats; a statement with no bookings has none. See the entry, tag by tag | 7 + 6 entries |
Ntry/Amt + CdtDbtInd | Amount, CreditDebitIndicator | The 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/RvslInd | ReversalIndicator | Present 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 reversed | The 129.99 energy direct debit, reversed on 2026-10-30 |
Ntry/Sts | Status | BOOK (booked) in a statement; PDNG (pending) mainly in camt.052 intraday reports. Newer versions also define INFO and FUTR | BOOK |
Ntry/BookgDt, Ntry/ValDt | BookingDate, ValueDate | Each 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 availability | The salary payment: booked 2026-10-20, value date 2026-10-19 |
Ntry/AcctSvcrRef | AccountServicerReference | The bank's own reference for the entry; NtryRef is another optional entry reference | EX26100100001 |
Ntry/BkTxCd | BankTransactionCode | What 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 codes | Not used |
Ntry/NtryDtls/TxDtls | EntryDetails / TransactionDetails | The underlying payment(s): Refs, AmtDtls, RltdPties, RmtInf, AddtlTxInf. See entry details | One TxDtls per entry |
Ntry/AddtlNtryInf | AdditionalEntryInformation | Free text about the entry, often all there is for card payments and fees | BEA 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>
| Element | Value | Meaning |
|---|---|---|
Amt | 2210.00, Ccy="EUR" | 2,210.00 euros, unsigned |
CdtDbtInd | DBIT | Money out, so −2,210.00 in a spreadsheet |
Sts | BOOK | Booked; counts toward the balances |
BookgDt/Dt | 2026-10-20 | Posted on October 20. This is the date your bank app and most bookkeeping imports show |
ValDt/Dt | 2026-10-19 | Value date a day earlier: the money stopped earning interest on the 19th |
AcctSvcrRef | EX26101900009 | The bank's reference |
Refs/EndToEndId | NOTPROVIDED | The payer's end-to-end reference; NOTPROVIDED is the placeholder when the payment had none |
RltdPties/Cdtr/Nm | M. de Vries | The creditor, who received the money. On money coming in, look at Dbtr (the payer) instead |
RmtInf/Ustrd | Salaris oktober 2026 | Unstructured 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 TxDtls | What it holds |
|---|---|
Refs | EndToEndId, TxId, InstrId, MndtId (direct debit mandate), AcctSvcrRef, ChqNb (cheque number) |
RltdPties | Dbtr and Cdtr (payer and payee), DbtrAcct/CdtrAcct (their accounts), UltmtDbtr/UltmtCdtr |
RmtInf | Ustrd free text, or Strd structured references (invoice number, creditor reference) |
AddtlTxInf | Extra 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:
| Code | Meaning | How Utilly uses it |
|---|---|---|
OPBD | Opening booked balance: the balance at the start of the period | Starting balance for the check and the running Balance column |
PRCD | Previously closed booked balance: the closing balance of the previous statement, which some banks send instead of OPBD | Starting balance when there's no OPBD before it |
CLBD | Closing booked balance: the balance at the end of the period | What opening + entries must equal |
ITBD, OPAV, ITAV, CLAV, FWAV | Interim booked, and opening, interim, closing and forward available balances | Not 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 1 | 8,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 15 | 9,480.61 |
OPBD opening booked balance of statement 2, Oct 16 | 9,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 31 | 11,097.45 |
The same check, one line per statement, as the converter preview shows it:
| Statement | Opening | Entries | Closing (CLBD) | Ties? |
|---|---|---|---|---|
| 1–15 October 2026 (7 entries) | 8,412.65 | +1,067.96 | 9,480.61 | Yes |
| 16–31 October 2026 (6 entries) | 9,480.61 | +1,616.84 | 11,097.45 | Yes |
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
| Format | What it is | How it differs from camt.053 |
|---|---|---|
| camt.053 | ISO 20022 bank-to-customer statement (BkToCstmrStmt): booked entries for a day or period, with opening and closing booked balances | — |
| MT940 | SWIFT customer statement in tagged text lines | Same 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.052 | Bank-to-customer account report (BkToCstmrAcctRpt, one Rpt per account), often sent during the day | The intraday counterpart, like MT942: can include pending entries and often lacks a closing booked balance, so it can't always be balance-checked |
| camt.054 | Bank-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 guides
- QIF file format explained: every field, with a real example
- MT940 format explained: every field, with a real example
- BAI2 codes list: every type code, what it means, credit or debit
- How to open an OFX, QFX or QIF file (Excel, Quicken, text)
- Free sample OFX file (bank and credit card), explained
- QBO vs IIF vs QIF: which file QuickBooks and Quicken actually need
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.