POST /accounts/:id/balance/refresh
Force a fresh read of a virtual account's balance, persist it, and return the updated snapshot. Use this to back a manual "refresh" control (a dashboard button, a reconciliation step) when you want the latest number without waiting for the next event-driven sync.
For ordinary reads, prefer GET /accounts/:id/balance: Seismic keeps balances in sync as funds move (deposits landing, payments settling, account updates), so the stored balance is usually already current and costs nothing to serve.
Rate limit
A refresh reads upstream at most once per minute per account. Within that window the request returns the stored snapshot unchanged, so as_of may predate your call. That's expected, and means the balance is already fresh. However many clients or browser tabs trigger a refresh, Seismic makes at most one upstream read a minute per account.
Response 200
Identical to GET /accounts/:id/balance.
| Field | Type | Notes |
|---|---|---|
account_id | uuid | The account the balance belongs to. |
kind | "fiat" | "crypto" | Same discriminator as the account itself. |
currency | string | The account's currency. Both amounts are denominated in it. |
balance | string | Total funds credited to the account, in major units. |
available_balance | string? | The portion spendable right now (total minus holds and pending credits). Omitted when the distinction doesn't exist for the account. |
as_of | timestamp | When Seismic last refreshed the balance. |
Example
{
"account_id": "5e3a…",
"kind": "crypto",
"currency": "USDC",
"balance": "54.63",
"as_of": "2026-07-07T18:04:00Z"
}Errors
400: the account isorigin: "external". Balance only exists for virtual accounts.404: unknown id, or the account belongs to a different org.503: the upstream read couldn't complete right now. Retry with backoff.
Example
curl -X POST "$SEISMIC_ORCHESTRATION_URL/v0/accounts/5e3a…/balance/refresh" \
-H "Api-Key: $SEISMIC_ORCHESTRATION_API_KEY"