> ## Documentation Index
> Fetch the complete documentation index at: https://docs.awokenlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Phone app

> A 'Bank' app on the player's phone - the full banking UI in a phone-sized surface, alongside tellers and ATMs.

Awoken Banking can add a **Bank app** to the player's phone: the same banking UI, sized for a phone. It's an **extra way in**, not a replacement - tellers and ATMs keep working exactly as before. Because no teller or ATM is physically present, cash in / out and ordering a physical card are disabled; everything else (send money, accounts, loans, savings, scheduled payments, managing existing cards) works. Everything here is in `config/phone.lua`.

## Choosing a phone

`provider` picks which phone resource the app installs into, or turns the app off. `'auto'` uses the first supported phone that's running, which is what most servers want.

```lua config/phone.lua theme={"dark"}
provider = 'auto',
```

<CardGroup cols={2}>
  <Card title="Supported phones" icon="mobile">
    `lb-phone`, `qs-smartphone`, `gksphone`, `qb-phone`, `high-phone`, `roadphone`, `sixphone`, `kazer-phone`, `inferno-os`, `yflip-phone`.
  </Card>

  <Card title="Off / custom" icon="plug">
    Set `provider = false` to disable the phone app entirely. To support another phone, drop an adapter into `modules/phones/providers.lua`.
  </Card>
</CardGroup>

<Note>
  The saved-contact picker (pay a contact by name) is wired for **lb-phone** today. On other phones you still transfer by account number; everything else is identical.
</Note>

## The app

`app` controls how the Bank app looks and identifies itself on the phone.

| Setting       | What it does                                 | Default          |
| ------------- | -------------------------------------------- | ---------------- |
| `identifier`  | Internal app id registered with the phone.   | `awoken_banking` |
| `name`        | The app's display name.                      | `Bank`           |
| `description` | Short blurb shown by the phone.              | `Mobile banking` |
| `defaultApp`  | Installed by default (no in-phone download). | `true`           |

### App icon

By default the app builds a clean icon for you - a Font Awesome glyph centred on a solid tile, tinted by two colours, with **no image file needed**.

| Setting          | What it does                                                                                                                               | Default            |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ |
| `iconGlyph`      | Any free Font Awesome icon **name** (e.g. `building-columns`, `wallet`, `coins`, `vault`). Fetched once on start and tinted onto the tile. | `building-columns` |
| `iconStyle`      | `solid`, `regular`, or `brands` (most icons are `solid`).                                                                                  | `solid`            |
| `iconBackground` | The tile colour.                                                                                                                           | `#000000`          |
| `iconColor`      | The glyph colour (`''` = follow your theme accent).                                                                                        | `#D4AF37`          |
| `icon`           | A URL or `nui://` path to your **own** image. Overrides the glyph; leave `''` to use the generated icon.                                   | `''`               |

<Tip>
  The glyph is fetched from the internet once on start. If the server can't reach it, the app falls back to a built-in bank glyph - so the icon never breaks.
</Tip>

## What players can do from the phone

Physical-presence actions are off, because there's no teller or ATM present. Each is enforced server-side **and** reflected in the UI.

```lua config/phone.lua theme={"dark"}
actions = {
    deposit   = false,   -- cash in needs a teller/ATM
    withdraw  = false,   -- cash out needs a teller/ATM
    transfer  = true,    -- send money
    cardIssue = false,   -- ordering a physical card needs a teller
    upgrade   = false,   -- slot/tier upgrades are a go-to-the-bank action
}
```

| Action      | What it does                         | Default |
| ----------- | ------------------------------------ | ------- |
| `deposit`   | Cash into an account.                | **Off** |
| `withdraw`  | Cash out of an account.              | **Off** |
| `transfer`  | Send money to another account.       | On      |
| `cardIssue` | Order a new physical card.           | **Off** |
| `upgrade`   | Buy an account slot or savings tier. | **Off** |

## Contacts

Pull the player's phone contacts into the send-money picker so they can pay a saved contact by name instead of typing an account number. Best-effort - it resolves a contact's phone number to an online player's account at send time.

```lua config/phone.lua theme={"dark"}
contacts = {
    sync = true,   -- false to disable the contact picker
}
```
