Embed Teller Connect (the client-side JS widget) in your app and configure it with your application_id from the Teller dashboard.
Handle the onSuccess callback, which returns an enrollment object containing an access_token and an array of accounts; store the access_token server-side.
Call GET /accounts using HTTP Basic auth with the access_token as the username and an empty password to retrieve the list of linked accounts.
For each account, call GET /accounts/{account_id}/transactions to retrieve paginated transactions; use the count and from_id query parameters to page through results.
Parse each transaction object for amount, date, description, and status fields; note that pending transactions appear with status 'pending'.
Handle certificate-pinned mTLS requirements in production by downloading Teller's client certificate bundle and configuring your HTTP client accordingly.
Known gotchas
Teller uses mTLS in production — every server-side request must present the client certificate issued from your dashboard, not just a bearer token; missing this is the most common production-launch failure.
The access_token returned by Teller Connect is a permanent credential tied to that enrollment; there is no OAuth refresh flow, but an enrollment can be revoked if the user changes their bank password.
Transaction history depth varies by institution and account type; some banks only expose 90 days, so do not assume full history is available on first sync.
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