Introduction to Balance
Retrieve real-time balance information
Overview
Balance is Plaid's product for receiving real-time balance information. This data is commonly used to tell if an account has sufficient funds before using it as a funding source for a payment transaction, helping you to avoid ACH returns. Balance is available for use exclusively in combination with other Plaid products, such as Auth for money movement or account funding use cases or Transactions for personal finance use cases.
Cached and realtime balance
While you can retrieve balance data via many endpoints, including by calling the free-to-use /accounts/get
endpoint, this data is cached, making it unsuitable for situations where you need real-time balance information, except immediately after the Item has been added.
An Item with Transactions may update cached balances once a day or more, while an Item with only Auth may update cached balances every 30 days or even less frequently.
For retrieving real-time balance for payments use cases, only Balance should be used.
Because Balance always performs a real-time data extraction, latency is higher than other Plaid endpoints (p50 ~3s, p95 ~11s). To check for ACH return risk in critical user-present flows that require low latency, consider Signal Transaction Scores. For more details, see Reducing latency and getting better insights with Signal Transaction Scores.
Balance integration options
There are two options you can use for retrieving balance data: using Signal Rules (with /signal/evaluate
) or using /accounts/balance/get
. While they are priced the same, return the same account data, and have the same latency, each method works differently and is designed for different use cases.
Balance using /signal/evaluate
The /signal/evaluate
endpoint is the recommended way to retrieve balance data whenever you are checking balance to evaluate the insufficient funds risk of a proposed ACH transaction. /signal/evaluate
checks balance and returns current and available balance, as well as a recommended action to take (i.e., accept the transaction, review it further, or request a different payment method) based on a ruleset evaluation using Signal Rules. With Signal Rules, you can easily customize your business logic around these recommended actions in a Dashboard-based UI, without making any code changes.

/signal/evaluate
is available for all new Balance customers who received Production access after October 15, 2025. Existing Balance customers will be enabled for /signal/evaluate
in the near future. If you are an existing Balance customer and would like immediate access to /signal/evaluate
, contact your Account Manager; for more details, see the migration guide.
Balance using /accounts/balance/get
/accounts/balance/get
retrieves balance data, including current and available balance, but does not run Signal Rules. This endpoint is recommended for all use cases where you are not checking balance to evaluate a proposed ACH transaction: for example, if you need real-time balance data for a Personal Financial Management (PFM) use case, or for treasury management, or for any non-US bank account. /accounts/balance/get
is also the legacy endpoint for checking balance that many customers use in existing integrations.
Integration overview using /signal/evaluate
Call
/link/token/create
. Along with any other parameters you specify, make sure to include the following:- Include
signal
in theproducts
array, along with any other Plaid product(s) you plan to use, such asauth
. Do not includebalance
in theproducts
array.
- Include
On the client side, create an instance of Link using the
link_token
returned by/link/token/create
; for more details, see the Link documentation.- If you will be using the linked Item as a payment source or destination, it is recommended to configure your Link customization to use the setting Account Select: Enabled for one account. Otherwise, you will need to build a UI within your app for the user to indicate which account they want to use for the payment, if their bank login is associated with more than one bank account.
Once the end user has completed the Link flow, exchange the
public_token
for anaccess_token
by calling/item/public_token/exchange
.Call
/signal/evaluate
and determine the next steps based on results.Report ACH returns and decisions to Plaid.
(Optional) After launch, periodically review and tune your Signal Rules using the Dashboard.
Integration overview using /accounts/balance/get
Call
/link/token/create
with the product(s) you plan to use. Do not includebalance
in theproducts
array.On the client side, create an instance of Link using the
link_token
returned by/link/token/create
; for more details, see the Link documentation.Once the end user has completed the Link flow, exchange the
public_token
for anaccess_token
by calling/item/public_token/exchange
.Call
/accounts/balance/get
, passing in theaccess_token
returned in step 3.
Reducing latency and getting better insights with Signal Transaction Scores
For use cases that involve evaluating a proposed ACH transaction to reduce return risk, Balance can be used alongside Signal Transaction Scores. Signal Transaction Scores has lower latency (p95 <2s versus Balance's 11s), making it ideal for user-present transactions in critical flows such as onboarding or purchasing. With Signal Transaction Scores, you can access 80+ criteria for rule generation and ML-powered recommendations and insights to help you optimize and fine-tune your transaction approval logic.
Signal Transaction Scores and Balance are both part of Plaid Signal, Plaid's solution for ACH risk management. You can purchase and use either Balance or Signal Transaction Scores by itself, or combine them for a more comprehensive ACH risk management approach.
Once you have integrated Balance using /signal/evaluate
, Signal Transaction Scores requires no additional engineering work to integrate. Just use the Signal Rule editor in the Dashboard to upgrade your existing Balance-only rule into a Signal Transaction Score-powered rule.
To learn more, or to request access to Signal Transaction Scores, contact Sales or your account manager.
Migration guide
If you are an existing customer and would like to migrate from /accounts/balance/get
to /signal/evaluate
to take advantage of Signal Rules, see the Balance migration guide.
Current and available balance
Balance typically returns both current and available balance information. For assessing ACH risk, available balance is often more important than current balance, as it represents predicted balance net of any pending transactions, while current balance does not take pending transactions into account.
For credit accounts, available balance indicates the amount that can be spent without hitting the credit limit (net of any pending transactions), while in investment accounts, it indicates the total available cash.
In some cases, a financial institution may not return available balance information. If necessary, you can often calculate available balance by starting with the current balance, then using the Transactions product to detect any pending transactions and adjusting the balance accordingly.
Typical balance fill rates by field
Field | Typical fill rate |
---|---|
Current balance | 99% |
Available balance | 91% |
Balance pricing
Balance is billed on a flat fee model, meaning you will be billed once for each successful call to /signal/evaluate
or /accounts/balance/get
.
/signal/evaluate
(when used with a Balance-only ruleset) and /accounts/balance/get
are billed at the same rate.
When using /signal/evaluate
, you will be billed if the API call is successful, even if balance extraction fails.
To view the exact pricing you may be eligible for, apply for Production access or contact Sales. For more details about pricing and billing models, see Plaid billing.
Next steps
To get started building with Balance, see Add Balance to your App.
If you're ready to launch to Production, see the Launch Center.