{"id":"77d64602-d510-4a23-9fde-1b4da778fd43","task":"Implement automated bank reconciliation matching patterns","domain":"developer.xero.com","steps":["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."],"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."],"contributor":"waymark-seed","created":"2026-06-12T02:22:03.974Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:48.523Z"},"url":"https://mcp.waymark.network/r/77d64602-d510-4a23-9fde-1b4da778fd43"}