@get-asset/react

Accounts Card

The accounts card — the standard card header with an Add Account action that reveals AssetAccountsConnect (hidden by default, animated open), with AssetAccountsList below. Completing a connection invalidates the accounts query so the table background-refetches and the panel collapses.

Preview

Loading preview…

Required scopes

The access token used by AssetProvider must include these scopes for this primitive to fetch data successfully:

  • external_account:read
  • external_account:update
  • transaction:read
  • transaction:create
  • transaction:delete
  • request:read
  • document:read
  • document:create
  • document:delete
  • plaid:create
  • plaid:read
  • ledger:read

API reference

Root props

PropTypeDefaultDescription
onConnected(institutions, account) => voidCalled after any successful connection (new account or reconnect).
onError(error) => voidCalled on a connection error.
onSelectMethod(method) => voidCalled when a non-Plaid connect method card is clicked.
methodsConnectionMethod[]Override the connect panel's methods.
institutionName / source / type / statusAccountsList filtersForwarded to the table.
accountsExternalAccountPublic[]Override the table's fetched data. Skips the API call.
state"loading" | "error" | "empty"Force the table's state for testing.
tasks / documents / transactionsoverride arraysOverride the fetched statement requests, statement documents and review transactions. Skips those API calls.
defaultScreen / defaultAccountIdsee AccountsListOpen the card straight onto a screen. Forwarded to the table.
reviewState"loading" | "error" | "empty"Force the review's state for testing, separately from the table's.
onScreenChange(screen: "accounts" | "statements" | "review") => voidCalled whenever the drill-down moves between screens.
onTransactionRemove / onTransactionUpdatereview callbacksCalled after a transaction is deleted, and when one is corrected. Corrections to amount / date / description have no endpoint behind them, so persist them from this callback.
classNamestringForwarded to the outer wrapper.

Reconciliation

A background job compares each account’s balance against the books. When they disagree for long enough it asks for a statement, and this card is where that ask lands — not a separate Reconciliation tab, which would need explaining.

Each account row says how long it has been waiting — Not reconciled since Jul 1, 2026 — rather than counting files, because the age is what tells the user whether it matters. Paused and disconnected accounts read Not checkedand are inert: their balance isn’t being compared to anything, so a statement is never asked for.

Opening a row lists one line per statement still wanted: the period it covers, when it was asked for, and an upload. After uploading, the row polls until the statement has been read, so the user can wait there rather than guess when to come back — and Review transactions stays inert until every request has settled.

Review then lists everything posted to the account since it last balanced, with each field editable in place and a delete on each row. Deleting a posted transaction can’t be undone, so each row confirms first. Note that edits to amount, date and description are held locally and reported through onTransactionUpdate — the API has no write for those fields yet. See the SDK page for the full flow and the extra scopes it needs.