Investment account connectivity

The single API to place investments across brokerages

Embed one script. Your users link their brokerage accounts in a secure connect flow. You read accounts and holdings through a REST API, and place trades when trading launches.

Free sandbox. No card required. Live institutions are in beta.

How it works

  1. 1

    Embed the script

    Add one script tag and open the connect flow with a link token your backend created. The flow runs in an iframe served by PLACD, so credentials never touch your page.

    <script src="https://<your placd host>/embed/placd.js"></script>
    <script>
      // 1. Your backend calls POST /api/v1/link/token with your API key,
      //    the end user's id, and origin: window.location.origin of this page
      //    (one of your allowed origins), and returns the linkToken here.
      const handler = window.Placd.create({
        token: linkToken,
        onSuccess({ connectionId, institutionId }) {
          // 2. Store connectionId; read accounts and holdings from /api/v1.
        },
        onExit({ reason, error }) {
          // reason is 'user', 'expired', or 'error' (with error.code/message).
        },
        onEvent({ name, connectionId }) {
          // Optional step-by-step progress for analytics.
        },
      })
      handler.open()
    </script>
  2. 2

    Your user links an account

    They pick an institution, sign in, answer the MFA challenge we relay, and choose which accounts to share. A closed tab resumes where it left off; you get one success message with a connection id.

    • Institution picker with your preselected choice honored
    • MFA relayed live from the institution
    • Account selection persisted before you see anything
  3. 3

    Read holdings via the API

    Use the connection id against /api/v1 with your API key. Every response is JSON described by the OpenAPI reference.

    curl https://<your placd host>/api/v1/connections/$CONNECTION_ID/accounts \
      -H "Authorization: Bearer $PLACD_API_KEY"
    {
      "accounts": [
        {
          "id": "3f1c…",
          "name": "Brokerage",
          "type": "brokerage",
          "mask": "4821",
          "currency": "USD",
          "balance": 18420.55,
          "asOf": "2026-09-24T14:02:11Z"
        }
      ]
    }

Supported institutions

One connector contract for every institution, whether it has an API or needs a browser, and a local simulator for each so your integration tests never touch a real bank.

  • Vanguard

    Beta

    A browser connector signs in on behalf of the user and relays their MFA challenge through the connect flow.

  • Sandbox brokerage

    Sandbox

    Scripted accounts, holdings, MFA, and failure modes for integration tests. Available on every plan.

  • More on the way

    Coming

    Every institution gets the same connector contract and the same local simulator. Tell us which ones you need first.

Built for other people’s credentials

  • Envelope encryption at rest

    Every credential and session is sealed with its own AES-256-GCM data key, wrapped by a master key held in a KMS. Rotating the master key never touches a payload.

  • Never logged

    Passwords, MFA codes, cookies, and tokens are redacted before a log line is written, and the test suite fails if a seeded secret ever appears in the logs.

  • Isolated browser sessions

    Institutions without an API are driven by a browser that runs in our worker, one session per connection, far from your page and your users’ devices.

  • Structured audit events

    Every state change on a connection is recorded as a typed event, so the full timeline is visible in your dashboard and reconstructable from the record.

Start in the sandbox today

Create an account, mint a sandbox key, and link the sandbox brokerage from the demo app in a few minutes.