{"article":{"id":15197235844119,"url":"https://plaid.zendesk.com/api/v2/help_center/en-us/articles/15197235844119.json","html_url":"https://support.plaid.com/hc/en-us/articles/15197235844119-Why-is-an-Item-s-balance-out-of-date","author_id":396033157154,"comments_disabled":true,"draft":false,"promoted":false,"position":0,"vote_sum":0,"vote_count":0,"section_id":16125189329687,"created_at":"2023-06-09T20:16:26Z","updated_at":"2026-06-03T17:30:26Z","name":"Why is an Item's balance out of date?","title":"Why is an Item's balance out of date?","source_locale":"en-us","locale":"en-us","outdated":false,"outdated_locales":[],"edited_at":"2026-06-03T17:30:26Z","user_segment_id":null,"permission_group_id":1121774,"content_tag_ids":[],"label_names":[],"body":"<p>There are a few reasons that you may see out of date balance data:</p>\n<ul>\n<li>\n<strong>You're reading cached balance and expecting real-time balance</strong> - Most Plaid endpoints (such as <a href=\"https://plaid.com/docs/api/accounts/\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/accounts/get</code></a>, <a href=\"https://plaid.com/docs/api/products/transactions/#transactionssync\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/transactions/sync</code></a>, and <a href=\"https://plaid.com/docs/api/products/identity/#identityget\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/identity/get</code></a>) return the <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">balances</code> object as <strong>cached</strong> data from Plaid's most recent contact with the institution, not as a live real-time call. How fresh that cached balance is depends on the Item's subscription products (see the next point) and the institution's update cadence. If you need real-time balance, see the real-time endpoint guidance at the bottom of this article.</li>\n<li>\n<strong>The Item was created with the Auth product only</strong> - Items created only with the <a href=\"https://plaid.com/docs/auth/\">Auth</a> product enabled aren't updated after the Item is created. For these cases, the balance does not continually update but is only updated when the Item is created or when the user re-authenticates with Plaid Link update mode. If you need to have up-to-date balance data, you should ensure that items are initialized with the Transactions product when calling <a href=\"https://plaid.com/docs/api/link/#linktokencreate\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/link/token/create</code></a> in your application.</li>\n<li>\n<strong>The Item is not updating because the institution requires user action</strong> - In some cases, Items will not have the latest data if Plaid is not able to get fresh data from the financial institution. This can sometimes occur if the institution requires action from the user, such as accepting new terms &amp; conditions. In these cases, the user should log in to the financial institution portal and complete any required actions.</li>\n<li>\n<strong>The Item is not updating because the institution is requesting authentication</strong> - Sometimes, banks may request additional multi-factor authentication (MFA) in order to provide data to our integration. In these cases, you will typically see an error code related to MFA. To resolve this, the user should use Link update mode to update the connection and provide any missing information.</li>\n<li>\n<strong>There is a problem with the integration</strong> — If none of the above scenarios apply, there may be a problem with the integration causing connection failures. You can use the <a href=\"https://dashboard.plaid.com/activity/status\">institution status</a> tool in the Plaid Dashboard to check the health and view known issues for an integration, or the <a href=\"https://dashboard.plaid.com/activity/debugger\">item debugger</a> to investigate using the <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">item_id</code>.</li>\n</ul>\n<h2>Checking when an Item was last updated or if it's in an error state</h2>\n<p>To diagnose whether stale balance is due to an outdated cache or a broken Item, call <a href=\"https://plaid.com/docs/api/items/#itemget\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">/item/get</code></a> and inspect two fields:</p>\n<ul>\n<li>\n<strong><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">item.status.transactions.last_successful_update</code></strong> — the timestamp of Plaid's most recent successful data pull from the institution for the Transactions product. Cached balance returned by <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>, etc. is no fresher than this timestamp. Substitute <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">transactions</code> for <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">liabilities</code> or <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">investments</code> if those are the relevant subscription products on the Item.</li>\n<li>\n<strong><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">item.error</code></strong> — <code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">null</code> for a healthy Item, or populated with an error object (e.g., <a href=\"https://plaid.com/docs/errors/item/#item_login_required\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">ITEM_LOGIN_REQUIRED</code></a>, <a href=\"https://plaid.com/docs/api/items/#pending_disconnect\"><code style=\"border:none;background:#f1f3f5;padding:1px 4px;border-radius:3px;font-size:0.9em;\">PENDING_DISCONNECT</code></a>) if the Item is in an error state and not currently updating. An Item in an error state will not refresh balance until the underlying issue is resolved (typically via <a href=\"https://plaid.com/docs/link/update-mode/\">Link's update mode</a>).</li>\n</ul>\n<h2>Getting real-time balance when you need it</h2>\n<p>If you need the most current balance regardless of the cached state, use a real-time balance endpoint — <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> (when called with a ruleset that includes a balance rule) for ACH transaction risk evaluation, or <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> for other real-time balance needs. See <a href=\"https://support.plaid.com/hc/en-us/articles/16179450406295\">How can I obtain account balances using Plaid's API?</a> for guidance on choosing the right endpoint, and <a href=\"https://support.plaid.com/hc/en-us/articles/15373441901207\">Why do /transactions/sync or /transactions/get and /accounts/balance/get return different balances for an Item?</a> for why cached and real-time balances can differ.</p>","user_segment_ids":[]}}