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

# config.lua

> Language, modules, branding, UI size, bank branches, blips, interaction and ATM settings of aps_banking, with every option explained in the file.

`config/config.lua` holds these settings. Every option is explained in the comments below.

> [!NOTE]
>
> Runs on: **shared**. This file stays editable when the resource is escrow-protected. Restart the resource after a change.

```lua theme={null}
Config = Config or {}

-- ─────────────────────────────────────────────
--  Language
--    Lua texts: locales/<lang>.lua   UI texts: locales/ui/<lang>.json
-- ─────────────────────────────────────────────
Config.Locale = 'en'

-- ─────────────────────────────────────────────
--  Modules — switch off what your server doesn't use.
--  A disabled module hides its page, stops its jobs and refuses its actions.
-- ─────────────────────────────────────────────
Config.Features = {
    savings   = true,
    shared    = true,
    society   = true,
    cards     = true,
    atm       = true,
    loans     = true,
    admin     = true,
    receipts  = true,
    cityhall  = true,   -- credit score link, only used while aps_cityhall is started
}

-- ─────────────────────────────────────────────
--  Branding
--    name    shown in the UI, blips, receipts and webhooks
--    logo    '' = APS logo, or your own: a URL / 'nui://…' image (corners get rounded)
--    accent  main colour. Tints and the default card are derived from it.
-- ─────────────────────────────────────────────
Config.Branding = {
    name   = 'APS Bank',
    logo   = '',
    accent = '#99b8cd',
}

-- ─────────────────────────────────────────────
--  UI
--    width, height   panel size in % of the screen (keeps about 16:9)
--    scale           extra zoom for very large or very small screens
-- ─────────────────────────────────────────────
Config.UI = {
    width  = 72,
    height = 76,
    scale  = 1.0,
    pageSize = 8,        -- rows per page on Transactions
    quickAmounts = { 100, 500, 1000, 5000 },
}

-- ─────────────────────────────────────────────
--  Bank branches
--    coords     where the NPC stands / the prompt is shown (vector4, w = heading)
--    ped        NPC model, or false for a plain interaction point
--    blip       false hides the blip of this branch
--    hours      false = always open, or { open = 8, close = 20 } (24h clock).
--               close lower than open wraps past midnight.
-- ─────────────────────────────────────────────
Config.Banks = {
    { name = 'Legion Square',   coords = vector4(149.18, -1042.03, 29.37, 340.0),  ped = 's_m_m_highsec_01', hours = false },
    { name = 'Hawick Avenue',   coords = vector4(313.77, -280.48, 54.16, 340.0),   ped = 's_m_m_highsec_01', hours = false },
    { name = 'Rockford Hills',  coords = vector4(-351.27, -51.27, 49.04, 340.0),   ped = 's_m_m_highsec_01', hours = false },
    { name = 'Del Perro',       coords = vector4(-1212.63, -331.46, 37.78, 25.0),  ped = 's_m_m_highsec_01', hours = false },
    { name = 'Great Ocean Hwy', coords = vector4(-2961.03, 482.88, 15.70, 85.0),   ped = 's_m_m_highsec_01', hours = false },
    { name = 'Route 68',        coords = vector4(1175.03, 2708.25, 38.09, 178.0),  ped = 's_m_m_highsec_01', hours = false },
    { name = 'Paleto Bay',      coords = vector4(-111.85, 6469.47, 31.63, 134.0),  ped = 's_m_m_highsec_01', hours = { open = 8, close = 20 } },
}

-- ─────────────────────────────────────────────
--  Opening hours
--    clock   'server'  real time of the server. Checked on the server too.
--            'game'    in-game clock. Only the prompt follows it, because the
--                      server has no game clock of its own.
-- ─────────────────────────────────────────────
Config.Hours = { clock = 'server' }

Config.Blip = {
    enabled = true,
    sprite  = 108,
    color   = 2,
    scale   = 0.75,
}

-- ─────────────────────────────────────────────
--  Interaction
--    type      'auto' → ox_target → qb-target → sleepless_interact → prompt
--              'ox_target' | 'qb-target' | 'sleepless_interact' | 'prompt'
--    key       control id for the built-in prompt (38 = E)
--    distance  how close the player has to be
-- ─────────────────────────────────────────────
Config.Interaction = {
    type     = 'auto',
    key      = 38,
    distance = 2.0,
    icon     = 'fa-solid fa-building-columns',
    atmIcon  = 'fa-solid fa-credit-card',
}

-- ─────────────────────────────────────────────
--  ATMs
--    models         props that act as an ATM
--    requireCard    a card has to be inserted. false also offers a plain
--                   "use my account" entry without PIN.
--    deposit        allow cash deposits at ATMs
--    amounts        quick amount buttons
--    sessionMinutes how long a PIN stays valid after it was entered
--    itemNeedsAtm   using a card item only works next to an ATM
-- ─────────────────────────────────────────────
Config.ATM = {
    models = { 'prop_atm_01', 'prop_atm_02', 'prop_atm_03', 'prop_fleeca_atm' },
    requireCard    = true,
    deposit        = true,
    amounts        = { 50, 100, 200, 500, 1000, 2000 },
    sessionMinutes = 3,
    itemNeedsAtm   = true,
}

-- Optional command to open the bank anywhere. Off by default: it removes the
-- location check for that player's session.
Config.Command = { enabled = false, name = 'bank' }
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.