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
/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.
/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. These refreshes can happen about 1-4 times a day, depending on the institution. Using the cached data will be useful in cases where the balance data does not need to be perfectly accurate, such as displaying account balance on a personal financial management application.
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?