Browse the knowledge base

How the bank-transaction matching pipeline works

Every imported bank transaction is scored against your open invoices on four signals: invoice number (40 pts), amount (25), date (20), counterparty (15). 90+ links silently, 70–89 links with a review flag, 50–69 waits for your confirmation in the Matching inbox. Matches without an invoice number are only confirmed silently when the payment is recent (within 30 days) and unambiguous — anything older or ambiguous is queued for your review.

What this article is about

One bank payment matched the right invoice silently, another shows up as a suggestion waiting for your click, and a third matched nothing. The matching pipeline decides all three, and it follows a deterministic scoring model that's worth knowing. Everything it does automatically is visible, explainable ("Why this match?"), and undoable — see why this matched, and how to undo.

The four scoring signals

When a transaction lands from a bank-statement upload, the pipeline scores it against your open invoices. Candidates are searched within a ±60-day window around the payment by default. The score is a weighted sum of four signals, 100 points max:

Signal Max points What it checks
Invoice number 40 The invoice number appears in the bank reference field (full points), near a payment keyword like "inv", "ref" or "bill" in the description (slightly less), or anywhere without such context (much less — a guard against coincidental digit runs). Tried with and without leading zeros.
Amount 25 Exact match earns full points. Any difference under €5 still scores well, and a percentage ladder scores deviations up to 20% — tolerating bank fees, tips, and early-payment discounts. Currency and money direction must match, or the signal scores zero.
Date 20 Measured against both the invoice date and the due date — the better one counts. Full points for same-day payment, sliding down over 90 days after the date; small credit for prepayments up to 14 days before.
Counterparty 15 An exact IBAN match with the vendor's saved bank details earns instant full points. Otherwise a fuzzy name match against the vendor name and every spelling the system has learned — each confirmed match teaches it new bank-side spellings of the vendor's name.

The behaviour tiers

Score Tier What happens
≥ 90 Strong (green) Silent auto-match. Linked, no action needed — still visible and undoable.
70–89 Likely (amber) Auto-matched with a review flag so someone spot-checks it.
50–69 Possible (blue) Suggestion in the Matching inbox — you approve or reject.
30–49 Weak (gray) Hidden suggestion, shown only via the "Show all" toggle.
< 30 No suggestion created.

The thresholds and windows are tuned automatically — there are no user-facing threshold settings to maintain. If your business runs on unusually long payment terms and matches seem to cut off too early, write to [email protected].

Silent-match safety

Silent linking has extra guards beyond the score, built for the classic failure case: an old open invoice with the same vendor and amount grabbing this month's payment.

  • The 30-day rule. A match based only on "vendor IBAN + exact amount" — no invoice number anywhere in the payment text — is linked silently only when the payment is within 30 days of the invoice or due date (whichever is nearer). Older matches are still linked, but flagged for your review instead of silent.
  • The ambiguity guard. If two open invoices from the same vendor have the exact same amount and the payment date can't tell them apart, the system never silently picks one. It links with a review flag and asks you to confirm which invoice the payment belongs to.
  • The 90-day bundle rule. The one fully-silent multi-invoice case — several same-vendor, same-date invoices summing exactly to one payment — only fires when every invoice is within 90 days of the payment.

One payment, several invoices

A single bank payment covering multiple invoices is handled natively: when the payment text mentions two or more invoice numbers and the invoices add up to the payment, the inbox shows one grouped "Bundle" entry you approve or reject in a single action. Partial payments and the manual split editor exist too — see split and bundled payments.

The pipeline learns from you

Every match you confirm or reject feeds a per-company memory. A vendor you've confirmed three times (with few rejections) becomes trusted and gets a modest score boost on future suggestions — but the boost never pushes a match across an auto-link or silent-match boundary from below. Learning re-ranks and proposes; it never silently escalates. Details in how matching learns from you.

When matching runs

  • On bank-statement import — every new transaction is scored against open invoices.
  • On every new invoice — scanned, emailed-in, or created manually, the invoice is scored against open transactions. This catches invoices that arrive after you already paid.
  • Nightly safety sweep at 03:00 UTC — catches anything the event-driven runs missed.

You never trigger matching manually.

Overriding and undoing

  • Undo any matchUnmatch on the transaction (web) or the Matched segment (mobile) reverts the invoice to unpaid and restores the transaction. Bundles revert fully too. Every auto-match is recorded in the audit trail with its score and signals.
  • Manual link — search unpaid invoices from the transaction and link directly when the score missed it.
  • Custom rules — per-company rules can auto-categorize or ignore recurring transactions (e.g. transfers between your own accounts). Rules never link a transaction to an invoice — that always goes through scoring or your explicit confirmation. See creating a custom matching rule.

Troubleshooting

It matched the wrong invoice. Unmatch it, then approve the right suggestion or link manually. Open "Why this match?" first — the signal breakdown usually shows which signal misfired.

It missed an obvious match. Check the invoice is still open (paid invoices are excluded), the currencies match, and the payment is within the search window. Then link manually.

A same-vendor payment now asks for review instead of matching silently. That's the ambiguity guard or the 30-day rule doing its job — confirm once and you're done.

Related

Didn't answer your question? Write to [email protected] · the AI chat in the bottom-right corner answers most common questions.