Reconciliation
Bank statement reconciliation and payment-to-invoice matching with AI-powered multi-pass algorithms
Overview#
Reconciliation is the process of matching and verifying that two independent sets of records agree. Artifi handles two distinct reconciliation domains:
| Domain | What Gets Matched | Purpose |
|---|---|---|
| Bank Statement Reconciliation | Bank statement lines to GL transactions | Verify accounting records match actual bank activity |
| Transaction Reconciliation | Payment transactions to invoice transactions | Link payments to invoices, update aging, track what has been paid |
Why Reconcile?#
| Motivation | Description |
|---|---|
| Accuracy | Verify all transactions are recorded correctly; catch errors before they compound |
| Fraud Detection | Identify unauthorized or suspicious transactions |
| Aging Accuracy | Match payments to invoices so AP/AR aging reports reflect reality |
| Cash Position | Confirm actual cash balance versus book balance |
| Compliance | Meet SOX, audit, and regulatory requirements |
| Follow-Up | Identify orphaned payments (money paid but no invoice received) |
Two Approaches#
| Approach | Best For | How It Works |
|---|---|---|
| Interactive (AI Assistant) | Bank statement reconciliation, ad-hoc matching | You talk to the AI assistant, which finds matches and creates them |
| Automated Agents | High-volume bank processing, payment-to-invoice matching | Agents process automatically on schedules, webhooks, or manual triggers |
Temporal Ordering#
Reconciliation follows a natural sequence in the accounting workflow:
- Invoice created -- Bill processor or manual entry creates AP/AR invoice
- Payment created -- Bank transaction processor or payment runs create payment records
- Bank reconciliation -- Matches bank statement lines to GL transactions
- Transaction reconciliation -- Matches payments to invoices, updates aging
- Bills collection -- Follows up on orphaned payments (paid but no invoice received)
Bank Statement Reconciliation#
Bank statement reconciliation ensures every line on your bank statement has a corresponding entry in your accounting system.
How It Works#
Each bank statement line has a reconciliation status:
Unmatched --> Matched --> Reconciled
|
+--> Excluded
- Unmatched -- No GL transaction linked yet
- Matched -- Linked to a GL transaction
- Excluded -- Intentionally skipped (duplicates, non-business items, internal transfers)
- Reconciled -- Fully verified
Interactive Matching (AI Assistant)#
The AI assistant can handle bank reconciliation conversationally:
- Lists unmatched lines -- Shows you which statement lines need attention
- Finds matching GL transactions -- Searches by amount, date, vendor, and description
- Creates matches -- Links statement lines to GL transactions with confidence notes
The AI assistant applies judgment based on the match quality:
| Scenario | Action |
|---|---|
| Exact amount, same date, matching reference | Matches immediately |
| Amount matches, date within 3 days | Matches with a note |
| Amount close (within 2%), description similar | Matches with explanation |
| Multiple possible matches | Asks you which one is correct |
| No match found | Flags for investigation |
Automated Bank Processing#
The bank transaction processor agent handles all bank transaction sources automatically:
| Source | Processing |
|---|---|
| Stripe | Charges become AR payments, fees become expenses, payouts become bank transfers |
| Bank (Salt Edge/LHV) | Credits matched to AR or recorded as unmatched revenue; debits matched to AP or recorded as unmatched expense |
| Manual CSV Import | Same processing with heavier description parsing |
The agent is triggered automatically by bank connector webhooks, or manually when you import a CSV statement.
Available Operations#
| Operation | Description |
|---|---|
| Match | Link a bank statement line to a GL transaction |
| Unmatch | Remove a match (with audit trail) |
| Exclude | Mark a line as excluded from reconciliation |
Handling Exceptions#
| Exception Type | Action |
|---|---|
| Bank fees | Post adjusting journal entry, then match |
| Interest income | Post adjusting journal entry, then match |
| NSF returns | Reverse deposit, update AR, then match |
| Outstanding checks | Document for next period (will clear later) |
| Errors | Investigate with bank or correct GL |
Reconciliation Equation#
Bank Balance (per statement)
+ Deposits in Transit
- Outstanding Checks
+/- Bank Errors
= Book Balance (per GL)
Transaction Reconciliation#
Why Transaction Reconciliation?#
When bank statements are processed, the system creates AP_PAYMENT and AR_PAYMENT transactions confirming money moved. But these payments are standalone -- they have no link to the corresponding invoices. This means:
- Invoice aging reports may be inaccurate
- You cannot see which invoices have been paid
- Amount due and amount paid fields remain stale
Transaction reconciliation fills this gap by matching payments to invoices and updating financial records.
Reconciliation Agent#
The reconciliation agent is an automated system that matches payment transactions to invoice transactions across both AP (vendor) and AR (customer) scopes.
| Aspect | Detail |
|---|---|
| Scopes | Vendor (AP) and Customer (AR) |
| Matching | 6-pass algorithm: exact, reference, cross-reference, FX tolerance, amount grouping, fuzzy AI |
| Auto-apply | Matches above the confidence threshold are applied automatically |
| Manual review | Below-threshold matches appear in the admin dashboard for human review |
6-Pass Matching Algorithm#
The matching algorithm runs per vendor or customer, processing remaining items from each pass. All amount comparisons use functional currency amounts.
Pass 1: Exact Amount Match
- Confidence: 1.0 (highest)
- Strategy: Same party + exact amount + date within 90 days
- Matches the closest-dated invoice first
Pass 2: Reference Number Match
- Confidence: 0.95
- Strategy: Payment reference matches invoice reference (case-insensitive)
- Amount must be within tolerance ($5 or 1%)
Pass 3: Cross-Reference Match
- Confidence: 0.92 -- 0.95
- Strategy: Searches for invoice reference tokens inside payment descriptions, and vice versa
- Example: payment description "Payment for INV-2025-0042" matches invoice reference "INV-2025-0042"
Pass 4: Approximate Amount Match (FX Tolerance)
- Confidence: 0.85 -- 0.95 (varies by difference percentage)
- Strategy: Matches amounts within FX tolerance (hard cap: never match more than 5% difference)
| Difference | Confidence |
|---|---|
| Less than 0.5% | 0.95 |
| 0.5% -- 1.5% | 0.92 |
| 1.5% -- 3.0% | 0.88 |
| 3.0% -- 5.0% | 0.85 |
| Over 5.0% | No match |
Pass 5: Amount Grouping
- Confidence: 0.50 -- 0.95 (variable)
- Matching patterns:
- 1:1 -- Single payment to single invoice
- 1:N -- One payment covers multiple invoices (sum matches)
- N:1 -- Multiple payments cover one invoice
Pass 6: AI Fuzzy Match
- Confidence: 0.70
- Called only when a party has both unmatched payments and unmatched invoices after passes 1-5
- Uses AI to identify fuzzy matches from descriptions and context
What Happens When a Match Is Confirmed#
- Invoice financials updated -- Amount paid increases, amount due decreases, status changes to "paid" or "partial"
- Payment reconciliation status updated to "reconciled"
- Below-threshold matches are recorded but not applied -- they appear in the dashboard for manual review
Variance Resolution#
When a payment matches an invoice but amounts differ:
| Scenario | Action |
|---|---|
| Multi-currency difference | FX gain/loss journal entry posted automatically |
| Same-currency difference | Left for manual resolution in the admin dashboard |
| Rounding (under $0.01) | Ignored |
The admin dashboard shows a "Write Off" button for small differences (up to $100). Larger differences require adjustment transactions through normal workflows.
Multi-Currency Matching#
All matching passes compare transactions in functional currency (the entity's base currency), not document currency. This enables matching a EUR payment to a USD invoice when the entity operates in USD, accounting for exchange rate differences.
Bills Collector Agent#
After transaction reconciliation, some payments may have no matching invoice -- meaning the business paid but never received documentation. The bills collector agent identifies these orphaned payments and sends email reminders to vendors requesting invoices.
How it works:
- Identifies unmatched AP payments grouped by vendor
- Checks reminder escalation history (1st notice, 2nd notice, final notice)
- Composes and sends email reminders at configurable intervals (default: 7, 14, and 30 days)
Configuration:
| Setting | Default | Description |
|---|---|---|
| Minimum payment amount | $50 | Skip small payments |
| Lookback period | 90 days | How far back to search |
| Reminder intervals | 7, 14, 30 days | Escalation timing |
| Max vendors per run | 100 | Processing limit |
Admin Dashboard#
Bank Statements Page#
Flat list of all bank statement lines showing reconciliation status, with filters for entity, bank account, status, date range, and search. Stats cards show total lines, unmatched, matched, and excluded counts.
Reconciliation Runs#
List of all reconciliation agent runs with match statistics. Each run shows scope (vendor/customer), match ratio, amount matched, and duration.
Run Detail#
Detailed view of a reconciliation run showing:
- Summary stats -- Scanned, matched, partial, review, unmatched, match rate
- Items table -- Party, payment details, invoice details, match status, method, confidence, applied amount, difference
- Actions -- Confirm match, write off small differences, reject incorrect matches
- Void -- Reverse all applied matches in a run (restores invoice financials)
Common Use Cases#
Monthly Bank Reconciliation#
- Import bank statement (CSV, MT940, or via bank connector)
- AI assistant or agent analyzes and matches each line
- Handle exceptions (bank fees, interest, NSF returns)
- Verify completion when all lines are resolved
Automated Payment-to-Invoice Matching#
- Bank statements processed automatically by the bank transaction processor
- Reconciliation agent matches payments to invoices using the 6-pass algorithm
- High-confidence matches are applied automatically
- Low-confidence matches appear for manual review in the dashboard
Following Up on Missing Invoices#
- Transaction reconciliation identifies payments with no matching invoice
- Bills collector agent sends reminders to vendors
- When invoices arrive, they are processed and matched to the existing payments
Subscribe to new posts
Get notified when we publish new insights on AI-native finance.