actualbudget/actual · error
ACCOUNT_MISSING
ACCOUNT_MISSING
Error message
ACCOUNT_MISSING
What it means
Returned by getFailedSyncError for bank_sync_status 'account-missing'. The aggregator can no longer find the linked account in the list returned by the bank — typically because the account was closed, renamed, or the provider's account enumeration changed.
Source
Thrown at packages/desktop-client/src/accounts/syncStatus.ts:34
account: Pick<AccountEntity, 'bank_sync_status' | 'account_sync_source'>,
): { type: string; code: string } {
switch (account.bank_sync_status) {
case 'reauth-required':
if (account.account_sync_source === 'simpleFin') {
return { type: 'INVALID_ACCESS_TOKEN', code: 'INVALID_ACCESS_TOKEN' };
}
return { type: 'ITEM_ERROR', code: 'ITEM_LOGIN_REQUIRED' };
case 'attention-required':
return {
type: 'ACCOUNT_NEEDS_ATTENTION',
code: 'ACCOUNT_NEEDS_ATTENTION',
};
case 'rate-limit-exceeded':
return { type: 'RATE_LIMIT_EXCEEDED', code: 'RATE_LIMIT_EXCEEDED' };
case 'timed-out':
return { type: 'TIMED_OUT', code: 'TIMED_OUT' };
case 'account-missing':
return { type: 'ACCOUNT_MISSING', code: 'ACCOUNT_MISSING' };
default:
return { type: 'SYNC_ERROR', code: 'SYNC_ERROR' };
}
}
View on GitHub (pinned to d4334cb6e6)
Solutions
- Confirm in online banking whether the account still exists and its id changed
- If replaced, re-link the account to its new counterpart via the Re-link flow
- If closed, unlink the bank sync from the account and keep it as a manual account
- Check the provider dashboard for enumeration changes or migration notices
Example fix
// before
await syncAccount(account.id); // ACCOUNT_MISSING every time
// after
if (getFailedSyncError(account).code === 'ACCOUNT_MISSING') {
await relinkAccount(account.id); // bind to the new remote account id
} Defensive patterns
Strategy: validation
Validate before calling
function isAccountMissing(account) {
return getFailedSyncError(account).code === 'ACCOUNT_MISSING';
} Type guard
function isAccountMissingError(v) {
return !!v && typeof v === 'object' && v.code === 'ACCOUNT_MISSING';
} Prevention
- Reconcile remote account ids after any bank-side account change
- Stop auto-syncing accounts flagged 'account-missing' until re-linked
- Alert users quickly so they can re-link or unlink closed accounts
When it happens
Trigger: Calling getFailedSyncError on an account with bank_sync_status === 'account-missing', usually right after a bank refresh where the remote account id no longer exists in the provider response.
Common situations: User closed the account at the bank; bank reissued the account with a new id; aggregator stopped returning the account (hidden or restricted); institution migrations temporarily remove accounts from the API.
Related errors
- response.reason || response.error_code
- response.reason || response.error || fallbackMessage
- Account with ID ${upgradingId} not found.
- Bank with ID ${bankId} not found.
- `payeeName` is required when adding a transaction
AI-assisted analysis of actualbudget/actual@d4334cb6e6 (2026-08-29).
Data as JSON: /api/errors/4236c1f2e58b7a6a.
Report an issue: GitHub.