Bank statement guide
camt.053 reconciliation. Reading ISO 20022 bank statements, field by field.
How to reconcile with ISO 20022 camt.053 bank statements: the fields that matter, batch entries, MT940 vs camt.053, and where camt.052 and camt.054 fit.
By Sanjay Singh, Founder · Last updated:
Discuss your bank filesOn this page 16 sections
camt.053 reconciliation, in short
camt.053 is the ISO 20022 end-of-day bank statement: an XML file listing every entry booked to your account on the previous business day, with opening and closing balances. Reconciling with it means matching each entry, and each transaction inside a batched entry, to the payment or settlement it belongs to, using the references the statement carries rather than a line of free text.
That is the main improvement over the older SWIFT MT940 statement: camt.053 has dedicated fields for the references your matching depends on. Whether you can use them depends on how your bank fills them in, so ask for its specification and sample files before you build anything.
camt.053, camt.052 and camt.054
Three ISO 20022 cash management messages carry what used to be several SWIFT MT messages.
| Message | What it is | Typical use | Older equivalent |
|---|---|---|---|
| camt.053 | Bank-to-customer statement | End-of-day statement of booked entries and balances | MT940 |
| camt.052 | Bank-to-customer account report | Intraday report of entries, often several times a day | MT942 |
| camt.054 | Bank-to-customer debit or credit notification | A notice for individual movements, or the detail behind a batch | MT900 and MT910 |
For reconciliation, camt.053 is the record you close the day on. camt.052 lets you match earlier in the day, but its entries can still change, so treat it as early warning, not proof. camt.054 is useful when your bank books a batch as one entry and sends the individual transactions separately.
MT940 vs camt.053
| MT940 | camt.053 | |
|---|---|---|
| Format | Tagged text, one field per line | XML, nested elements |
| References | A short reference on the :61: statement line; everything else in the :86: narrative, up to six lines of 65 characters | Separate elements for the end-to-end id, the bank’s own reference and others |
| Remittance information | Free text inside :86: | Structured or unstructured remittance information |
| Batches | Usually one line for the batch total | One entry can hold many transaction details |
| Transaction codes | SWIFT transaction type codes | ISO bank transaction codes: domain, family and sub-family |
| Balances | :60F: opening and :62F: closing booked balance | Balance elements with type codes such as OPBD and CLBD |
In practice, most reconciliation pain with MT940 comes from the :86: field. Each bank packs it differently, references are truncated, and matching rules end up parsing text. camt.053 removes much of that, but only when your bank populates the structured fields. Some banks simply move the same free text into the unstructured remittance field.
The fields reconciliation actually uses
| Element | What it tells you | How matching uses it |
|---|---|---|
| Ntry / Amt and CdtDbtInd | The amount booked, and whether it is a credit or a debit | The primary amount check; the sign must match the direction you expect |
| Ntry / Sts | Whether the entry is booked or pending | Only booked entries are cash; pending ones are not yet evidence |
| BookgDt and ValDt | When the bank booked the entry, and when the funds are value-dated | Assigns the entry to a business day, and explains timing differences |
| AcctSvcrRef | The bank’s own reference for the entry | Links the statement to the bank’s other reports and to queries |
| TxDtls / Refs / EndToEndId | The end-to-end id carried from the original payment instruction | The strongest key when your payment files set it |
| RmtInf | Remittance information, structured or free text | Invoice, order or payout references when no end-to-end id exists |
| BkTxCd | The bank transaction code | Separates transfers, returns, charges and interest before matching |
| Chrgs | Charges the bank took on this entry | Explains why a credit is short of the settlement net |
Start with the balances
Before matching a single entry, check that each statement is complete: the opening balance plus the entries equals the closing balance, and today’s opening balance equals yesterday’s closing one. A gap means a missing statement or a missing page of entries, and no amount of matching will find it. It is the cheapest control in bank reconciliation, and the one most often skipped.
Sort by bank transaction code before you match
Every camt.053 entry carries a bank transaction code, organised as a domain, a family and a sub-family, and banks often add their own proprietary code as well. Use it to route entries before matching: incoming transfers to payment matching, returns to return handling, charges and interest to their own accounts, and card or settlement credits to settlement reconciliation.
Routing first keeps each matching rule simple. A rule that matches customer transfers doesn’t need to know how to recognise a bank charge, and a charge never ends up as an unexplained credit in the payments queue.
Returns, reversals and charges in camt.053
A payment that comes back usually appears as its own entry, often with return information inside the transaction details: the original references and a reason code. Match it to the payment it returns, not to whatever else happened that day, and reopen that payment with the reason attached.
Charges can be reported on the entry they relate to, or as separate entries, depending on the bank. Either way, they explain why a credit is short of what your provider settled, so record them rather than absorbing them in a tolerance.
Matching earlier in the day with camt.052
If your bank sends camt.052 intraday reports, you can match incoming credits during the day and release payouts or services sooner. Treat those matches as provisional. An intraday entry can change or disappear before the end-of-day statement, so the day should still close on camt.053, and any intraday match the statement doesn’t confirm should reopen as an exception.
Batched entries: one line, many payments
A settlement from a provider, or a bulk payment file you sent, often books as a single entry. camt.053 can carry the individual transactions inside that entry as separate transaction details, each with its own references. When your bank does that, reconcile each transaction to its payment, then the entry total to the batch.
When it doesn’t, match the entry to the batch as a whole, using the batch reference and total, and prove the lines from the provider’s settlement file instead. Ask your bank whether it can include transaction details, or send camt.054 notifications for batch contents.
Moving from MT940 to camt.053
A format switch is where reconciliation quietly breaks. Treat it as a change to be proven, not a parser to be swapped:
- Get the bank’s camt.053 specification and sample files, and MT940 files for the same days if it can provide both.
- Parse the same days in both formats and check they produce the same entries, amounts and balances.
- Check that references are no longer truncated, and which fields your rules should now read.
- Confirm the time zone, cut-off and business-day rules have not changed.
- Make a missing or unreadable file raise an exception, rather than being skipped.
The use case a bank changes its statement format describes how Flominzo handles this step by step.
A camt.053 reconciliation checklist
- You have your bank’s camt.053 specification and sample files for each account.
- Your own payment files set an end-to-end id, so it comes back on the statement.
- Entries are routed by bank transaction code before matching.
- Only booked entries count as cash; pending ones wait.
- Batched entries are matched as batches, with lines proven from transaction details or the provider’s file.
- Charges and returns are matched to what they relate to, not absorbed in tolerances.
- Opening balance plus entries equals closing balance, every day, for every account.
- A statement that doesn’t arrive by its cut-off raises an exception.
What to ask your bank
camt.053 is a standard with a lot of room for interpretation, so the most useful reconciliation work often happens before any code is written. Ask your bank:
- Which camt.053 version it sends, and whether it can send a specification and sample files for your accounts.
- Whether it passes through the end-to-end id from your payment files, and in which element.
- Whether batched entries include individual transaction details, or whether you need camt.054 for them.
- Where returns, charges and interest appear, and which bank transaction codes it uses for each.
- When the statement is produced, in which time zone, and what happens on bank holidays.
- Whether it can run MT940 and camt.053 in parallel while you check that they agree.
The answers decide which matching keys you can rely on. A bank that passes end-to-end ids through cleanly makes reconciliation far simpler than one that only fills the free-text remittance field.
How Flominzo reads bank statements
Flominzo’s statement parsers today read ISO 20022 camt.053 and camt.052, SWIFT MT940, and configured CSV layouts. Each format is set up in a versioned Rail Profile and validated against your bank’s actual files before activation. Raw files are kept with a hash and their provenance before they are interpreted, and a file that does not arrive by its cut-off raises FILE_MISSING instead of leaving a silent gap.
Bank statements are the CASH grade of evidence: the independent witness that a payment or settlement really moved money. Other bank formats are assessed during scoping.
Questions
Is camt.053 the same as MT940?
They do the same job, an end-of-day statement, but camt.053 is ISO 20022 XML with separate fields for references and remittance information, while MT940 is tagged text with most detail in one narrative field.
Is MT940 being switched off?
Many banks now offer camt.053 alongside MT940, and some are moving customers across. The timing is set by each bank for its own statements, so ask yours for its plan and a parallel-run period.
What is the difference between camt.052 and camt.053?
camt.052 is an account report, usually intraday, whose entries can still change. camt.053 is the statement of booked entries for the day, which is what you close the day on.
Why do my camt.053 references still not match?
Usually because the reference was never set in the original payment, or the bank moved free text into the unstructured remittance field. Check what your own payment files send as the end-to-end id.
Sources
Let’s make it specific to you.
Bring your systems, payment flows, and questions. We’ll help define the next step.
Talk to the team