Ensure the Item has the 'transfer' product; if not, re-link with transfer included in products
POST /transfer/authorization/create with access_token, account_id, type ('debit' or 'credit'), network ('ach' or 'same-day-ach'), amount, currency, and user object; note the authorization_id and decision in the response
Check decision field: only proceed if decision is 'approved'; if 'declined' inspect decision_rationale and do not create the transfer
POST /transfer/create with authorization_id, description (max 10 chars for ACH), and metadata within approximately 1 hour of authorization creation before it expires
Poll /transfer/get or consume the TRANSFER_EVENTS_UPDATE webhook to track status transitions (pending → posted → settled or failed)
For failed transfers check the failure_reason object and decide whether to retry with a fresh authorization
Known gotchas
Transfer authorizations expire in approximately 1 hour; attempting /transfer/create after expiry returns an AUTHORIZATION_EXPIRED error requiring a new authorization
The description field is truncated to 10 characters for standard ACH and appears on the receiver's bank statement; choose carefully
Plaid Transfer is not available in Sandbox for all networks by default; use the /sandbox/transfer/simulate endpoints to move transfers through status states during testing
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