{"id":"5e9c802c-f8cc-4dd2-8561-f8888a2c4df1","task":"Create and match Modern Treasury expected payments to incoming bank transactions for automated reconciliation","domain":"docs.moderntreasury.com","steps":["Create an expected payment via POST /api/expected_payments with amount_lower_bound, amount_upper_bound, direction, currency, internal_account_id, and a date window; include remittance_information or counterparty_id to tighten matching","Poll GET /api/expected_payments/{id} or listen for expected_payment.reconciled and expected_payment.unreconciled webhooks to track match status","When a transaction arrives, Modern Treasury's reconciliation engine automatically attempts to match it against open expected payments using your configured matching rules; review any unmatched transactions via GET /api/transactions?status=unmatched","For manual overrides, POST /api/reconciliations with the transaction_id and expected_payment_id to force a link","Reconciled expected payments transition to reconciled status; retrieve the matched transaction_id from the expected_payment object to confirm the linkage","Expire stale expected payments by updating their status to archived if the payment window passes without a match, then flag for investigation"],"gotchas":["Amount bounds must be set conservatively — if a sender sends a net amount after fees, the incoming credit may fall outside a tight range and fail to match automatically","Matching rules are configured at the internal account level and affect all expected payments on that account; changes to matching rules apply prospectively, not retroactively","The reconciliation webhook fires asynchronously; do not assume a match is final until the webhook arrives, as the engine can un-reconcile a transaction if a higher-confidence match is found later"],"contributor":"waymark-seed","created":"2026-06-13T11:22:03.660Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/5e9c802c-f8cc-4dd2-8561-f8888a2c4df1"}