The end-of-day bank statement message, and the fields a PDF never had
In short
camt.053 is the ISO 20022 end-of-day statement message: a structured file sent by the account servicer to the account owner, reporting entries booked to the account and the balances around them. Against a PDF it supplies what parsing normally guesses — a stable entry reference, a coded transaction type, separate booking and value dates.
Key takeaways
- It reports booked entries only, so a camt.053 will never agree with a live online balance.
- Each entry carries a bank-assigned reference, so a redelivered statement is detectable rather than a duplicate-posting risk.
- A coded transaction type replaces narration guessing: the classifier reads a code, not a descriptor string.
- Opening and closing booked balances are typed and explicit, making the file self-checking before anything posts.
- Availability is a banking question: the format is standard, access depends on bank, product and account.
camt.053 is the ISO 20022 bank-to-customer statement message: a structured XML file, sent by the bank to the account owner, reporting the entries booked to an account over a stated period together with the balances at each end of it. Where a statement PDF is a picture of a table, this is the table — typed, labelled and machine-addressable before anyone opens it.
For a bookkeeping pipeline that changes the job. Reading a PDF means inferring where columns are, which string is the date, whether a number is a debit, and what the narration means. None of those inferences exist here. What remains is checking the file is complete and consistent — far smaller, and far more testable, than reading.
What the standard says the message is for
The published definition is narrow and worth reading literally: the message is sent by the account servicer to an account owner, or a party the owner has authorised, to inform them of entries booked to the account and to give balance information at a given point in time. It serves cash management and reconciliation, may report on more than one account, and — the sentence with the most consequence — contains information on booked entries only.
Booked entries only is the line that catches teams out. The file will not agree with the balance a client reads in their banking app, because that figure includes activity the bank has not booked. Intraday and pending movements belong to a separate message in the same family, and conflating the two turns the close into an argument about differences that are not errors.
Three building blocks, and where the money sits
The message has a group header carrying message-level information, one or more statements reporting booked entries and balances for a cash account, and a supplementary data block for what the structured elements cannot hold. Everything a bookkeeper cares about is inside the statement, in a repeating entry element.
| What the entry carries | What it replaces in a PDF pipeline |
|---|---|
| An entry reference and the account servicer's reference | Fingerprinting rows by date and narration to guess whether a statement was already processed |
| Amount, with currency as an attribute of the amount | Regex for thousands separators, and currency inferred from the account |
| An explicit credit or debit indicator | Deciding sign from column position, a minus, or brackets that vary by bank |
| Booking date and value date, separately | One date column that is silently one or the other |
| A bank transaction code, standard or proprietary | Inferring transaction type from a descriptor string, per bank, forever |
| Remittance information, structured or unstructured | Hunting an invoice number inside free text truncated by the sending bank |
The last row has the most upside and the least reliability. The structured branch can carry referred-document details and a creditor reference — exactly the allocation data a remittance advice exists to supply separately. When a payer populates it, cash application gets easier at once. When they do not, you get unstructured text capped at 140 characters per occurrence and you are back to string matching.
Balances that let the file check itself
Balances carry a type code, so opening booked and closing booked are identifiable as such rather than being the first and last rows of a table. Codes also exist for previously closed booked, closing available and forward available — which matters, because available is not booked and a human reading a PDF routinely conflates them.
That gives you a gate. Opening booked plus the signed sum of entries must equal closing booked, and a file failing that test is incomplete or mis-parsed and should never reach a bookkeeper. It is the same continuity check that diagnoses an extracted statement that does not foot, except here it is exact and runs before any human sees the data.
The value is not that the file is XML. It is that every guess a PDF parser has to make is already answered, by the party that booked the transaction.
Whether you can get one is a banking question
The format is a standard; access is a commercial arrangement. Availability varies by bank, country, product and channel — a corporate host-to-host or portal download may offer it where a small-business online product does not. Some banks charge for the channel, some require a cash-management agreement, and some emit a version several revisions behind.
- Ask per client, not per bank. The same institution often offers it on one account tier and not another.
- Ask which version. Element availability differs between revisions, and your parser must state what it accepts.
- Ask what a re-send looks like. Whether corrections arrive under the same identifiers decides your deduplication design.
What it does not remove
It does not decide accounting treatment: a transaction code narrows classification without closing it, since one code covers a subscription and a capital purchase. It does not identify counterparties for reporting — payee identity and tax status still come from documents you collect, the subject of collecting and validating payee tax forms. And it does nothing for the rest of a client's paperwork, where meaning still lives in layout and free text, as in the partner and shareholder income statement.
Which structured format to support first is argued separately in structured statement formats compared, alongside the rest of the extraction and classification topic. Designing intake around the formats a firm's clients can actually supply is work we scope under AI agents and automation for accounting and tax practices, with the operational constraints in AI agents in production.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
Is camt.053 the same as a bank feed?
No — a feed is a delivery mechanism, camt.053 is a message with a defined content model. Feeds are typically aggregator-normalised, may replay history, and rarely carry the bank's own entry references or transaction codes. The message arrives from the account servicer as a statement for a stated period, which is why it can be reconciled and a feed generally cannot.
Why does the balance not match the client's online banking?
Because the message reports booked entries only, and the app shows activity the bank has not yet booked. That is a definitional difference, not an error. Pending card authorisations, same-day inbound payments and holds sit outside the statement until they book, so the figures are expected to differ during the day and converge once the period closes.
Can a small accounting firm realistically get these files from clients' banks?
Sometimes, and it is worth asking client by client rather than assuming. Corporate and cash-management customers usually can; sole traders on retail products usually cannot. A workable policy is to accept the structured file wherever it exists, keep a PDF path for everyone else, and never build a workflow that only functions when the structured file arrives.
- ISO 20022
- bank statements
- extraction
- reconciliation
The work behind this page
Builds from our portfolio that this page draws on.
AP Copilot
An AI accounts-payable copilot that reads invoices, matches them to POs, and routes clean approvals
FintechAskVault
An AI internal knowledge-search platform that answers employee questions from your own docs — grounded in citations, with knowledge gaps surfaced and deflection tracked.
Productivity AIRead next
- Extracted statement: closing balance does not equal opening plus movementsA bank statement proves its own completeness. Foot it page by page, and the size and sign of the difference tell you which row was dropped, duplicated, inverted or invented.diagnostic
- Remittance advice: the document that says which invoices a payment coveredThe payer's account of what a payment was for. It is the least standardised document in the finance stack, and the one whose references most often point at something other than your invoice number.definition
- A credit note is not a negative invoice: where the sign really livesModel it as an invoice with a minus in front and three things break: allocation, tax reporting, and every aging report that reads the ledger afterwards.definition
- A two-hundred-page client scan splits into the wrong number of documentsBoundary errors are wildly uneven across document types, so an overall accuracy figure hides them. Count documents in against documents out, per type, and fix the cause where the pages are produced.diagnostic
- Dates and amounts come out wrong, but only for one client's suppliersA locale fault cannot corrupt every document, which is exactly why it survives. Sample the ambiguous cases only, sliced by supplier, and the fault appears at once.diagnostic
- Half the client bank statements will not open in the pipeline at allA pile of failed jobs at the first step is four different problems wearing one error message. Classify by failure class before anyone retries, re-requests or asks a client for a password.diagnostic
Related across the site
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation