Authenticate via OAuth 2.0: POST to the token endpoint with client_credentials grant using your client_id and client_secret to get an access_token
Create or retrieve the source and destination Dwolla Customer resources via POST /customers (with type: 'personal' or 'business') and store the returned customer resource URLs
Add and verify a funding source for each customer: POST /customers/{id}/funding-sources with routingNumber, accountNumber, bankAccountType, and name; then verify via micro-deposits (POST /funding-sources/{id}/micro-deposits) or instant verification
Initiate the transfer: POST /transfers with _links containing source and destination funding-source URLs, amount object (value and currency), and optional metadata
Poll GET /transfers/{id} or subscribe to webhooks (transfer:created, transfer:completed, transfer:failed, transfer:cancelled) to track the transfer lifecycle
Known gotchas
Unverified Customer accounts have lower transaction limits; ensure customers complete the verification flow before initiating transfers above the unverified threshold
Dwolla sandbox does not simulate all failure scenarios automatically; use the sandbox simulation endpoints to test returns and failures
Funding sources must be in 'verified' status before they can be used as a source of funds; attempting a transfer from an unverified source returns a validation error
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