Bank Statement Standards Bridge — CAMT.053 & MT940 avatar

Bank Statement Standards Bridge — CAMT.053 & MT940

Pricing

from $100.00 / 1,000 statement validateds

Go to Apify Store
Bank Statement Standards Bridge — CAMT.053 & MT940

Bank Statement Standards Bridge — CAMT.053 & MT940

Validate and convert CAMT.053 and MT940 statements to deterministic JSON and reconciled CSV with stable transaction IDs — no bank login or OCR.

Pricing

from $100.00 / 1,000 statement validateds

Rating

0.0

(0)

Developer

Cedric Günther

Cedric Günther

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Bank Statement Standards Bridge

Convert CAMT.053 and a documented MT940 subset into stable transaction JSON and RFC 4180 CSV, with deterministic IDs and explicit balance evidence. This Actor is for accounting automation that already has machine-readable bank exports. It does not log in to banks and does not perform OCR.

Typical workflow

  1. Export one or more CAMT.053 or MT940 statements.
  2. Send inline content (recommended for confidential data) or a public HTTPS URL. Choose strict or tolerant processing and bounded limits.
  3. Consume statement/transaction rows from the default dataset. Download the full canonical bundle from CANONICAL_JSON and CSV from TRANSACTIONS_CSV.
  4. Route PASS, FAIL, and INCONCLUSIVE reconciliation results explicitly.
{
"statements": [
{
"sourceId": "client-a-september-2026",
"format": "AUTO",
"content": ":20:STMT-1\n:25:DE02120300000000202051\n:60F:C260901EUR100,00\n:61:2609150915C12,34NTRFREF-1//BANK-1\n:86:Invoice 1\n:62F:C260930EUR112,34\n-"
}
],
"mode": "strict",
"maxFileBytes": 2000000,
"maxTransactionsPerStatement": 10000
}

Exactly one of content or url is required per statement. URL inputs must be credential-free public HTTPS URLs on the default port; redirects and private or reserved address resolution are rejected.

Supported input

  • CAMT.053 namespace variants camt.053.001.02, .04, and .08 proven by the included synthetic corpus.
  • MT940 subset containing :20:, optional :25:, :60F:/:60M:, :61:, optional following :86:, and :62F:/:62M: records.
  • Up to 100 statements/run, 10 MB/statement, and 50,000 entries/statement within the configurable lower defaults.

Support does not imply that every bank-specific narrative convention has a semantic mapping. Unrecognized optional data stays outside the canonical MVP.

Output contract

The dataset uses two stable recordType values:

  • statement: parse status, format/version, IDs, balances, transaction count, reconciliation status/difference, and stable error fields.
  • transaction: stable transactionId, booking/value date, decimal amount as a string, currency, direction, references, and description.

Decimal amounts remain strings to avoid binary floating-point loss. No current timestamp participates in IDs or outputs. Reprocessing identical content with the same sourceId produces identical results.

Failure behavior

Invalid top-level configuration fails before processing. A malformed statement becomes a FAILED statement row while other batch items continue. XML with a DOCTYPE/entity declaration, unsupported namespace, oversized file, invalid decimal/date, unsafe URL, or entry-limit breach fails closed. Missing opening or closing balance yields INCONCLUSIVE; it is never reported as reconciled.

Privacy and security

Statements can contain sensitive financial data. Prefer inline Actor input and set retention appropriate to your Apify account. The Actor sends no statement content to third-party services. It uses only Apify storage selected by the run. There are no credentials in source and no bank/network integration.

Scope boundary

This is conversion and consistency evidence, not accounting, tax, fraud, legal, or audit advice. It does not certify a statement, categorize transactions, initiate payments, connect to banks/SFTP, parse PDFs, or perform OCR.

Development

npm install
npm test
npm run quality
npm run benchmark

Runtime dependencies are exactly pinned. The synthetic corpus contains no real account or personal data. New namespaces are opt-in releases with fixtures.

Changelog

  • 0.1.0 — Initial CAMT.053/MT940 subset, deterministic IDs, reconciliation, canonical JSON, CSV, schemas, limits, and isolated batch failures.