There are multiple approaches to obtain account balance information using Plaid's APIs, and each approach has important differences to keep in mind when developing your application regarding latency and data freshness.
Real-time balance data
The /accounts/balance/get
endpoint returns Real-time balance when it is called. This means that Plaid makes a fresh request to the financial institution when this request is made. The endpoint returns the available and current balances in the account, as well as currency code and limit (if available). This endpoint can be used in cases where you need an accurate picture of the balance in the account. One example of this is calling the endpoint before making a money transfer to ensure the user has enough funds to cover the transaction. This is very useful to preventing overdrafts from occurring.
Because this endpoint initiates communication with a bank to get fresh data, the latency (the time between calling the endpoint and receiving a response) for /accounts/balance/get
is longer than other endpoints. It retrieves fresh data from the financial institution each time it is called.
Other Plaid products that provide balance information use cached data, so no request is made to the institution to gather balance data. As a result, the latency will be lower with these endpoints.
Read more about this here: Why is latency for Plaid Balance higher than other endpoints?
Cached balance data
Other endpoints at Plaid return a balances
object as well. /accounts/get
, /transactions/sync/
, /identity/get
, and more all return the balances
object. However, this data is cached since the last time Plaid was in contact with the institution. Items initialized with subscription products (such as Transactions, Liabilities, and Investments) will maintain a relatively recent cached balance (typically within the last 1-2 days for a healthy Item) due to the fact that Plaid will regularly request fresh data for these Items. The cached balance data for these Items will be at least as fresh as the latest update, which can be obtained from calling /item/get
and checking the last_successful_update
field for the relevant subscription product's status.
Items not initialized with subscription products -- for example, an Item initialized with only Auth and Identity -- will typically have an older cached balance (up to 90 days old or more). Calling /accounts/balance/get
on the Item will refresh the cached balance.
In many use cases, customers want to get the account balance as soon as an item is created. Note that you do not need to call /accounts/balance/get
endpoint to get real-time balance if the user has just linked their account and created a new item via Plaid. Since Plaid has just made a call to the institution to create the item, the Balance data will be accurate. Since that is the case, you can use any endpoint, such as /accounts/get
, to return the balance data which is accurate in real time.
Read more about this here: Why does an item's balance differ between /transactions/get and /balance/get responses?