{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-apis/banking/v4/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Reconciliation: Transactions and EntryDetails","keywords":"documentation, api, portal, banking, payment, account information, aritma, psd2, open banking, reconciliation","description":"Developer documentation for Aritma's banking and financial APIs - payments, account information, webhooks, authentication and integrations.","meta":[{"name":"google-site-verification","content":"hplqlK_5O42BZjNnjtVQMEpxv9JkxcD1eH4J1T-NQmI"}],"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"reconciliation-transactions-and-entrydetails","__idx":0},"children":["Reconciliation: Transactions and EntryDetails"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reconciliation is how a partner matches money movement seen from the bank"," ","back to the specific invoice, payment, or business event that caused it."," ","Aritma exposes this through two related resources — ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transactions"]}," and"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["EntryDetails"]}," — and understanding how they relate to each other is the"," ","foundation for building reliable reconciliation logic."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"transactions-vs-entrydetails","__idx":1},"children":["Transactions vs. EntryDetails"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Transaction"]}," is the header-level record of a movement on an account —"," ","roughly equivalent to a single line on a bank statement. A Transaction can"," ","contain ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["one or more EntryDetails"]},", which carry the underlying detail"," ","needed to actually reconcile the movement (references, remittance"," ","information, counterparty data, etc.)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In practice this means: don't assume a 1:1 relationship between a"," ","Transaction and a single invoice or payment. Always fetch and inspect the"," ","EntryDetails under a Transaction before attempting to match it to something"," ","in the partner's own system — the reconciliation-relevant data usually"," ","lives at the EntryDetails level, not the Transaction level."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"reconciling-incoming-transactions","__idx":2},"children":["Reconciling incoming transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For incoming payments, reconciliation can be recommended in this order:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Structured reference"]}," — check first. This is the most reliable"," ","match when present, since it's a reference the payer's bank has carried"," ","through unmodified (e.g. an OCR/KID number or similar structured"," ","reference depending on the bank/country)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Unstructured reference"]}," — if no structured reference is present, fall"," ","back to matching against free-text remittance information. This is less"," ","reliable since formatting varies by what the payer actually"," ","typed, so matching logic here should be tolerant of formatting"," ","differences (whitespace, casing, partial invoice numbers, etc.)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Other data"]}," — amount and date (and counterparty name/account, where"," ","available) as a last resort or as a secondary check to increase"," ","confidence when the reference match is ambiguous or missing entirely."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Build the matching logic to attempt these in sequence and fall through, not"," ","as three independent, equally-weighted checks — a structured reference match"," ","should always win over an amount+date coincidence."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"reconciling-outgoing-payments","__idx":3},"children":["Reconciling outgoing payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Outgoing is more straightforward: every payment line sent through the"," ","Banking API carries an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["endToEndIdentification"]},", and this comes back"," ","unchanged on the resulting Transaction. This gives a reliable ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["1:1 match"]}," ","between the payment you initiated and the transaction that later appears on"," ","the account — reconciliation for outgoing payments should be built around"," ","this identifier rather than reference/amount/date matching, which is the"," ","incoming-side fallback."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"using-account-balance-as-a-reconciliation-check","__idx":4},"children":["Using account balance as a reconciliation check"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition to matching individual Transactions, the account ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["balance"]}," is"," ","also available and can be used as a complementary reconciliation signal —"," ","particularly useful as a sanity check rather than a per-transaction match."," ","Comparing the reported balance against the partner's own running total after"," ","applying a batch of transactions helps catch cases where something was"," ","missed, duplicated, or mismatched at the individual transaction level, even"," ","if every single reference-based match appeared to succeed. Treat balance as"," ","a control total, not a substitute for transaction/EntryDetails-level"," ","matching."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-mistakes","__idx":5},"children":["Common mistakes"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"entrydetails-pagination","__idx":6},"children":["EntryDetails pagination"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EntryDetails"]}," are paginated at ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["100 per page"]},". A common mistake is"," ","fetching only the first page of EntryDetails for a Transaction and assuming"," ","that's the complete set — this silently drops reconciliation data for any"," ","Transaction with more than 100 EntryDetails, rather than failing loudly."," ","Always page through the full result set before treating EntryDetails as"," ","complete for a given Transaction."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"duplicate-transactions-from-camt053--camt054","__idx":7},"children":["Duplicate transactions from camt.053 + camt.054"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A related and very common reconciliation mistake: consuming both"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.054"]}," (credit/debit notification) and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.053"]}," (statement)"," ","simultaneously results in the same underlying transaction appearing twice,"," ","since both file types report the same movement. Pin ingestion to a single"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionSource"]}," rather than trying to de-duplicate after the fact."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Recommendation:"]}," Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.053"]}," as your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionSource"]}," — this is"," ","Aritma's recommended source of truth. Since ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.053"]}," derives from"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.054"]}," — it's effectively the consolidated statement built from the"," ","underlying notifications — it gives the complete picture of the account for"," ","the period, rather than a stream of individual events that still needs to"," ","be assembled into that picture yourself."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["When to expect each file type:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.054"]}]}," typically arrives in the afternoon, around 18:00, after"," ","bank closing."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.053"]}]}," typically arrives overnight, around 00:00, as an"," ","end-of-day statement consolidating that day's activity into a single,"," ","complete record."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is also part of why the two shouldn't be mixed: the exact timing can"," ","vary somewhat by bank, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.054"]}," doesn't reliably give you an"," ","earlier or more complete picture than ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.053"]}," — it's simply a different"," ","representation of the same underlying activity. Given ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.053"]}," arrives"," ","only a few hours later and derives from the same data, it's the"," ","recommended source unless there's a specific reason to need the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["camt.054"]}," ","representation instead."]}]},"headings":[{"value":"Reconciliation: Transactions and EntryDetails","id":"reconciliation-transactions-and-entrydetails","depth":2},{"value":"Transactions vs. EntryDetails","id":"transactions-vs-entrydetails","depth":3},{"value":"Reconciling incoming transactions","id":"reconciling-incoming-transactions","depth":3},{"value":"Reconciling outgoing payments","id":"reconciling-outgoing-payments","depth":3},{"value":"Using account balance as a reconciliation check","id":"using-account-balance-as-a-reconciliation-check","depth":3},{"value":"Common mistakes","id":"common-mistakes","depth":2},{"value":"EntryDetails pagination","id":"entrydetails-pagination","depth":3},{"value":"Duplicate transactions from camt.053 + camt.054","id":"duplicate-transactions-from-camt053--camt054","depth":3}],"frontmatter":{"seo":{"title":"Reconciliation: Transactions and EntryDetails"}},"lastModified":"2026-08-13T12:40:55.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/apis/banking/v4/guides/reconciliation","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}