The platform
One pipeline from the file your bank sends to the entry your auditor reads
Finlecy is not a rules engine with a dashboard on top. It is five stages with hard boundaries between them, so that a parsing problem can never present itself as a matching decision, and a matching decision can never be made by something that cannot explain itself.
The pipeline
Five stages, in order
Each stage has one job and refuses to do the next one's. That constraint is the reason the output is reproducible.
Ingest
Statements, settlement files and ledger exports land by SFTP, API or direct connection. Files are hashed on arrival and retained exactly as received.
Accepted formats
camt.053 · camt.052 · camt.054 · MT940 · MT942 · BAI2 · pain.002 · acquirer CSV · REST
Normalise
Every format becomes one canonical record: signed minor units, both dates, an ISO 20022 transaction code, a recovered reference and the untouched original narrative.
Guarantees
No floats · both dates retained · direction from the source field, never inferred from sign
Match
Six ordered passes, strongest evidence first. Each pass sees only what the previous one could not explain, and records the reason it fired.
Properties
Deterministic · replayable · every threshold a named parameter
Explain
Whatever is left is classified against the reason-code library, given a root cause in plain language, and paired with a drafted journal entry.
Division of labour
Model proposes · deterministic layer verifies · human approves
Attest
The run is sealed. Postings, overrides and approvals are written to an append-only record that replays at the engine version that produced it.
Record
Hash-chained · four-eyes enforced · exportable as an evidence pack
Modules
Buy the part of the problem you have
Reconcile is the foundation and everything else builds on it. Most teams start there and add Resolve within a quarter.
Reconcile
The matching engine
Most reconciliation tools run one rule set and give up. Reconcile runs an ordered cascade — each pass only sees what the pass before it could not explain — so the easy 80% clears in milliseconds and the hard 20% arrives with its reasoning attached.
At a glance
- Match types
- 1:1, N:1, 1:N, N:M
- Determinism
- Same inputs, same output, byte for byte
- Throughput
- 2.4M lines per run on standard infrastructure
- Tolerance controls
- Per source, per counterparty, per channel
Resolve
The exception agent
Reconcile tells you a line did not match. Resolve tells you why, what it probably is, what the journal entry should look like, and what evidence it used to get there — so the reviewer is approving a conclusion instead of starting an investigation.
At a glance
- Reason-code library
- 34 codes across 6 families
- Explanation latency
- Under 2s per exception
- Posting format
- Balanced double entry, your chart of accounts
- Model policy
- Proposes and explains only; never authorises
Signals
Money-movement monitoring
Reconciliation is a rear-view mirror. Signals watches the shape of your money movement as it happens — settlement lag, float drift, return rates, counterparty behaviour — and tells you when the pattern changes, usually days before it turns into a break.
At a glance
- Baseline window
- Rolling 90 days, weekday-aware
- Evaluation
- On every ingestion, not on a schedule
- Delivery
- In-app, email, webhook, Slack
- Tuning target
- Alert volume per week, set by you
Assure
Evidence and attestation
If you hold funds on behalf of customers, someone will eventually ask you to prove that the money was where you said it was, on a specific day, and that a named person checked. Assure produces that proof as a by-product of the work your team already does.
At a glance
- Record model
- Append-only, hash-chained
- Segregation of duties
- By value, reason code and account
- Export
- Structured pack with source files included
- Retention
- Configurable, default 7 years
Where the model sits
The model proposes and explains. It never decides.
Reconciliation whose output cannot be reproduced is not reconciliation. So every decision that affects a balance is made by deterministic code, and the language model is confined to the part of the job that is genuinely a reading problem — working out what an unmatched record means and saying so in a sentence a person can act on.
The fastest way to understand it is to watch it fail to match something
The playground runs the real engine on four synthetic days, including the messy ones. Move the tolerances and watch the classification change.