Skip to main content
Bring Your Own Integration for Plaid (BYOI Plaid) lets your application use its own Plaid account for bank linking. When BYOI Plaid is on, Fluz uses your Plaid client ID and secret for the bank links that your users make through your application.
BYOI Plaid is a setting for the full application. It applies to all users of your application. Your users do not need a new permission, and you do not change your bank linking code.

Terms on this page

How BYOI Plaid works

  1. You add the BYOI_PLAID permission to your application.
  2. The developer registers your Plaid client ID and secret with registerPlaidIntegration.
  3. Fluz sends a test request to Plaid to validate the credentials. Then Fluz stores them in an encrypted vault.
  4. BYOI Plaid starts immediately for all users of your application.
  5. Each new bank link that a user makes through your application uses your Plaid credentials.
You continue to use the same operations: createPlaidLinkToken, completePlaidLink, and the other operations in Linking Bank Account via Plaid. Each bank link always uses the Plaid credentials that created it. Fluz can also use the bank links that your credentials created. For example, Fluz checks the balance of these bank accounts. For these requests, Fluz uses your Plaid credentials.

Before you start

Environments

Each Fluz environment uses one Plaid environment. Register your credentials in each Fluz environment separately. A registration in one environment does not apply to the other environment.

Step 1: Add the BYOI_PLAID permission to your application

  1. In the developer dashboard, open Your apps.
  2. Select your application.
  3. Open the permissions tab that matches the Fluz account of the developer:
    • For a consumer account, open the Permissions tab.
    • For a business account, open the Business permissions tab.
  4. Select Link bank accounts through your own Plaid integration. This is the BYOI_PLAID permission in the Update Account Info group.
  5. Save the application.

Step 2: Get an access token for the developer

The Plaid integration operations need a user access token with these properties:
  • The token belongs to the developer of the application.
  • The token includes the BYOI_PLAID scope.
  • The token is a Bearer token. Basic auth is not accepted.
To get this token:
  1. Send the developer through the OAuth grant flow. See Client-Facing OAuth Grant Flow.
  2. Log in as the developer and approve the requested permissions. The consent screen includes BYOI_PLAID because you added it in Step 1.
  3. Exchange the authorization code for tokens. See Exchange an OAuth Code.
  4. Make sure that the scope list in the token response includes BYOI_PLAID.
If the developer authorized your application before you added BYOI_PLAID, the old grant does not include it. Do the OAuth grant flow again. Send the token in each request:

Step 3: Register your Plaid credentials

Input fields

Response fields

The API never returns your client ID or your secret.

Values of change

Registration rules

  • Each application can have one active Plaid integration in each environment.
  • Fluz validates the credentials with Plaid before it saves them. If Plaid rejects them, Fluz saves nothing.
  • Registration turns on BYOI Plaid for the application. The change starts with the next request of each user.

Read your Plaid integration

The query returns the active integration. If no integration is active, it returns the most recently changed integration. If you never registered an integration in this environment, it returns null.

Replace your Plaid secret

Use this procedure when you rotate your Plaid secret. Your existing bank links continue to work.
  1. In the Plaid Dashboard, create a new secret for the same client ID.
  2. Call registerPlaidIntegration with the same clientId and the new secret.
  3. Make sure that change is UPDATED.
  4. In the Plaid Dashboard, delete the old secret.

Change your Plaid client ID

Fluz does not replace an active client ID with a different client ID. If you try, Fluz returns PLAID_INTEGRATION_CLIENT_ID_MISMATCH.
  1. Call disablePlaidIntegration.
  2. Call registerPlaidIntegration with the new clientId and secret.
  3. Make sure that change is CREATED.
Bank links made with the old client ID stop working when you change the client ID. Your users must link these banks again. The old bank links work again only if you register the old client ID again.

Disable BYOI Plaid

If an integration was active, change is DISABLED. If no integration was active, change is UNCHANGED. After you disable BYOI Plaid:
  • New bank links use Fluz Plaid.
  • Bank links made with your credentials stop working. Fluz cannot get new balances or transactions for them, and the users cannot relink them.
  • Fluz does not process Plaid webhooks for bank links made with your credentials.
To turn BYOI Plaid on again, register the same client ID. The change value is REACTIVATED, and the old bank links work again.
Disable BYOI Plaid before you remove the BYOI_PLAID permission from your application. Removing the permission does not turn off BYOI Plaid. It only prevents new tokens from including BYOI_PLAID. Without that scope, you cannot call disablePlaidIntegration.
When BYOI Plaid is on, the linking flow does not change. Follow Linking Bank Account via Plaid:
  1. Call createPlaidLinkToken with an empty input.
  2. Open Plaid Link with the returned linkToken.
  3. Send the public_token from Plaid Link onSuccess to completePlaidLink.
  4. Store the returned platformItemId.
Plaid Link shows Fluz as the application name. Fluz requests 730 days of transaction history.
Do not send deviceOs when BYOI Plaid is on. With deviceOs, Fluz sends Plaid the OAuth redirect settings of the Fluz mobile app. Plaid does not accept these settings for your client ID, so the Link token request fails. Use Plaid Link for web without deviceOs.
completePlaidLink returns only the bank accounts that your application can use. See the table in Which credentials each bank link uses. A bank link can disconnect, for example when a user changes the bank password. Applications with a Plaid integration use two operations to repair a bank link:
  • createPlaidRelinkToken creates a Plaid update-mode Link token with the credentials that created the bank link.
  • completePlaidRelink confirms the repair with Plaid and updates the bank data. It does not need a publicToken.
These operations work for bank links made with your credentials and for bank links made with Fluz Plaid. They keep the same Plaid access token and the same platformItemId.
  1. Create the relink token.
  2. Open Plaid Link with the returned linkToken. The value of mode is RELINK.
  3. When Plaid Link calls onSuccess, complete the relink.
  4. If you get PLAID_ITEM_STILL_DISCONNECTED, Plaid has not finished the repair. Wait a short time, then call completePlaidRelink again.
If you use the relink flow of Relinking Bank Accounts (createPlaidLinkToken and completePlaidLink with platformItemId), it continues to work. If Plaid rejects the publicToken of that flow, Fluz completes the relink through the bank link automatically.

Webhooks

You do not need a webhook endpoint. When Fluz creates a Link token with your credentials, Fluz sets the Plaid webhook URL to a Fluz URL for your integration. Plaid sends the updates for these bank links to Fluz. Do not change the webhook URL of these bank links, for example with the Plaid /item/webhook/update endpoint. If you change it, Fluz stops receiving updates for the bank link.

Plaid requests made with your credentials

Fluz sends these Plaid requests with your credentials. Plaid charges your Plaid account for them, as specified in your Plaid contract.

Errors

Each GraphQL error has a Fluz error code in extensions.code. BYOI Plaid errors also have a specific value in extensions.reason.

Errors from the Plaid integration operations

Errors from bank linking operations

If createPlaidLinkToken fails after you register, make sure that your client ID has access to Auth, Transactions, Identity, and Signal in the matching Plaid environment. Also make sure that you do not send deviceOs.

Security

  • Fluz stores your client ID and secret in an encrypted vault. The API never returns them.
  • The API never returns Plaid access tokens, Plaid public tokens, bank account numbers, or routing numbers.
  • Only the developer of the application can register, read, or disable its Plaid integration.

API reference