Playground
The engine, running here, on data you can change
This is not a video and it is not a mock-up. The matching passes, the subset-sum aggregation, the reference repair and the parsers below are the production implementations, compiled to run in your browser. Nothing you type is sent anywhere.
Deterministic
Same inputs and settings always produce the same matches.
Yours to break
Move a tolerance and watch a match become a break, or the reverse.
Honest about failure
Where the engine cannot be sure, it says so instead of guessing.
Reconciliation console
Pick a day. Press run. Watch what survives.
Four synthetic days from four different kinds of operation. Open the tolerances panel to change the fee band, the value-date window or the confidence at which a match is allowed to post itself — every change re-runs the whole day.
finlecy reconcile · 2026-08-03
Your ledger books card captures gross on the day of authorisation. The acquirer pays two days later, net of merchant discount, and never uses your reference format. Nothing here is wrong — until the chargeback shows up.
Lines matched
—
0 of 21
Value matched
—
€0.00
Auto-posted
—
0 held for review
Fees & FX explained
—
posted to their own accounts
Breaks
—
pending classification
Internal ledger
10 entries
Bank & acquirer
11 lines
PMNT-RCDT-MCRD · Banco Aralar · EUR operating
PMNT-RCDT-MCRD · 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-MCRD-CBCK · Banco Aralar · EUR operating
PMNT-MCRD-CRDT · 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
ACMT-MCOP-INTR · Banco Aralar · EUR operating
Engine trace
deterministic · replayable
idle · 21 records staged from 3 sources▍
1/6 Deterministic
—
Reference, amount, currency and value date agree exactly.
2/6 Reference repair
—
Amount agrees; the reference survived truncation or reformatting.
3/6 Fee-adjusted
—
Gross capture against net settlement, inside the contractual band.
4/6 Aggregation
—
A batch file that left the account as a single movement.
5/6 Cross-currency
—
Converted at the settlement rate, inside conversion tolerance.
6/6 Proposed
—
Value agrees but nothing corroborates it. Never posted unattended.
Exception queue
awaiting run
Press Run. Everything the engine cannot explain lands here.
Try widening the fee band
Push the fee tolerance past 3% on the card settlement day. Watch a chargeback get absorbed into the fee pass — which is precisely the failure mode a loose global tolerance produces in production.
Try shrinking the date window
Set the value-date window to zero. T+2 acquirer settlements stop matching entirely and the queue fills with items that were never wrong.
Try the auto-post threshold
Drop it to 70% and the value-only pairings start posting unattended. That is the setting nobody should ever use, which is why you can see it.
Open a break
Every exception expands into its root cause, the evidence behind it and a balanced draft entry. Approve or hold — the counters update either way.
Format engine
Edit the file. Watch the canonical record change.
Three formats a European fintech receives every morning, and the single record they all have to become. These are the real parsers — break the XML, truncate a reference, remove a column, and see what the engine says about it.
finlecy format engine
As received · ISO 20022 · Banco Aralar
Canonical records
standing by
Starting the parser…
Waiting for the parser to run in your browser.
Why each field maps the way it does
Ntry/Amt@Ccy → currency
Taken from the entry, never the statement header — mixed-currency statements are legal and common.
Ntry/CdtDbtInd → amount sign
camt carries magnitude and direction separately. DBIT becomes a negative minor-unit integer.
BookgDt/Dt + ValDt/Dt → bookingDate, valueDate
Both are kept. Matching uses value date; the close uses booking date. Conflating them causes month-end cliff errors.
BkTxCd/Domn/…/SubFmlyCd → isoCode
Flattened to DOMAIN-FAMILY-SUBFAMILY so a chargeback is distinguishable from an ordinary card credit before anyone reads the narrative.
RmtInf/Ustrd → reference, narrative
Free text. The reference token is extracted by pattern, and the untouched original is retained for audit.
Synthetic data is convincing. Your data is conclusive.
Send one real day — a statement, a settlement file and a ledger export. We run it through the same engine and walk you through every match and every break, line by line.