Skip to content
Finlecy

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.

01

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

02

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

03

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

04

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

05

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.

TaskDecided by
Whether two records matchDeterministic
Fee, residual and FX arithmeticDeterministic
Classifying an unmatched recordModel, verified
Writing the root causeModel
Choosing posting accountsModel, rules validate
Approving a postingA named human

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.

Finlecy, C/ Hijuela de Lojo 75, 20491 Belauntza, Guipúzcoa, Spain