Ingest bank transactions daily via your bank's statement feed, BAI2 file, or camt.053 file; normalize each transaction to a canonical record with amount, currency, value_date, and reference fields
Build a matching key hierarchy: attempt exact reference match first (wire IMAD, ACH trace number, or check number), then fuzzy amount-plus-date match within a configurable tolerance window
Query your internal pending payment ledger for records that are in a submitted or processing state and fall within the date and amount window of each bank transaction
Score each candidate match; apply tiebreaker rules such as counterparty name similarity or remittance data keywords to select the best candidate when multiple records qualify
Mark matched pairs as reconciled in both the bank transaction table and the internal payment record; write the matched pair to a reconciliation_events audit table with match_method and confidence_score
Route unmatched transactions to a manual review queue with a configured aging threshold; escalate items older than a configurable number of days to exception handling
Known gotchas
ACH batch transactions often arrive as a single net credit at the bank, not per-item — you must split the bank transaction across multiple internal payment records using the NACHA addenda or ACH detail file from your ODFI
Bank value dates and internal settlement dates can differ by a day or more due to time zones and banking calendars; build a date tolerance into your matching window rather than requiring exact date equality
Returned and reversed transactions create mirror entries; your algorithm must handle negative amounts and debit/credit inversions without creating duplicate matched pairs
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp