@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:readexternal_account:updatetransaction:readtransaction:createtransaction:deleterequest:readdocument:readdocument:createdocument:deleteplaid:createplaid:readledger:read
API reference
Root props
| Prop | Type | Default | Description |
|---|---|---|---|
onConnected | (institutions, account) => void | — | Called after any successful connection (new account or reconnect). |
onError | (error) => void | — | Called on a connection error. |
onSelectMethod | (method) => void | — | Called when a non-Plaid connect method card is clicked. |
methods | ConnectionMethod[] | — | Override the connect panel's methods. |
institutionName / source / type / status | AccountsList filters | — | Forwarded to the table. |
accounts | ExternalAccountPublic[] | — | Override the table's fetched data. Skips the API call. |
state | "loading" | "error" | "empty" | — | Force the table's state for testing. |
tasks / documents / transactions | override arrays | — | Override the fetched statement requests, statement documents and review transactions. Skips those API calls. |
defaultScreen / defaultAccountId | see AccountsList | — | Open 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") => void | — | Called whenever the drill-down moves between screens. |
onTransactionRemove / onTransactionUpdate | review callbacks | — | Called 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. |
className | string | — | Forwarded 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.