Bank statements
Reads bank and custody statement files from a bucket or an SFTP drop that your banks and custodians already deliver to: camt.053 and camt.052 (ISO 20022), MT940 and MT950, and MT535 statements of holdings, from any bank or custodian (State Street included). It uses no bank’s API and no credential that could move money. It reads in place, in your deployment; only ids, hashes and counts reach LightHouse.
At a glance
Section titled “At a glance”| Collector | Bank statements, version 1.0.0 |
|---|---|
| Reads | Any bank or custodian: camt.053, camt.052, MT940, MT950 and MT535 statement files (ISO 20022 and SWIFT MT) (the vendor's documentation) |
| Family | Finance |
| Kind | Bank |
| Ways to connect | Key pair, Service account |
| Scopes |
|
| Read only | Yes |
| Vendor's API can move money | No |
| Personal data | Financial, Contact |
| Hosts it may contact | Only the hosts on your deployment's allow-list (*: the host is the one you give it) |
| Vendor API versions | ISO 20022 camt.052.001 and camt.053.001, SWIFT MT940, MT950, MT535 (SR2022) |
| Lowest engine version | 0.46.0 |
What it reads
Section titled “What it reads”- Bank statements (camt.053, camt.052, MT940, MT950): one record per statement, with its balances and every entry: booked and value dates, signed amount and currency, references, end-to-end id, counterparty and details (a reversal marked), exact to the digit.
- Statements of holdings (MT535): one record per statement, with the safekeeping account, each ISIN with description, quantity (as face amount or units), available sub-balance and holding value, and the page total. A page of updates only is marked.
- Files with the extensions
.xml,.camt,.053,.052,.sta,.mt940,.940,.950,.535,.txtand.fin, up tomax_mb(default 50). Anything else, or a file that is not a statement, is skipped and counted. - A file is read again only when it changes (by its ETag or size and time); a file that disappears takes its statements with it.
How to connect
Section titled “How to connect”Choose where your banks deliver:
- A bucket you own, as
s3://bucket/prefix,gs://bucket/prefix,azblob://account/container/prefixorfile:/path. It is read by your deployment’s own identity, or for AWS by a role it assumes (role_arn,external_id), set up by your engineer. - An SFTP drop, as
sftp://user@host:22/path. In LightHouse, open Setup and admin, Connectors, choose Bank statements, and paste the server’s host key fingerprint (SHA256:..., fromssh-keygen -lf), then the PEM of the drop account’s private key. Your browser seals it to your deployment; LightHouse never sees it. The SFTP route needs thebank-statementsextra (paramiko).
The SFTP credential is JSON in the variable the source names: private_key,
host_key, and user if it is not in the address.
Permissions
Section titled “Permissions”None to check: a statement file cannot move money, trade, instruct or approve. The collector only lists and reads files.
- Read-only, by construction and by test. This collector does not speak
HTTP itself, so its read-only tests drive it through stubbed clients that
record every call and refuse any other: an SFTP client of which only
listdir_attrandopen(always openedrb) are ever called, and an S3 client of which onlylist_objects_v2andget_objectare. Any write, delete, rename or upload would fail those tests. The object-store adapters exposelistandgetonly. - Minimum access to give: for a bucket, list and read (
s3:ListBucketands3:GetObject, or the equivalent on Cloud Storage or Blob Storage); for SFTP, a drop account that can list and read the directory. - SFTP host key pinned: a server that does not present the pinned key is
refused before the key signs anything (
the SFTP server's host key is not the pinned one).
Limits
Section titled “Limits”- Files only: no bank API, no balances that are not in a file you receive.
- The SFTP host must be a DNS name; subdirectories and hidden files are skipped.
- A statement’s entry details are cut at 300 characters in the record.
- MT536, MT564 and ISO 20022 semt.002 are not read yet.
- A file over
max_mb, or with an unknown extension, is skipped and counted (files skippedin the run’s log).
Data handling
Section titled “Data handling”- Statements hold financial and personal data: account numbers, balances,
counterparties’ names and remittance text. Documents carry the
labelyou give the source (defaultconfidential). - Content is read in place, in your deployment. LightHouse receives ids, hashes and counts, never the statements, and never opens the credential.
- Each record carries the SHA-256 of the file it came from, so any figure can be traced to the exact bytes your bank delivered.
- The data is audit-ready for your own agents; nothing here certifies anyone against any regulation.
Troubleshooting
Section titled “Troubleshooting”| What you see | What it means | What to do |
|---|---|---|
the SFTP server's host key is not the pinned one |
The server presented another key | Check the fingerprint with your bank; never accept a changed one without asking |
host_key is the server's key fingerprint, SHA256:<base64> |
The pinned fingerprint is missing or malformed | Paste the SHA256:... fingerprint |
the SFTP host is a DNS name |
The address uses an IP address or odd characters | Use the host name |
private_key is an Ed25519, RSA or ECDSA key |
The PEM is not one of those key kinds | Paste the drop account’s private key |
an object store is s3://bucket/prefix, gs://bucket/prefix, azblob://account/container/prefix or file:/path |
The location is not one of these | Correct the location |
| Run succeeded, few records written | Files were skipped (unknown extension, too large, not a statement) | Check the run’s log for files skipped |
Certification
Section titled “Certification”Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See How collectors are certified.
| Date | Collector | Engine | Vendor API | Method | Expires |
|---|---|---|---|---|---|
| 10 November 2026 | 1.0.0 | 0.46.0 | ISO 20022 camt.052 and camt.053; SWIFT MT940, MT950, MT535 (SR2022) | Fixtures only: built, not certified | Not applicable |
Security posture
Section titled “Security posture”From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.
| Last scanned | 10 November 2026 |
|---|---|
| Critical findings | 0 |
| High findings | 0 |
| Medium findings | 0 |
| Low findings | 0 |
| Info findings | 0 |
| Release blocked | No |
| Network allow-list check | Pass |
| Read-only behavioural test | Pass |
| SBOM (CycloneDX) | Produced |
| Dependency licences | Pass |
| Scanners | bandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only |