Repository navigation
connect banks through plaid, behind the plaid experiment - #111
Merged
Merged
Conversation
A bank is connected with Plaid Link in the browser and kept as a connection named by its bank. Agents read its accounts' balances and each account's transactions, live from Plaid, with Read balances and Read transactions each allowed on its own. Signing in to a bank again is Link's update mode, and disconnecting removes the login at Plaid. Plaid is set up with PLAID_CLIENT_ID, PLAID_SECRET and PLAID_ENV, and greyed out in the catalog without them.
…e privacy policy general A collection marked listsAll shows every field a record has in its row on the agent side, so an agent reads a transaction's date, amount, account, category and status without opening it. Plaid's balances and transactions are marked so. The privacy policy describes connected services and their data by kind rather than naming each integration, and services connected through a third party, such as Plaid, in one section, so a new integration doesn't need it changed.
…ng email in the privacy policy
- keep the plaid experiment on the shared catalog (isOffered), so the MCP instructions leave Plaid out for organizations without it - sign in to a bank already connected again without the experiment - remove the login at Plaid when the connection can't be saved - refuse impossible days in searches and ids instead of throwing - write amounts with their currency's digits, and every digit for one without an ISO code - load Plaid's script only once Link is opened - reuse Row for agent-side lists of every field, keeping Open in links - share the page token helper between the Plaid and Calendar connectors
hkonsti
force-pushed
the
hkonsti/plaid-integration-for-pap
branch
from
October 16, 2026 20:35
139da28 to
580a317
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Agents can read bank accounts through Plaid: balances and transactions, read-only, US and Canada. Banks sit behind the new
plaidexperiment, so only organizations with it turned on in the internal admin can connect one.Connecting
react-plaid-link) at/connections/new/plaidand/welcome/connections/plaid. An OAuth bank signs in through a popup, so there's no redirect URI.POST /api/connections/plaid/link-tokenmakes the Link token, asking for two years of Transactions.POST /api/connections/plaidwith{publicToken}exchanges what Link returns for an access token.ITEM_LOGIN_REQUIREDtell the agent to ask the person to do this./item/removeat Plaid (beforeDisconnect), which ends Plaid's monthly fee for the login.Reading (
records/plaid-connector.ts, live from Plaid on every request)accounts(Read balances): each account's balances, from/accounts/get. These are as of Plaid's last update, so there's no per-request Balance fee.transactions(Read transactions) is a nested collection: the accounts at the top, each holding its transactions newest first, 50 per page.listsAll(new in@proxy/integrations) shows every field of a record in its row.Experiment
EXPERIMENTS.plaid.Self-hosting
PLAID_CLIENT_ID,PLAID_SECRETandPLAID_ENV(sandboxorproduction) are in the env schema,.env.example,docker-compose.ymlandrender.yaml.connections/plaid.Privacy policy
Why
Agents reading bank statements was the ask. Plaid's Transactions product covers it at $0.30 per connected login per month on Pay As You Go, and the Trial covers 10 logins for new US and Canada teams. The experiment lets us run it with a few organizations while Plaid's production review and its attestations are pending.
Tested
/item/removeis called.user_good/pass_good):bun run typecheck,bun run test,bun run lint, docs and website builds.Open workspace in Conductor