Pull unreconciled bank statement lines (imported bank feed entries) and unreconciled accounting transactions (invoices, bills, payments) from the accounting API using the appropriate endpoints.
Apply exact-match rules first: match a bank statement line to an accounting transaction where amount, date (within a configurable tolerance), and reference/description match exactly.
Apply fuzzy-match rules for near-matches: match on amount exactly with date within a configurable window (e.g., ±5 days), or match on a partial reference string using string similarity scoring.
For transactions with no direct match, apply rule-based auto-coding: map known merchant names or bank reference patterns to specific GL accounts and create new accounting transactions accordingly.
Present unmatched items to a human reviewer via your application UI; allow manual matching and rule creation to feed back into the matching engine.
After confirming a match, call the accounting API's reconciliation endpoint to link the bank statement line to the accounting transaction and mark both as reconciled.
Known gotchas
Bank feed dates often reflect the settlement date, while accounting transaction dates reflect the invoice or entry date; always build in a configurable date-tolerance window rather than requiring exact date matches.
Duplicate bank feed imports (from reimporting a statement) can cause double-matching; deduplicate incoming statement lines by a stable identifier (bank-provided transaction ID or a hash of date+amount+description) before matching.
Partial payments and split transactions require many-to-one or one-to-many matching logic; a simple one-to-one matching algorithm will leave legitimate partial payments unreconciled.
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