> For the complete documentation index, see [llms.txt](https://docs.railgun.org/developer-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.railgun.org/developer-guide/wallet/private-balances/updating-balances.md).

# Updating Balances

In certain scenarios, you may want to manually refresh all private balances.

#### Example: Manually refresh balances

<pre class="language-typescript"><code class="lang-typescript"><strong>import { NETWORK_CONFIG, NetworkName } from '@railgun-community/shared-models';
</strong>import { refreshBalances } from '@railgun-community/wallet';

const { chain } = NETWORK_CONFIG[NetworkName.Ethereum];
const railgunWalletID = '...'; // Obtained after a previous call to `createRailgunWallet`

// Optional filter to only scan the provided wallet IDs. Leave undefined to scan all wallets.
const walletIdFilter = [railgunWalletID];

try {
    await refreshBalances(chain, walletIdFilter);
    // During scan, `onMerkletreeScanCallback` callback from the previous section will trigger.
    // When scan is completed, `onBalanceUpdateCallback` callback from the previous section will trigger.
    // This may take a few minutes on first sync, but only a few seconds on subsequent calls.
} catch (err) {
    // Scan failed to run.
}
</code></pre>
