Skip to main content
RapidDev - Software Development Agency
flutterflow-integrationsFlutterFlow API Call

Yodlee

Connect FlutterFlow to Yodlee using a FlutterFlow API Call pointed at a Firebase or Supabase proxy that manages Yodlee's two-tier authentication: an admin token from cobrand credentials and a per-user JWT for each individual's financial data. Account linking uses FastLink, Yodlee's hosted widget, opened in an in-app WebView. Neither token tier ever touches the FlutterFlow client — the proxy mints and holds them all server-side.

What you'll learn

  • How Yodlee's two-tier authentication works — admin token for cobrand operations and per-user JWT for individual financial data
  • How to deploy a Firebase or Supabase proxy that mints both token tiers and stores aggregated financial data for the app to read
  • How to open Yodlee's FastLink account-linking widget in a FlutterFlow WebView using a FastLink token
  • How to fetch and store users' aggregated balances and transactions in Firestore or Supabase for fast app reads
  • How to configure a FlutterFlow API Group that calls your proxy to display financial account summaries and transaction lists
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Advanced18 min read3-5 hoursFinance & AccountingLast updated July 2026RapidDev Engineering Team
TL;DR

Connect FlutterFlow to Yodlee using a FlutterFlow API Call pointed at a Firebase or Supabase proxy that manages Yodlee's two-tier authentication: an admin token from cobrand credentials and a per-user JWT for each individual's financial data. Account linking uses FastLink, Yodlee's hosted widget, opened in an in-app WebView. Neither token tier ever touches the FlutterFlow client — the proxy mints and holds them all server-side.

Quick facts about this guide
FactValue
ToolYodlee
CategoryFinance & Accounting
MethodFlutterFlow API Call
DifficultyAdvanced
Time required3-5 hours
Last updatedJuly 2026

Yodlee's Two-Tier Auth and FastLink — What Makes This Integration Unique

Yodlee is bank and financial account aggregation infrastructure — the platform that powers the 'connect your bank' feature in many fintech apps. It aggregates data from thousands of financial institutions: checking, savings, credit cards, investment portfolios, and loans. The FlutterFlow use case is a personal finance or wealth management app where users link their accounts and see balances and transactions in a clean mobile dashboard.

The defining architectural feature is Yodlee's two-tier token system. Tier one: a cobrand admin token obtained from your cobrand login/password credentials — this represents your application's identity and is used to register users and mint user tokens. Tier two: a per-user JWT obtained by exchanging the admin token and the specific user's Yodlee credentials — this token is what authorises every call to read that user's financial data. Both tokens are short-lived and must be refreshed by the proxy. Neither ever touches your Flutter client.

Account linking happens through FastLink, Yodlee's hosted institution-connection widget. You open it in an in-app WebView using a temporary FastLink token that the proxy generates. The widget handles bank login, MFA, OAuth redirects, and all institution-specific complexity inside a Yodlee-hosted page. When the user finishes linking, your proxy begins fetching and caching the aggregated data. The FlutterFlow app reads from your backend storage — Firestore or Supabase — not from Yodlee directly on every screen load.

Integration method

FlutterFlow API Call

FlutterFlow API Calls target a Firebase Cloud Function or Supabase Edge Function proxy that you deploy. The proxy mints a cobrand admin token from your Yodlee credentials, creates per-user JWT tokens for each linked account, generates FastLink tokens for the account-linking widget, and fetches aggregated financial data — all server-side. The FlutterFlow app opens FastLink in a WebView for account linking, then reads aggregated data from your backend storage. No Yodlee tokens appear in the app.

Prerequisites

  • A Yodlee developer account at developer.yodlee.com — free Sandbox tier available for development; Production access requires an agreement with Yodlee/Envestnet
  • Yodlee cobrand credentials (cobrand login and cobrand password) from your developer account
  • A Firebase project with Cloud Functions on Blaze plan OR a Supabase project with Edge Functions
  • A FlutterFlow project on a paid plan (Starter or above for API Calls; WebView requires paid plan)
  • Basic familiarity with deploying serverless functions and understanding of JWT-based authentication

Step-by-step guide

1

Step 1: Set up a Yodlee developer account and understand the two-tier auth model

Go to developer.yodlee.com and sign up for a free developer account. Once approved, you will receive your cobrand credentials: a cobrand login name and a cobrand password. These are your application's identity — the equivalent of an API key for your specific Yodlee integration. Keep them secure. The Sandbox environment is at https://sandbox.api.yodlee.com/ysl. It includes a set of pre-configured test financial institutions you can use to test account linking and data fetching without connecting real bank accounts. The Production environment is at https://production.api.yodlee.com/ysl — do not use it until your integration is tested and you have a Production agreement with Yodlee. Now understand the two-tier flow before writing any code: 1. Admin token: your proxy POSTs your cobrand login and password to /cobrand/login to get a short-lived admin token (cobSession). This token represents your application and lets you manage users and generate user tokens. 2. User registration: when a new user signs up for your app, the proxy calls /user/register using the admin token to create a Yodlee user record for them. This returns a userSession token for that user. 3. FastLink token: before opening FastLink, the proxy generates a FastLink token by calling the appropriate Yodlee endpoint with the userSession. The app receives only this temporary token, which is used solely to open the FastLink widget. 4. User JWT for data: after the user links accounts via FastLink, the proxy calls Yodlee's account and transaction endpoints using the user's JWT (userSession) to fetch their financial data, then stores it in Firestore or Supabase for the app to read.

Pro tip: Work in the Sandbox environment throughout development. Sandbox has specific test institutions you can use (their credentials are documented in the Yodlee developer portal). Verify the current Sandbox endpoint format in Yodlee's documentation — endpoint paths can differ between API versions.

Expected result: You have Sandbox cobrand credentials (login and password). You understand the two-tier flow: admin token → user registration → FastLink token → user JWT → financial data. You know the Sandbox base URL.

2

Step 2: Deploy a proxy that mints admin tokens and user JWTs server-side

Your Firebase Cloud Function (or Supabase Edge Function) is the only place that ever touches Yodlee tokens. Deploy a proxy with three main functions: CobrandLogin (gets the admin token), UserSetup (registers a new user and stores their user credentials), and GetUserSession (gets a fresh user JWT for a registered user). CobrandLogin POSTs to /cobrand/login with your cobrand credentials in the request body. Store the returned cobSession in Firestore with a timestamp. Because cobSessions expire, check the timestamp on every proxy call and refresh if needed — call CobrandLogin again and update the stored token. For UserSetup, when a user signs up for your FlutterFlow app, call your proxy's UserSetup function. The proxy uses the admin cobSession to POST to /user/register with a username and password for this user (these are Yodlee-specific credentials, not your app's auth credentials — generate them programmatically per user). Store the Yodlee username and password for this user in Firestore alongside your app's user ID so you can mint a user JWT on demand. GetUserSession takes a user ID, looks up their stored Yodlee credentials, and POSTs to /user/login to get a fresh userSession JWT. This is the token that authorises all financial data reads for that user. Store the userSession with a timestamp and refresh it when it expires — typically after 30 minutes.

index.js
1// Firebase Cloud Function proxy — index.js (key functions)
2const functions = require('firebase-functions');
3const admin = require('firebase-admin');
4const axios = require('axios');
5admin.initializeApp();
6
7const YODLEE_BASE = 'https://sandbox.api.yodlee.com/ysl'; // switch to production.api.yodlee.com for live
8
9// Get or refresh the cobrand admin token
10async function getCobSession() {
11 const doc = await admin.firestore().doc('yodlee/cobSession').get();
12 if (doc.exists && (Date.now() - doc.data().created_at) < 25 * 60 * 1000) {
13 return doc.data().cobSession; // reuse if less than 25 min old
14 }
15 const cfg = functions.config().yodlee;
16 const resp = await axios.post(`${YODLEE_BASE}/cobrand/login`, {
17 cobrand: { cobrandLogin: cfg.cobrand_login, cobrandPassword: cfg.cobrand_password, locale: 'en_US' },
18 });
19 const cobSession = resp.data.session.cobSession;
20 await admin.firestore().doc('yodlee/cobSession').set({ cobSession, created_at: Date.now() });
21 return cobSession;
22}
23
24// Register a new Yodlee user (call once per app user at signup)
25exports.yodleeRegisterUser = functions.https.onCall(async (data, context) => {
26 const { appUserId } = data;
27 const cobSession = await getCobSession();
28 // Generate unique Yodlee user credentials from the app user ID
29 const yodleeLogin = `user_${appUserId}@yourapp.com`;
30 const yodleePassword = `Pwd_${appUserId}_${Date.now()}`;
31 const resp = await axios.post(`${YODLEE_BASE}/user/register`,
32 { user: { loginName: yodleeLogin, password: yodleePassword, email: yodleeLogin } },
33 { headers: { cobSession } }
34 );
35 // Store the Yodlee credentials for this user — needed to mint user JWTs later
36 await admin.firestore().doc(`yodlee_users/${appUserId}`).set({
37 yodlee_login: yodleeLogin,
38 yodlee_password: yodleePassword,
39 registered_at: Date.now(),
40 });
41 return { ok: true };
42});
43
44// Get a user JWT (userSession) for a specific app user
45async function getUserSession(appUserId) {
46 const cobSession = await getCobSession();
47 const userDoc = await admin.firestore().doc(`yodlee_users/${appUserId}`).get();
48 const { yodlee_login, yodlee_password } = userDoc.data();
49 const resp = await axios.post(`${YODLEE_BASE}/user/login`,
50 { user: { loginName: yodlee_login, password: yodlee_password } },
51 { headers: { cobSession } }
52 );
53 return resp.data.user.session.userSession;
54}

Pro tip: Store cobrand credentials in Firebase Functions config (firebase functions:config:set yodlee.cobrand_login='...' yodlee.cobrand_password='...'). Never hardcode them in the function file.

Expected result: The proxy functions are deployed. CobrandLogin successfully returns and stores a cobSession. UserSetup registers a test user and stores their Yodlee credentials in Firestore. GetUserSession returns a valid userSession JWT.

3

Step 3: Generate a FastLink token and open the account-linking widget in a WebView

FastLink is the account-linking experience — where users enter their bank credentials to add a financial institution. It runs as a Yodlee-hosted web page, not as a native Flutter widget. You open it in FlutterFlow using either the WebView widget (available in FlutterFlow's widget library) or a url_launcher Custom Action. To generate a FastLink token, your proxy calls the Yodlee FastLink token endpoint using the user's userSession JWT. The response includes a token that is valid for a limited time (typically 30 minutes) and can only be used to open FastLink — it does not grant access to financial data. The FlutterFlow app requests a FastLink token from your proxy and receives only this temporary, limited-scope token. The token is then used to construct the FastLink URL: https://fl4.sandbox.yodlee.com/authenticate/restserver/?token={fastLinkToken} (verify the current FastLink URL format in Yodlee's documentation). In FlutterFlow, add a WebView widget to an Account Linking screen. Set the URL to an App State variable that holds the FastLink URL (populated from the proxy's FastLink token response). When the user taps 'Add Account', a sequence of actions fires: (1) call the proxy to get a FastLink token, (2) store the FastLink URL in App State, (3) make the WebView visible. The user completes the bank login inside the WebView. When FastLink finishes (success or cancellation), it navigates or sends a signal — handle this by adding a navigation action after the WebView completes, or by detecting the URL change in the WebView to a completion page. After account linking completes, trigger a proxy call to fetch the newly linked accounts. The proxy uses the user JWT to GET /accounts from Yodlee and store the accounts list in Firestore for the app to read.

index.js
1// Generate a FastLink token in the proxy
2exports.yodleeFastLinkToken = functions.https.onCall(async (data, context) => {
3 const { appUserId } = data;
4 const cobSession = await getCobSession();
5 const userSession = await getUserSession(appUserId);
6 // Generate FastLink access token
7 const resp = await axios.post(
8 `${YODLEE_BASE}/user/accessTokens?appIds=10003600`, // verify current appIds value in Yodlee docs
9 {},
10 { headers: { cobSession, userSession } }
11 );
12 const fastLinkToken = resp.data.user.accessTokens[0].value;
13 // Return only the FastLink token — the app uses this to open the widget URL
14 return {
15 fastLinkUrl: `https://fl4.sandbox.yodlee.com/authenticate/restserver/?token=${fastLinkToken}`,
16 };
17});

Pro tip: Verify the current FastLink URL format and appIds value in Yodlee's developer documentation — these values differ between Sandbox and Production environments and can change across API versions.

Expected result: The proxy's yodleeFastLinkToken function returns a FastLink URL. A FlutterFlow WebView opening that URL shows the Yodlee FastLink account-linking interface where the user can select and link a financial institution.

4

Step 4: Fetch and store aggregated financial data in the proxy backend

After a user links accounts through FastLink, your proxy should fetch their financial data from Yodlee and store it in Firestore or Supabase. Storing the data in your backend has two major benefits: the app reads fast from Firestore (no Yodlee latency), and you avoid hitting Yodlee's per-user rate limits on every screen navigation. Create a proxy function called FetchAndStoreUserData that accepts a user ID, gets their user JWT, and calls several Yodlee endpoints in sequence: GET /accounts (list of linked accounts with balances and account types), GET /transactions?top=50 (most recent 50 transactions across all accounts), and optionally GET /accounts/{accountId}/balance for precise current balances. Write all of this data to Firestore in your user's document: users/{appUserId}/yodlee/accounts and users/{appUserId}/yodlee/transactions. Call FetchAndStoreUserData when FastLink signals completion, and again on a regular schedule (e.g., daily via Cloud Scheduler) to keep data fresh. Yodlee aggregates fresh data from connected institutions on its own schedule — typically once a day, or on-demand when you trigger a refresh via the Yodlee data refresh endpoint. For the app, always read from Firestore; trigger a Yodlee refresh from the proxy only when the user explicitly requests it (e.g., tapping a Refresh button), not on every screen load.

index.js
1// Fetch and store user's financial data in Firestore
2exports.yodleeFetchUserData = functions.https.onCall(async (data, context) => {
3 const { appUserId } = data;
4 const cobSession = await getCobSession();
5 const userSession = await getUserSession(appUserId);
6 const headers = { cobSession, userSession };
7
8 // Fetch linked accounts
9 const accountsResp = await axios.get(`${YODLEE_BASE}/accounts`, { headers });
10 const accounts = accountsResp.data.account || [];
11
12 // Fetch recent transactions
13 const txResp = await axios.get(`${YODLEE_BASE}/transactions?top=100`, { headers });
14 const transactions = txResp.data.transaction || [];
15
16 // Store in Firestore for the app to read (bypasses Yodlee on every screen load)
17 const userRef = admin.firestore().doc(`yodlee_data/${appUserId}`);
18 await userRef.set({
19 accounts,
20 transactions,
21 last_synced: Date.now(),
22 });
23
24 return { accountCount: accounts.length, transactionCount: transactions.length };
25});

Pro tip: Trigger yodleeFetchUserData immediately after FastLink completion, and again via Cloud Scheduler once daily. The daily refresh keeps balances and transactions current without the user having to manually sync.

Expected result: After FastLink account linking, the user's Firestore document is populated with accounts and transactions. Subsequent app loads read from Firestore instantly without Yodlee API latency.

5

Step 5: Configure FlutterFlow to read financial data from the proxy and Firestore

With financial data stored in Firestore by the proxy, FlutterFlow can read it in two ways: via a Firebase Firestore collection backend query (fast, real-time), or via a proxy API Call that fetches and returns the stored data. The Firestore direct read is simpler for most apps — set up a Firebase integration in FlutterFlow's Settings & Integrations panel and use a Firestore backend query. In FlutterFlow, create a Data Type called YodleeAccount with fields: accountId (String), accountName (String), accountType (String), balance (Decimal), currency (String), institutionName (String). Create a second Data Type called YodleeTransaction with fields: transactionId (String), description (String), amount (Decimal), categoryType (String), date (String), accountId (String). Add a Screen called Dashboard. Add a ListView for accounts: set its data source to a Firestore Collection Query on the path yodlee_data/{appUserId} → accounts field. Map the fields to YodleeAccount. Inside each account card, show the institution name, account type, and balance. Add a separate ListView for recent transactions similarly bound. For the Add Account flow, add a Button that triggers: (1) a Backend/API Call to your proxy's yodleeFastLinkToken function, (2) updates an App State variable with the returned fastLinkUrl, (3) navigates to the Account Linking screen where the WebView is pre-configured to load the App State URL. After the WebView completes, trigger a call to yodleeFetchUserData to refresh Firestore with the new account data. RapidDev's team builds FlutterFlow fintech integrations like this end-to-end — if you'd like to skip the setup complexity, book a free scoping call at rapidevelopers.com/contact.

Pro tip: Use a FlutterFlow Firestore listener on the yodlee_data/{userId} document's last_synced field. When it updates (after yodleeFetchUserData runs), the Dashboard automatically shows fresh data without requiring a page reload.

Expected result: The Dashboard screen shows the user's linked accounts with balances and a recent transaction list, all read from Firestore. The Add Account button opens FastLink in a WebView. After linking, the Firestore data updates and the Dashboard refreshes automatically.

6

Step 6: Switch from Sandbox to Production and handle short-lived token expiry

When your integration is tested and you are ready for real bank connections, you need a Production agreement with Yodlee/Envestnet — this is a commercial arrangement, not a self-serve toggle. Contact Yodlee to begin the Production onboarding process. Once you have Production cobrand credentials, update Firebase Functions config (firebase functions:config:set yodlee.cobrand_login='PROD_LOGIN' yodlee.cobrand_password='PROD_PASSWORD'), change the YODLEE_BASE constant from sandbox.api.yodlee.com/ysl to production.api.yodlee.com/ysl, and change the FastLink URL to the Production FastLink host. Redeploy functions. For token expiry management: both the cobSession and userSession are short-lived (approximately 30 minutes for userSession, check cobSession lifetime in Yodlee docs — verify current durations). Your proxy functions should check the stored token's age before using it. The getCobSession() helper in Step 2 already does this for the cobSession — add equivalent logic for userSession: cache it per user with a timestamp and refresh when it is older than 25 minutes. For users who have not opened the app in a long time, the stored userSession will be stale. When the proxy detects a stale userSession, it calls /user/login again with the stored Yodlee credentials to get a fresh one. This is transparent to the user — they never see a login prompt because the Yodlee credentials are stored server-side, not user-facing. Finally, add a Refresh Data button to the Dashboard that calls yodleeFetchUserData. This triggers a fresh data pull from Yodlee through the proxy and updates Firestore. Yodlee's data is typically refreshed from institutions once per day — calling Refresh triggers an immediate refresh request to Yodlee, which may take a few minutes to propagate through their aggregation pipeline.

Pro tip: The switch from Sandbox to Production requires a commercial agreement with Yodlee. Start the Production onboarding process early — it can take days to weeks. Build and test everything in Sandbox while waiting.

Expected result: The proxy uses Production Yodlee credentials and the Production base URL. Token refreshes happen transparently. The Refresh Data button in FlutterFlow triggers an immediate Yodlee data sync and updates the Firestore-backed Dashboard.

Common use cases

Personal finance dashboard showing all linked bank accounts

A user opens a FlutterFlow app and sees a summary of all their linked bank and credit card accounts with current balances. They can tap an account to see recent transactions, filtered by date range or category. The app reads aggregated data from the backend that the proxy has fetched from Yodlee and cached, so screen loads are fast.

FlutterFlow Prompt

Show a list of linked financial accounts with institution name, account type, and current balance. Tapping an account shows a transaction list sorted by date with category badges.

Copy this prompt to try it in FlutterFlow

Budgeting app that categorises spending across linked accounts

A budgeting app aggregates transactions from all of a user's linked accounts — checking, credit cards, and savings — through Yodlee. The app categorises spending (Yodlee provides category data on each transaction), shows a monthly spend-by-category chart, and alerts when a spending category exceeds a user-set budget. All transaction data is stored in Firestore by the proxy and read by the app.

FlutterFlow Prompt

Show a monthly budget overview with a pie chart of spending by category (Food, Transport, Entertainment, Bills) and a list of transactions that exceeded the category budget.

Copy this prompt to try it in FlutterFlow

Wealth management companion for a financial advisor

A financial advisor builds a client-facing app where clients link their investment and bank accounts through Yodlee. The app shows net worth (sum of all asset account balances minus liability balances), recent cash-flow activity, and investment account performance. The advisor reviews the same data in a secure dashboard connected to the same Yodlee backend.

FlutterFlow Prompt

Show a net worth screen with total assets, total liabilities, and net worth trend line. Below, show a cash flow summary for the current month: income vs. spending.

Copy this prompt to try it in FlutterFlow

Troubleshooting

User data calls return permission errors even with a valid cobSession

Cause: User financial data (accounts, transactions) requires a per-user JWT (userSession), not the admin cobSession. Using only the cobSession to call data endpoints returns permission errors — this is by design in Yodlee's two-tier architecture.

Solution: Ensure every call to /accounts, /transactions, and other user data endpoints includes both the cobSession header and the userSession header. The userSession is obtained by logging in as the specific user (/user/login) using their stored Yodlee credentials. Both headers are required simultaneously.

typescript
1// Both headers are required for user data endpoints
2const headers = {
3 cobSession: cobSessionValue, // admin tier
4 userSession: userSessionValue, // per-user tier — required for /accounts, /transactions
5};
6const resp = await axios.get(`${YODLEE_BASE}/accounts`, { headers });

FastLink WebView opens but is blank or shows an error instead of the institution selection screen

Cause: The FastLink token is expired, the wrong FastLink URL is being used (Sandbox URL vs Production), or the appIds parameter is incorrect for the environment.

Solution: Verify the FastLink URL format in Yodlee's current developer documentation — the URL structure and appIds value differ between Sandbox and Production and can change across API versions. Generate a fresh FastLink token immediately before opening the WebView — do not reuse a token from minutes earlier. Confirm the WebView URL is using the Sandbox FastLink host during development.

Yodlee returns a 401 on all requests after a while, even with no code changes

Cause: The cobSession or userSession has expired. Both are short-lived tokens that must be refreshed regularly. If the proxy caches them without checking expiry, stale tokens cause 401 errors.

Solution: Add age checks to the token caching logic in the proxy. For cobSession, check the stored created_at timestamp and refresh if older than 25 minutes. For userSession, refresh per-user if the stored token is older than 25 minutes. Never assume stored tokens are valid indefinitely.

typescript
1// Check token age before using — refresh if within 5 min of expiry
2const TOKEN_TTL_MS = 25 * 60 * 1000;
3if (!doc.exists || (Date.now() - doc.data().created_at) >= TOKEN_TTL_MS) {
4 // Refresh the token
5}

XMLHttpRequest error when testing the proxy from FlutterFlow web preview

Cause: CORS headers are missing from the Firebase Cloud Function, blocking the browser-based FlutterFlow preview from calling the function.

Solution: Use Firebase callable functions (onCall) for all proxy endpoints — they handle CORS automatically. If any function uses onRequest, add the cors npm package configured with the appropriate allowed origins.

Best practices

  • Never put Yodlee cobrand credentials, cobSession, or userSession tokens in FlutterFlow API Call headers, App Values, or Dart code — keep all token minting server-side in the proxy.
  • Store aggregated financial data (accounts, transactions) in Firestore or Supabase after fetching from Yodlee, and have the FlutterFlow app read from there — this avoids hitting Yodlee's rate limits on every screen load.
  • Add age-based token expiry checks to all token caching logic: refresh cobSession if older than 25 minutes, refresh userSession if older than 25 minutes.
  • Use Cloud Scheduler to trigger daily Firestore data refreshes from Yodlee rather than relying only on user-initiated Refresh buttons — keeps data current without user action.
  • Build and test entirely in the Sandbox environment with test credentials before beginning the Yodlee Production onboarding process — Production requires a commercial agreement.
  • Generate unique Yodlee user credentials per app user programmatically — do not reuse credentials across users or use the same credentials for multiple Yodlee accounts.
  • Pass only the temporary FastLink token to the FlutterFlow WebView for account linking — never pass the userSession or cobSession to the client, even as a temporary WebView parameter.
  • Handle both Sandbox and Production environments as separate Firebase Function configs so switching to Production is a config change and function redeploy, not a code change.

Alternatives

Frequently asked questions

Why does Yodlee use two different tokens instead of one API key?

Yodlee's two-tier architecture separates application-level access (cobrand) from user-level access (userSession). The cobSession represents your application's identity and can manage users and generate access tokens. The userSession is scoped to one specific user's financial data — a compromised userSession for user A cannot read user B's data. This separation limits the blast radius if a token is ever exposed and ensures strict per-user data isolation.

Can users link any bank through FastLink, or only specific institutions?

Yodlee supports thousands of financial institutions globally. The institutions available through FastLink depend on your Yodlee agreement and the market/country configuration of your cobrand. In the Sandbox, a specific set of test institutions is provided for testing purposes. In Production, the full set of supported institutions for your agreement is available. Yodlee's institution coverage varies by country and agreement level.

How often does Yodlee refresh data from connected banks?

Yodlee aggregates fresh data from connected financial institutions approximately once per day by default. You can trigger an on-demand data refresh via the Yodlee refresh endpoint, which tells Yodlee to pull fresh data now — this may take a few minutes to propagate. For real-time balance requirements (e.g., showing the exact current balance), check whether your Yodlee agreement includes a real-time data refresh tier.

Do I need a paid Yodlee plan to use it in production?

Yes. The free Sandbox is for development and testing only. Production access requires a commercial agreement with Yodlee/Envestnet, which involves an approval process and per-user or per-API-call pricing. Start the Production onboarding process early — it can take days to weeks to complete. Build and test everything in Sandbox while the agreement is being processed.

What happens to stored Yodlee data if a user disconnects their bank account in FastLink?

When a user removes a financial institution through FastLink (or Yodlee's account management endpoints), Yodlee stops aggregating data for that account. Your proxy's daily refresh will no longer return data for the removed account. Your Firestore stored data for that account will become stale unless your refresh logic removes accounts that are no longer present in the Yodlee accounts list. Add logic to compare the current Yodlee accounts list against the Firestore stored list and remove entries that no longer appear in Yodlee.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire FlutterFlow integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.