Reconciliation infrastructure
Your ledger says one thing.
The bank says another.
Finlecy reads every statement, settlement file and ledger export you receive, matches them across six deterministic passes, and hands your team the few lines that genuinely need a person — already classified, already explained, with the journal entry drafted.
No change to your ledgerFiles as they arrive todayEU data residency
finlecy reconcile · 2026-08-03
Lines matched
—
0 of 29
Value matched
—
€0.00
Auto-posted
—
0 held for review
Fees & FX explained
—
posted to their own accounts
Breaks
—
pending classification
Internal ledger
15 entries
Bank & acquirer
14 lines
PMNT-RDDT-ESDD · Banco Aralar · EUR operating
PMNT-RDDT-ESDD · Banco Aralar · EUR operating
PMNT-RDDT-ESDD · Banco Aralar · EUR operating
PMNT-RDDT-ESDD · Banco Aralar · EUR operating
PMNT-ICDT-ESCT · Banco Aralar · EUR operating
PMNT-ICDT-ESCT · Banco Aralar · EUR operating
PMNT-ICDT-ESCT · Banco Aralar · EUR operating
PMNT-ICDT-ESCT · Banco Aralar · EUR operating
PMNT-RCDT-MCRD · Banco Aralar · EUR operating
PMNT-RCDT-MCRD · Banco Aralar · EUR operating
PMNT-ICDT-ESCT · Banco Aralar · EUR operating
PMNT-ICDT-OTHR · Banco Aralar · EUR operating
PMNT-MCRD-CBCK · Banco Aralar · EUR operating
ACMT-MCOP-INTR · Banco Aralar · EUR operating
Engine trace
deterministic · replayable
idle · 29 records staged from 4 sources▍
A single day of one mid-size fintech, reconciled in the browser.
Open the full playgroundThis is the real matching engine, compiled to run in your browser on a synthetic month-end. Nothing is sent anywhere.
Reconciling every morning for
The actual problem
Nobody struggles with the lines that match.
A million lines a month at a 97% match rate leaves thirty thousand unmatched records. That is not a rounding error — it is two people, every morning, deciding whether a difference is a fee, a timing gap or a genuine loss.
Most tools optimise the 97%. We built Finlecy around the rest.
of your queue is timing, not error
Instructions inside their clearing window, styled identically to a genuine break and demanding the same attention.
is a fee that was always going to be there
Gross captures against net settlements. Mechanically solvable, and yet it reaches a human every single day.
is a batch no pairwise rule can see
One bank debit, two hundred ledger instructions. Match one-to-one and the relationship is invisible by construction.
is the part that actually matters
Duplicated payouts, unapplied returns, cash nobody can identify. It takes longer than everything above combined.
How it works
Five stages, and a hard line between them
Parsing, matching and explaining are separate concerns. Keeping them separate is the only way to know, when something goes wrong, which half it went wrong in.
Ingest
Statements, settlement files and ledger exports land by SFTP, API or direct connection. Files are hashed on arrival and retained exactly as received.
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.
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.
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.
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.
Hash-chained · four-eyes enforced · exportable as an evidence pack
The platform
Four modules, one record of what happened
Start with matching. Add explanation, monitoring and evidence as the operation grows. Every module writes to the same append-only history, so nothing has to be stitched together later.
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.
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.
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.
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.
Before anything can match
It starts with the file, and the file is never clean
A camt.053 from one bank and a camt.053 from another agree on the schema and on almost nothing else. Amounts carry direction in a separate field. Reversal flags invert the meaning of a sign. References are truncated by whichever institution had the shortest field.
The format engine turns all of it into one canonical record — signed minor units, both dates, a flattened ISO 20022 code, a recovered reference, and the original narrative kept untouched for audit.
One entry, three ways of saying it
camt.053
<Amt Ccy="EUR">4009.64</Amt> <CdtDbtInd>CRDT</CdtDbtInd> <Ustrd>SETTLEMENT CAP-8841 NET OF MDR</Ustrd>
MT940
:61:2608010801C4009,64NTRFCAP8841//CS-STL-40118 :86:CARDSTREAM SETTLEMENT CAP8841 NET OF MDR
Acquirer CSV
CS-STL-40118,2026-08-01,4128.64,119.00, 4009.64,EUR,CAP-8841,Kestrel Pay SL
canonical
amount +400964 // minor units, signed currency EUR valueDate 2026-08-01 isoCode PMNT-RCDT-MCRD reference CAP-8841 fee 11900 // recomputed, not trusted
In production
What changes is not the match rate
It is what happens to the lines that do not match, and how long it takes someone to be confident about them.
We were closing on the eleventh working day and everybody had quietly accepted that. The thing that actually changed was not the match rate — it was that every break arrived with a reason code and a drafted entry, so the queue stopped being an investigation and started being a review.
Aitor Zubeldia
Head of Finance Operations, Kestrel Pay · Ireland
Our acquirer settlements never matched because our ledger books gross and they pay net. Four years of a spreadsheet that one person understood. Finlecy handled it in the first run, and more importantly it posted the merchant discount to its own account instead of quietly eating it out of revenue.
Marta Sequeira
Financial Controller, Novabanc · Portugal
The bulk payout problem is the one nobody solves. One debit on the statement, two hundred rows in our ledger, and every tool we trialled asked an operator to match them by hand. Watching the aggregation pass reconstruct a file from amounts alone was the moment we stopped evaluating vendors.
Joris van Weel
Director of Payment Operations, Volta Mobility · Netherlands
Writing
Notes from inside the problem
Operations
The 3% problem
Match rate is the metric everyone reports and the one that tells you least. What matters is the shape of what did not match.
Ane Etxeberria · 7 min read
Engineering
camt.053 in practice
The schema is public, the standard is well written, and the files will still surprise you. Eleven things that actually break parsers.
Mikel Aranburu · 9 min read
Engineering
Where rules-only matching stops
A well-written rule set gets you to about 92%. The remaining 8% is not more rules — it is a different class of problem.
Rubén Ferreira · 8 min read