Works from files
Import an invoice CSV and a bank statement CSV. CAMT.053 XML import is planned. No bank login.
Demo
Bank transfer reconciliation means deciding which incoming payment settles which invoice. DIGITAL EUR compares your invoice list with your bank statement export, suggests matches with a visible score and reasons, and lets you approve each allocation. It never posts anything on its own.
Import an invoice CSV and a bank statement CSV. CAMT.053 XML import is planned. No bank login.
Reason codes such as INVOICE_REFERENCE or EXACT_AMOUNT show why a suggestion exists.
Allocations cannot exceed what is outstanding, and each decision is written to an audit log.
These five situations come from the synthetic test fixtures the matching engine is tested against. They show where automation helps and where a human decision is required.
| Scenario | What arrives | What DIGITAL EUR does |
|---|---|---|
| Exact payment with reference | Transfer of €1,250.00 with remittance “Invoice INV-2026-0042” from the IBAN stored on the invoice. | INVOICE_REFERENCE + EXACT_AMOUNT + COUNTERPARTY_IBAN + COUNTERPARTY_NAME → score 100, still awaits approval. |
| Partial payment | €495.00 arrives against a €990.00 invoice with the invoice number in the reference. | POSSIBLE_PARTIAL_PAYMENT lowers the score; after approval the invoice shows €495.00 still open. |
| Amount-only coincidence | €250.00 arrives with “Unknown invoice transfer” from an unrelated payer. An open invoice is also €250.00. | No reference, IBAN or name evidence → not suggested. It stays in the unresolved list for a person to check. |
| Outgoing bank fee | A €30.00 debit for a monthly bank fee. | Debits are never matched to receivables. It is ignored by receivable matching. |
| Two invoices, same evidence | A payer with two open invoices of equal value sends one transfer without a usable reference. | Both candidates tie for the top score and are flagged AMBIGUOUS. A person must choose. |
A naive search for “INV-12” also finds “INV-123”, which silently allocates money to the wrong invoice. The engine only accepts an invoice reference when it appears as a complete token, tolerating spaces, dashes and case differences that banks introduce — so “inv 2026 0042” matches INV-2026-0042, but INV-12 never matches INV-123.
Amounts are parsed into integer euro cents and compared exactly. Floating-point arithmetic, which can turn 0.1 + 0.2 into 0.30000000000000004, is not used for any financial value.
DIGITAL EUR is bank transfer reconciliation software for euro receivables. It reads an invoice CSV and a bank statement CSV, suggests which credit settles which invoice, shows a score with named reasons, and records every approval in an audit log. Today it runs as a free in-browser demo; accounts, stored data and camt.053 import are planned.
It is designed for small and mid-sized businesses, and for the bookkeepers and agencies who work for them, that receive many euro bank transfers against invoices and currently match them by hand in a spreadsheet. In practice that means invoice-to-bank reconciliation for businesses across Europe: a SEPA invoice matching step that sits in front of your accounting system rather than replacing it.
It fits best when:
For payment reconciliation in a small business, the value is usually not speed but certainty: knowing which invoices are really open before a reminder goes out. For accountants, it works as an accounts receivable reconciliation tool that produces evidence a client can check.
It is not a fit if you need direct bank connections, card or direct-debit settlement reports, multi-currency matching or automatic posting to a ledger. None of these is offered today. For the underlying manual process, read our SEPA reconciliation guide.
To match a bank transfer to an invoice, the engine compares every incoming credit with every open invoice in the same currency. A pair becomes a suggestion only when there is at least one piece of identifying evidence: the invoice reference in the remittance text, the customer's IBAN, or the customer's name. An amount that happens to be equal is never enough on its own.
Each suggestion receives a rule score from fixed weights. The score is a transparent sum, not a probability.
| Reason code | Meaning | Effect on score |
|---|---|---|
| INVOICE_REFERENCE | The invoice reference appears in the remittance text as a complete token | +65 |
| EXACT_AMOUNT | The credit equals the invoice's amount due to the cent | +20 |
| COUNTERPARTY_IBAN | The payer's IBAN equals the IBAN stored on the invoice | +10 |
| COUNTERPARTY_NAME | The payer's name equals the customer name after normalisation | +5 |
| POSSIBLE_PARTIAL_PAYMENT | The credit is smaller than the amount due | −15 |
| AMOUNT_EXCEEDS_OUTSTANDING | The credit is larger than the amount due | −25 |
The maximum score is 100: reference, exact amount, IBAN and name together. A score never goes below zero.
A few rules decide what counts as evidence in transaction reference matching and SEPA transfer matching to invoices:
All amounts are parsed into integer euro cents and compared exactly. The same files always produce the same suggestions, and each result records the rules version that produced it.
The example below uses invented companies and the widely published example IBAN DE89 3704 0044 0532 0130 00. Every score below was produced by running the current rules (version demo-rules-1) on these inputs; you can recreate the same rows as two CSV files in the Reconciliation Lab and check them.
Open invoices
| invoice_id | customer_name | amount_due | customer_iban |
|---|---|---|---|
| INV-2026-0101 | Nordlicht GmbH | 2400.00 | DE89370400440532013000 |
| INV-2026-0102 | Nordlicht GmbH | 600.00 | DE89370400440532013000 |
| INV-2026-0107 | Atelier Moreau SARL | 1180.00 | (none) |
| INV-2026-0110 | Kalev Digital AS | 850.00 | (none) |
Each invoice's reference is its invoice number, and all amounts are in EUR.
Bank statement lines
| transaction_id | amount | direction | remittance | counterparty_name |
|---|---|---|---|---|
| T-01 | 2400.00 | CRDT | INV-2026-0101 | NORDLICHT GMBH (IBAN as stored) |
| T-02 | 590.00 | CRDT | Rechnung INV 2026 0102 | Nordlicht GmbH (IBAN as stored) |
| T-03 | 1180.00 | CRDT | Payment Moreau | Atelier Moreau |
| T-04 | 850.00 | CRDT | INV-2026-0110 | Kalev Digital |
| T-05 | 850.00 | CRDT | INV-2026-0110 | Kalev Digital |
| T-06 | 30.00 | DBIT | Account fee October | (none) |
What the engine suggests
| Bank line | Candidate invoice | Reason codes | Score |
|---|---|---|---|
| T-01 | INV-2026-0101 | INVOICE_REFERENCE, EXACT_AMOUNT, COUNTERPARTY_IBAN, COUNTERPARTY_NAME | 100 |
| T-01 | INV-2026-0102 | AMOUNT_EXCEEDS_OUTSTANDING, COUNTERPARTY_IBAN, COUNTERPARTY_NAME | 0 |
| T-02 | INV-2026-0102 | INVOICE_REFERENCE, POSSIBLE_PARTIAL_PAYMENT, COUNTERPARTY_IBAN, COUNTERPARTY_NAME | 65 |
| T-02 | INV-2026-0101 | POSSIBLE_PARTIAL_PAYMENT, COUNTERPARTY_IBAN, COUNTERPARTY_NAME | 0 |
| T-04 | INV-2026-0110 | INVOICE_REFERENCE, EXACT_AMOUNT | 85 |
| T-05 | INV-2026-0110 | INVOICE_REFERENCE, EXACT_AMOUNT | 85 |
T-03 and T-06 receive no suggestion and appear in the unresolved list.
How a reviewer works through it
The export then contains three allocations, totalling €3,840.00, each with the approver's name and time. The audit log shows every approval and rejection, and the refused approval leaves no allocation behind.
The payment allocation workflow is deliberately strict. Every suggestion starts as pending, including a perfect score of 100. Nothing is final until a named person approves it.
In the current demo, approving a suggestion allocates the largest amount the caps allow. Choosing a smaller amount by hand is supported by the engine but not yet exposed in the interface.
Bank reconciliation exception management is where most of the real work sits. DIGITAL EUR does not try to make exceptions disappear; it makes each one visible and leaves the decision with a person.
| Exception | What the engine shows | Who decides | Where it ends up |
|---|---|---|---|
| Partial payment | POSSIBLE_PARTIAL_PAYMENT, lower score | Reviewer | Invoice partially allocated, remainder open |
| Overpayment | AMOUNT_EXCEEDS_OUTSTANDING, lower score | Reviewer | Allocation capped at the outstanding amount; the surplus stays on the transaction |
| Duplicate payment | Plausible suggestion; approval refused once the invoice is fully allocated | Reviewer | Rejected suggestion, credit left unallocated for a refund decision |
| Two equally likely invoices | AMBIGUOUS flag on each tied candidate | Reviewer | Whichever allocation is approved; the other is rejected |
| Credit with no evidence | No suggestion | Reviewer | Unresolved list |
| Debit (fees, supplier payments) | No suggestion | Reviewer confirms | Unresolved list, never matched to receivables |
The unresolved list works as an on-screen unreconciled transactions report: every bank line without a suggestion, credit or debit, in one place. In the demo it is shown in the review screen but not exported; the CSV export contains approved allocations only.
The Reconciliation Lab follows five steps, the same sequence planned for the full product.
A useful way to evaluate the engine is to feed it the awkward cases from your own experience, using anonymised data. If the suggestion and its reasons are what an experienced bookkeeper would expect, the rules are doing their job. If not, the reason codes show exactly where they differ.
Most bank reconciliation automation software and payment matching software aims to remove the human step for clear cases. Visma eAccounting, for example, documents automatic posting when the invoice number, the amount and either the name or the IBAN correspond, on accounts with direct bank integration; easybill documents posting only unambiguous matches and handling partial and bulk payments manually. Automatic invoice reconciliation of that kind is reasonable when your bank feed is clean and a wrong posting is cheap to undo.
DIGITAL EUR makes the opposite trade-off: it proposes, explains and waits. The table shows how the three common approaches behave on the cases from the worked example.
| Case | Spreadsheet lookup | Typical auto-posting rule | DIGITAL EUR |
|---|---|---|---|
| Exact reference, amount and IBAN | Found if the reference is typed cleanly | Posted automatically | Suggested at 100, waits for approval |
| Reference reformatted by the bank | Often missed by an exact lookup | Depends on the tool's parsing | Matched as whole tokens |
| Partial payment | Easy to mark as paid by mistake | Usually left for manual handling | Suggested with a penalty; remainder stays open |
| Duplicate payment | Easy to miss | Depends on the tool | Second approval refused by the cap |
| Equal amount, no other evidence | Tempting to match | Not posted where rules require a reference or IBAN | Not suggested; listed as unresolved |
| Record of who decided | None unless kept by hand | Activity log of automatic postings | Named approver and time for every allocation |
None of these approaches is right for everyone. If you want hands-off posting from a live bank feed, an accounting package will suit you better. If you want every allocation checked and explained, that is what this tool is for.
Whether you choose DIGITAL EUR or another product, these questions separate tools that reduce risk from tools that hide it.
| Question to ask | Why it matters | DIGITAL EUR today |
|---|---|---|
| Can it show why each match was made? | Unexplained matches cannot be checked or audited | Yes: reason codes and a rule score on every suggestion |
| Will it suggest a match on amount alone? | Equal amounts are common and cause false matches | No: reference, IBAN or name evidence is required |
| Does it treat references as whole tokens? | Substring search confuses INV-12 with INV-123 | Yes |
| Does a person approve every allocation? | Silent auto-posting moves errors into your ledger | Yes, even for a score of 100 |
| Are allocations capped at the outstanding amount? | Prevents over-allocation and duplicate settlement | Yes, at invoice and transaction level |
| Does it flag ties instead of guessing? | Guessing between equal candidates is a coin toss | Yes: AMBIGUOUS flag |
| Is there an append-only audit log? | You need to show who decided what, and when | Yes, in the demo session (not stored) |
| How is money calculated? | Floating-point arithmetic introduces rounding errors | Integer cents |
| Which statement formats does it read? | Format determines how much payment data survives | CSV today; camt.053 planned |
| Does it need your bank login or hold funds? | Each adds risk and regulatory scope | No, and it never will hold or move money |
| Are exports safe to open in a spreadsheet? | Remittance text comes from third parties | Yes: formula-trigger cells are neutralised |
| What is live and what is a roadmap item? | Marketing pages often blur the two | Stated on this page and on security |
DIGITAL EUR is a CSV reconciliation tool first. You import bank CSV and invoice files directly, so bank statement import works without accounting software and without a bank login.
DEMO (available now): CSV. The Reconciliation Lab accepts two comma-separated files, pasted or chosen from disk.
| File | Required columns | Optional columns |
|---|---|---|
| Invoices | invoice_id, customer_name, currency, amount_due, reference | customer_iban |
| Transactions | transaction_id, currency, amount, remittance, direction | counterparty_name, counterparty_iban |
Amounts must be non-negative with a dot as decimal separator and at most two decimals (for example 1250.00); the direction column (CRDT or DBIT) carries the sign. Each file may be up to 2 MB and 20,000 data rows. Duplicate invoice or transaction IDs, missing columns and malformed amounts are rejected with the line number.
PLANNED: ISO 20022 camt.053. For camt.053 reconciliation, importing the end-of-day XML statement would let the structured creditor reference, end-to-end identification and counterparty details arrive in their own fields, without spreadsheet clean-up. That is the main advantage of ISO 20022 bank statement matching over a CSV export. It is not available yet, and we will not describe it as available until it is.
Not planned: live bank connections or payment initiation.
There is no multi-bank reconciliation dashboard, and one is not on the published plan. What works today is simpler: you can combine statement exports from several accounts into one transactions CSV, as long as every transaction ID is unique. Because the file has no account column, prefix each ID with a short account label (for example DE-01-0457 and AT-02-0457) so you can still tell, in the review screen and the export, which account a payment came from. Matching itself does not depend on the receiving account; it depends on the reference, amount and payer.
DEMO (today):
PLANNED (required before any customer data is accepted): server-side tenant isolation with tests, secure sessions and MFA-ready authentication, XXE-safe parsing for camt.053, encryption in transit and at rest, append-only stored audit events, idempotent imports, tested backups, a written retention and deletion policy, and data processing agreements. The full list is on our security page. We do not claim certifications.
Nothing can be bought yet. The pricing page shows illustrative pre-launch prices before tax: Solo at €19 a month (up to 100 matched transactions), Growth at €49 a month (up to 1,000 matched transactions, camt.053 import and saved matching rules) and Agency at €129 a month (multi-client workspace for accountants). They may change after customer interviews. Every planned plan includes the same matching rules, human approval, audit log and CSV export.
Reconciliation is one part of receivables. Related modules cover invoice payment tracking and human-approved collections.
Not quite. Bank reconciliation software usually checks that your ledger agrees with your bank balance. DIGITAL EUR works one level down: it decides which incoming transfer settles which invoice, and hands the approved result to your accounting system.
No. It works from files you export from online banking. There is no bank login, and DIGITAL EUR never holds, sends or moves money.
No. It is the sum of fixed weights for the evidence found, from 0 to 100. Two suggestions with the same top score are flagged as ambiguous rather than ranked arbitrarily.
No. Every suggestion, including a score of 100, waits for a named person to approve it, and the approval is written to the audit log.
It prevents them from being booked twice. A second payment for the same invoice is still suggested, because it looks plausible on its own, but approving it is refused once the invoice is fully allocated.
Not yet. CSV is supported in the demo today. camt.053 import is planned. No other statement formats have been announced, so use your bank's CSV export for now.
It appears in the unresolved list for a person to investigate. It is not allocated simply because its amount equals an open invoice.
We advise against it. The demo processes files only in your browser and stores nothing, but it is built for evaluation with synthetic or anonymised data until the planned security controls are in place.