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
Known 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
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