{"article":{"id":16179450406295,"url":"https://plaid.zendesk.com/api/v2/help_center/en-us/articles/16179450406295.json","html_url":"https://support.plaid.com/hc/en-us/articles/16179450406295-How-can-I-obtain-account-balances-using-Plaid-s-API","author_id":5390778350871,"comments_disabled":true,"draft":false,"promoted":false,"position":0,"vote_sum":0,"vote_count":0,"section_id":16150583224855,"created_at":"2023-07-20T21:32:27Z","updated_at":"2026-06-03T17:38:43Z","name":"How can I obtain account balances using Plaid's API?","title":"How can I obtain account balances using Plaid's API?","source_locale":"en-us","locale":"en-us","outdated":false,"outdated_locales":[],"edited_at":"2026-06-03T17:38:43Z","user_segment_id":null,"permission_group_id":1121774,"content_tag_ids":[],"label_names":[],"body":"<p>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, data freshness, and use case.</p>\n<h2>Choosing the right endpoint</h2>\n<ul>\n<li>For <strong>ACH transaction risk evaluation</strong> (e.g., checking that an account has sufficient funds before initiating an ACH transfer), Plaid recommends <a href=\"https://plaid.com/docs/api/products/signal/#signalevaluate\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/signal/evaluate</code></a>. It returns Signal Rules recommendations (accept, review, or request a different payment method) based on configurable business logic in the Plaid Dashboard. <strong>Note:</strong> <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/signal/evaluate</code> only fetches real-time balance when the active ruleset includes a balance rule; without one, no real-time balance call to the institution is made.</li>\n<li>For <strong>other real-time balance needs</strong> (personal financial management, treasury management, non-US accounts), use <a href=\"https://plaid.com/docs/api/products/signal/#accountsbalanceget\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/balance/get</code></a>.</li>\n<li>For <strong>cached balance data</strong> sufficient for most other use cases, the <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">balances</code> object is returned by endpoints like <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/get</code>, <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/transactions/sync</code>, and <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/identity/get</code> (see Cached balance data below).</li>\n</ul>\n<h2>Real-time balance data</h2>\n<p>The <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/balance/get</code> endpoint returns <strong>real-time</strong> 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 for preventing overdrafts from occurring.</p>\n<p>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 <a href=\"https://plaid.com/docs/api/products/signal/#accountsbalanceget\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/balance/get</code></a> is longer than other endpoints. It retrieves fresh data from the financial institution each time it is called.</p>\n<p>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.</p>\n<p>Read more about this here: <a href=\"https://support.plaid.com/hc/en-us/articles/16150929844887-Why-is-latency-for-Plaid-Balance-higher-than-other-endpoints-\">Why is latency for Plaid Balance higher than other endpoints?</a></p>\n<h2>Cached balance data</h2>\n<p>Other endpoints at Plaid return a <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">balances</code> object as well. <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/get</code>, <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/transactions/sync</code>, <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/identity/get</code>, and more all return the <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">balances</code> 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 <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/item/get</code> and checking the <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">last_successful_update</code> field for the relevant subscription product's status.</p>\n<p>Items <em>not</em> 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 <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/balance/get</code> on the Item will refresh the cached balance.</p>\n<p>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 the <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/balance/get</code> 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 <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/get</code>, to return the balance data, which is accurate in real time.</p>\n<p>Read more about this here: <a href=\"https://support.plaid.com/hc/en-us/articles/15373441901207\">Why do <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/transactions/sync</code> or <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/transactions/get</code> and <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/balance/get</code> return different balances for an Item?</a></p>","user_segment_ids":[]}}