Obtain an OAuth 2.0 access token: POST /oauth2/token with client_credentials grant using your client_id and client_secret
Create an account: POST /accounts with accountType ('individual' or 'business'), profile containing name, email, and address; receive an accountID
Link a bank account to the Moov account: POST /accounts/{accountID}/bank-accounts with routingNumber, accountNumber, bankAccountType, and holderName; optionally trigger micro-deposit verification
Initiate a transfer: POST /transfers with source (accountID and paymentMethodID), destination (accountID and paymentMethodID), amount (value in cents and currency), and an optional description
Retrieve transfer status via GET /transfers/{transferID} and handle webhooks for transfer status changes
Known gotchas
Payment methods (bank account, card, wallet) must be explicitly retrieved via GET /accounts/{id}/payment-methods to find the paymentMethodID required for transfer initiation — the bank account ID alone is insufficient
Moov uses capability-based access control; ensure your facilitator account has the appropriate capabilities (e.g. 'transfers', 'send-funds') enabled for the accounts involved, or transfers will be rejected
Moov's sandbox uses fixed test routing numbers and account numbers; do not use real account credentials in sandbox as they will be validated and may trigger unnecessary KYC flags
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