The CBS API now exposes a balance endpoint, which it previously did not.
Several comments in the codebase asserted that no such endpoint existed
anywhere in the API; those are corrected here rather than left to mislead.
Balance is fetched lazily, per account, from the Account Details card:
- `accounts.balance` endpoint, `CbsAccountBalance` type, and a
`getAccountBalance` query with `keepUnusedDataFor: 0` — a balance is the
most perishable figure in the app and must not outlive its screen.
- The call is triggered by the customer, not by render. Every call reaches
the core banking system, and a balance should not appear over someone's
shoulder just for opening a screen.
- `supportsBalanceEnquiry` gates the control by account type only, with no
status check: a dormant savings account cannot be debited but still has a
balance. Deposits are excluded because the endpoint does not serve them.
- `ACCOUNT_BALANCE_NOT_AVAILABLE` added to the error catalogue as a
non-retryable refusal, so the card states it instead of inviting a tap
that gets the identical answer.
Also carries in-progress work already present in the tree: customer-facing
account type labels (`accountTypeLabel`) applied across the account card,
selector, mini statement, balance enquiry and MMID screens.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>