> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meld.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Refreshing Connections

A **refresh** pulls the latest balances and transactions for an existing, healthy connection from the underlying service provider. This page is for developers deciding when and how to refresh — and when **not** to (most of the time, background refresh has you covered).

## Before you begin

<Info>
  * You have a `connectionId` for a connection that is **not** in `RECONNECT_REQUIRED`, `EXPIRED`, `DELETED`, or `IN_PROGRESS` (those statuses cannot be refreshed — see [Connection Errors and Reasons](/docs/bank-linking/get-connection-data/connection-statuses-and-errors/connection-errors-and-reasons))
  * You understand that forced refreshes can incur additional charges and may be rate-limited by the provider
  * You have webhooks configured so you can observe the resulting aggregation events
</Info>

## Automatic refreshes

Service providers typically refresh connection data (balances and transactions) once or a few times a day, and Meld pulls the latest data at that time. When Meld detects a change, you receive webhooks so you can fetch the latest data. **You do not need to schedule refreshes yourself for routine freshness.**

## Forced refreshes

At any time you can call the [refresh endpoint](/api-reference/bank-linking) to force a live aggregation of all accounts on a connection. You can scope the refresh to specific products. Both forced and automatic refreshes produce webhooks.

<Warning>
  Forced refreshes can incur additional charges and providers rate-limit them. For example, MX supports forced refresh only every 3 hours. Use forced refresh only when the customer just performed an action in your app that requires up-to-the-minute data.
</Warning>

## How to refresh a connection

Call the refresh endpoint with the `connectionId` and (optionally) the list of products you want to refresh.

<Note>
  For the full request and response schema, refer to the [Bank Linking API reference](/api-reference/bank-linking).
</Note>

After the call returns, listen for the standard aggregation webhooks — `BANK_LINKING_ACCOUNTS_UPDATED`, `BANK_LINKING_TRANSACTIONS_AGGREGATED` — to know when fresh data is available.

## Common errors

| HTTP status     | Likely cause                                                                              | Developer action                                                                                                                                                                |
| :-------------- | :---------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `404 Not Found` | Invalid `connectionId`                                                                    | Verify the id and the environment (sandbox vs production).                                                                                                                      |
| `409 Conflict`  | Connection is in a status that cannot be refreshed (e.g. `RECONNECT_REQUIRED`, `EXPIRED`) | Check the status; if `RECONNECT_REQUIRED`, send the customer through the [repair flow](/docs/bank-linking/manage-connection-status/repairing-connections) instead.              |
| `429 Too Many`  | Provider rate limit hit (e.g. MX 3-hour limit)                                            | Back off and retry after the provider window. Do not loop on this error.                                                                                                        |
| `5xx`           | Transient Meld or provider issue                                                          | Retry with exponential backoff; if persistent, inspect the next `BANK_LINKING_CONNECTION_STATUS_CHANGE` webhook to see if the connection moved to `DEGRADED` or `UNDETERMINED`. |
