--- title: "Client Bank Usage Guide" description: "The client bank addon opens the bank and ATM browser UI, forwards banking requests to the server bank addon, and pushes account updates back into the browser." --- ## Open Bank UI Open full bank mode: ```sqf call forge_client_bank_fnc_openUI; ``` Open ATM mode: ```sqf [true] call forge_client_bank_fnc_openUI; ``` The open function creates `RscBank`, sets the bridge mode to `bank` or `atm`, loads `ui/_site/index.html`, and routes browser events through `forge_client_bank_fnc_handleUIEvents`. ## Bridge and Repository `forge_client_bank_fnc_initRepository` tracks account load and cached account state. `forge_client_bank_fnc_initUIBridge` owns: - active browser control tracking - bank/ATM mode - browser ready handling - account hydrate and sync responses - deposit, withdrawal, transfer, earnings deposit, credit repayment, and PIN requests - browser notice delivery ## Browser Events | Event | Client behavior | | --- | --- | | `bank::ready` | Mark browser ready and request hydrate from the server. | | `bank::refresh` | Request fresh bank hydrate data. | | `bank::deposit::request` | Forward deposit amount to the server. | | `bank::withdraw::request` | Forward withdrawal amount to the server. | | `bank::transfer::request` | Forward target, source field, and amount. | | `bank::depositEarnings::request` | Request earnings deposit. | | `bank::repayCreditLine::request` | Request credit-line repayment. | | `bank::pin::request` | Forward PIN validation request. | | `bank::close` | Dispose bridge screen state and close the display. | ## Browser Response Events The bridge sends: | Event | Purpose | | --- | --- | | `bank::hydrate` | Full session/account payload. | | `bank::sync` | Account patch or sync data. | | `bank::notice` | UI-visible notice payload. | ## Request Flow Example deposit flow: 1. Browser sends `bank::deposit::request` with an `amount`. 2. Client bridge calls the server bank request event. 3. Server bank addon validates the request and calls bank hot-state logic. 4. Server response is caught by the client post-init event handlers. 5. Client bridge sends `bank::sync` or `bank::notice` back to the browser. ## Authoritative State Balances, PIN authorization, transfers, checkout charges, credit lines, and persistence are server-owned. The client should only display account data and request mutations through server events. ## Related Guides - [Bank Usage Guide](/server-modules/bank) - [Client Common Usage Guide](/client-addons/common) - [Client Store Usage Guide](/client-addons/store)