Introduction to Balance  
=========================

#### Retrieve real-time balance information 

Get started with Balance

[API Reference](https://plaid.com/docs/api/products/signal/index.html.md) [Quickstart](https://plaid.com/docs/quickstart/index.html.md) [Demo](https://plaid.coastdemo.com/share/6786ccc5a048a5f1cf748cb5?zoom=100)

#### 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](https://plaid.com/docs/auth/index.html.md) for money movement or account funding use cases or [Transactions](https://plaid.com/docs/transactions/index.html.md) for personal finance use cases.

[Prefer to learn by watching? Get an overview of how Balance works in just 3 minutes!](https://www.youtube.com/watch?v=VfXwIkNsqO8)

#### Cached and real-time balance 

While you can retrieve balance data via many endpoints, including by calling the free-to-use [/accounts/get](https://plaid.com/docs/api/accounts/index.html.md#accountsget) 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](https://plaid.com/docs/signal/index.html.md) . For more details, see [Reducing latency and getting better insights with Signal Transaction Scores](https://plaid.com/docs/balance/index.html.md#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](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) ) or using [/accounts/balance/get](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) . 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](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) 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](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) 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](https://plaid.com/docs/signal/signal-rules/index.html.md) . With Signal Rules, you can easily customize your business logic around these recommended actions in a Dashboard-based UI, without making any code changes.

(An image of "no description available")

Using Balance with Signal Rules in the Dashboard

[/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) is available for all new Balance customers who received Production access after October 15, 2025. Existing Balance customers will be enabled for [/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) in the near future. If you are an existing Balance customer and would like immediate access to [/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) , contact your account manager; for more details, see the [migration guide](https://plaid.com/docs/balance/migration-guide/index.html.md) .

##### Balance using /accounts/balance/get 

[/accounts/balance/get](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) 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](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) is also the legacy endpoint for checking balance that many customers use in existing integrations.

#### Integration overview using /signal/evaluate 

1.  [Create a Balance-only Rule](https://plaid.com/docs/signal/signal-rules/index.html.md) in the [Signal Rules Dashboard](https://dashboard.plaid.com/signal/risk-profiles) .
    
2.  Call [/link/token/create](https://plaid.com/docs/api/link/index.html.md#linktokencreate) . Along with any other parameters you specify, make sure to include the following:
    
    *   Include `signal` and `auth` in the `products` array, along with any other Plaid product(s) you plan to use. Do _not_ include `balance` in the `products` array.
3.  On the client side, create an instance of Link using the `link_token` returned by [/link/token/create](https://plaid.com/docs/api/link/index.html.md#linktokencreate) ; for more details, see the [Link documentation](https://plaid.com/docs/link/index.html.md) .
    
    *   If you will be using the linked Item as a payment source or destination, it is recommended to [configure your Link customization](https://plaid.com/docs/link/customization/index.html.md) to use the setting [Account Select: Enabled for one account](https://plaid.com/docs/link/customization/index.html.md#account-select) . 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.
4.  Once the end user has completed the Link flow, exchange the `public_token` for an `access_token` by calling [/item/public\_token/exchange](https://plaid.com/docs/api/items/index.html.md#itempublic_tokenexchange) .
    
5.  Call [/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) and [determine the next steps based on results](https://plaid.com/docs/signal/signal-rules/index.html.md#using-signal-ruleset-results) .
    
6.  [Report ACH returns and decisions](https://plaid.com/docs/signal/reporting-returns/index.html.md) to Plaid.
    
7.  (Optional) After launch, periodically [review and tune your Signal Rules](https://plaid.com/docs/signal/tuning-rules/index.html.md) using the Dashboard.
    

#### Integration overview using /accounts/balance/get 

1.  Call [/link/token/create](https://plaid.com/docs/api/link/index.html.md#linktokencreate) with the product(s) you plan to use. Do _not_ include `balance` in the `products` array.
    
2.  On the client side, create an instance of Link using the `link_token` returned by [/link/token/create](https://plaid.com/docs/api/link/index.html.md#linktokencreate) ; for more details, see the [Link documentation](https://plaid.com/docs/link/index.html.md) .
    
3.  Once the end user has completed the Link flow, exchange the `public_token` for an `access_token` by calling [/item/public\_token/exchange](https://plaid.com/docs/api/items/index.html.md#itempublic_tokenexchange) .
    
4.  Call [/accounts/balance/get](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) , passing in the `access_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](https://plaid.com/docs/signal/index.html.md) . 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](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) , 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](https://plaid.com/contact/) or your account manager.

#### Migration guide 

If you are an existing customer and would like to migrate from [/accounts/balance/get](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) to [/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) to take advantage of Signal Rules, see the [Balance migration guide](https://plaid.com/docs/balance/migration-guide/index.html.md) .

#### Current and available balance 

Banks represent balance with two separate values, current balance and available balance. 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 provide available balance information. If necessary, you can often calculate available balance by starting with the current balance, then using the [Transactions](https://plaid.com/docs/transactions/index.html.md) 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](https://plaid.com/docs/account/billing/index.html.md#per-request-flat-fee) , meaning you will be billed once for each successful call to [/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) or [/accounts/balance/get](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) .

[/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) (when used with a Balance-only ruleset) and [/accounts/balance/get](https://plaid.com/docs/api/products/signal/index.html.md#accountsbalanceget) are billed at the same rate.

When using [/signal/evaluate](https://plaid.com/docs/api/products/signal/index.html.md#signalevaluate) , 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](https://dashboard.plaid.com/overview/production) or [contact sales](https://plaid.com/contact/) . For more details about pricing and billing models, see [Plaid billing](https://plaid.com/docs/account/billing/index.html.md) .

#### Next steps 

To get started building with Balance, see [Add Balance to your App](https://plaid.com/docs/balance/add-to-app/index.html.md) .

If you're ready to launch to Production, see the Launch Center.

#### Launch Center 

See next steps to launch in Production

[Launch](https://dashboard.plaid.com/developers/launch-center)