Configuration
$50$25 Early Access | Purchase on Tebex
Complete configuration reference for nc-banking. All settings are in config/config.lua.
Framework & Target
Config.Framework = 'auto' -- 'qbcore' | 'qbox' | 'esx' | 'ox' | 'auto'
Config.TargetSystem = 'auto' -- 'ox_target' | 'qb-target' | 'qtarget' | 'interact' | 'auto'
Config.OxBossGrade = 3 -- OX Core: minimum grade to be considered boss
'auto'detects the first available resource'interact'= E key proximity interaction (no target resource needed)
Locale
Config.Locale = 'en' -- 'en' | 'de' | 'es' | 'fr' | 'pt'
Sets the language for all server notifications, NUI text, and dialog messages. Locale files are in locales/. See Features > Multi-Language for details on adding languages.
Inventory System
Config.InventorySystem = 'auto' -- 'auto' or specific resource name
Presets
Pre-configured mappings for popular inventory resources. Each preset defines export names and metadata format:
Config.InventoryPresets = {
{
resource = 'ox_inventory',
hasItem = 'GetItemCount',
addItem = 'AddItem',
removeItem = 'RemoveItem',
getCount = 'GetItemCount',
metadataFormat = 'direct', -- (source, item, amount, metadata)
},
{
resource = 'qb-inventory',
hasItem = 'HasItem',
addItem = 'AddItem',
removeItem = 'RemoveItem',
getCount = 'GetItemCount',
metadataFormat = 'slot', -- (source, item, amount, nil, metadata)
},
-- qs-inventory, ps-inventory, codem-inventory, core_inventory...
}
metadataFormat
| Value | AddItem Signature | Use for |
|---|---|---|
'direct' |
AddItem(source, item, amount, metadata) |
ox_inventory, codem, core_inventory |
'slot' |
AddItem(source, item, amount, nil, metadata) |
qb-inventory, qs, ps-inventory |
'none' |
AddItem(source, item, amount) |
No metadata support |
To add a custom inventory, append a new entry to Config.InventoryPresets.
E Key Interaction
When no target system is available:
Config.InteractKey = 38 -- E key
Config.InteractPrompt = '[E]'
Config.InteractDrawDistance = 10.0
Config.InteractFontScale = 0.35
Database
Config.AutoInstallSQL = true -- Auto-create tables on first start
NPC Exclusivity
Config.NPCExclusive = true -- One player per NPC at a time
Config.NPCLockTimeout = 300 -- Lock expires after 5 minutes (safety)
External UI Toggle
Automatically hide/show other resource UIs when banking opens:
Config.ExternalUIToggle = {
-- Export mode:
{ resource = 'nox-name', export = 'ToggleNameplate' },
{ resource = 'nc-hud', export = 'ToggleHUD' },
-- Event mode:
{ resource = 'nox-chat',
showEvent = 'nox-chat:setVisibleBySetting', showArg = true,
hideEvent = 'nox-chat:setVisibleBySetting', hideArg = false },
}
PIN
Config.RequirePin = true
Config.RequirePinOnATM = true
Config.RequirePinOnNPC = false
Config.DefaultPin = '0000'
Config.PinLength = 4
Config.MaxPinAttempts = 5
Config.PinLockoutTime = 30 -- Seconds
Transactions
Config.TransactionLogLimit = 50
Config.TransferFee = 0.0 -- 0.05 = 5% fee
Config.MinTransferAmount = 1
Config.MaxTransferAmount = 1000000
Config.MoneyCountVolume = 0.3 -- Money counting sound volume (0.0~1.0)
Config.MoneyCountEndVolume = 0.4 -- Money count end sound volume
Transfer Security
Config.TransferCooldown = 5 -- Seconds between transfers per player
Config.OfflineTransferMainAccount = false -- Allow transfers TO offline player's main account
Config.OfflineTransferSubAccount = true -- Allow transfers TO offline player's sub-accounts
Config.MaxAccountLookupFails = 5 -- Failed lookups before temporary block
Config.AccountLookupBlockDuration = 60 -- Block duration in seconds
Account Number System
Config.BankName = 'NC' -- Prefix for account numbers
Config.AccountNumberLength = 12 -- Digit count (NC-000000000001)
Config.SelfTransferFee = false -- false = no fee for self-transfers
Config.BusinessAutoCreate = true -- Auto-create business accounts on login
Auto Business Jobs
Automatically create business accounts for specific jobs on server start:
Config.AutoBusinessJobs = {
-- { job = 'police', label = 'Police Department' },
-- { job = 'ambulance', label = 'EMS Department' },
-- { job = 'mechanic', label = 'Mechanic Shop' },
}
When an isBoss grade player logs in, the account owner is automatically updated to that player.
- Account numbers and transfers auto-prefix: entering digits-only (e.g. on ATM keypad) automatically prepends
{BankName}- - On server start, existing accounts without numbers are auto-backfilled
Savings Accounts
Config.SavingsEnabled = true
Config.SavingsInterestRate = 0.02 -- 2% per interval
Config.SavingsInterestInterval = 60 -- Minutes between payouts
Config.MaxSavingsAccounts = 3
Config.MaxSavingsBalance = 500000
Config.MinSavingsDeposit = 100
Config.MinSavingsWithdraw = 100
Config.MaxSavingsGoals = 5
Personal Accounts
Config.PersonalAccountEnabled = true
Config.MaxPersonalAccounts = 3
Config.MaxPersonalBalance = 1000000
Config.MinPersonalDeposit = 1
Config.MinPersonalWithdraw = 1
Business Accounts
Config.BusinessAccountEnabled = true
Config.MaxBusinessBalance = 10000000
Config.BusinessDepositAllMembers = true -- All job members can deposit
Config.MinBusinessDeposit = 1
Config.MinBusinessWithdraw = 1
Shared Accounts
Config.SharedAccountEnabled = true
Config.MaxSharedAccounts = 2 -- Max accounts you can OWN
Config.MaxSharedMembers = 10
Config.MaxSharedBalance = 5000000
Config.SharedWithdrawOwnerOnly = true
Config.MinSharedDeposit = 1
Config.MinSharedWithdraw = 1
Loans
Config.LoanEnabled = true
Config.MinLoanAmount = 1000
Config.MaxLoanAmount = 100000
Config.LoanInterestRate = 0.10 -- 10% flat interest
Config.MaxActiveLoans = 2
Config.LoanDurations = { 7, 14, 30 } -- Days
Config.LoanMinPayment = 500
-- Auto-pay
Config.LoanAutoPayEnabled = true
Config.LoanAutoPayInterval = 1440 -- Minutes (1440 = 24h)
Config.LoanAutoPayPercent = 0.10 -- 10% of remaining
Config.LoanAutoPayMinAmount = 500
-- Penalties
Config.LoanGracePeriodHours = 6
Config.LoanLatePenaltyEnabled = true
Config.LoanLatePenaltyType = 'flat' -- 'flat' or 'percent'
Config.LoanLatePenaltyAmount = 500
Config.LoanBalanceMultiplier = 3 -- Max loan = balance × multiplier
Credit Score
Config.CreditScoreEnabled = true
Config.CreditScoreMinForLoan = 400
Config.CreditScoreRules = {
baseScore = 350,
maxScore = 850,
minScore = 300,
-- Positive: perDeposit, perLoanPaid, perSavingsAccount, etc.
-- Negative: perLoanDefaulted, perActiveOverdueLoan, noTransactionsRecent
}
Config.CreditTiers = {
{ name = 'Poor', minScore = 300, maxLoan = 5000, interestMod = 0.05 },
{ name = 'Fair', minScore = 450, maxLoan = 25000, interestMod = 0.02 },
{ name = 'Good', minScore = 550, maxLoan = 50000, interestMod = 0.00 },
{ name = 'Very Good', minScore = 650, maxLoan = 75000, interestMod = -0.02 },
{ name = 'Excellent', minScore = 750, maxLoan = 100000, interestMod = -0.03 },
}
Invoices / Billing
Config.BillingEnabled = true
Config.InvoiceExpireDays = 7
Config.MaxPendingInvoices = 20
Config.AllowDeclineInvoice = true
Config.AllowPayAllInvoices = true
Billing Phone App
Config.BillingAppEnabled = true
Config.BillingAppKeybind = 'F6'
Config.BillingAppCommand = 'billing'
Config.BillingAppCanSend = true
Config.BillingAppSendBossOnly = false
Config.BillingAppNotifyOnNew = true
Config.PhoneIntegration = 'standalone' -- 'standalone' (okokPhone / lb-phone planned)
Notification
Config.NotificationType = 'auto' -- 'ox_lib' | 'qb' | 'esx' | 'custom' | 'auto'
When set to 'auto', the notification system matches your detected framework. Use 'custom' to define your own notification function.
Force Close Other NUI
Automatically close other resource UIs when banking opens:
Config.ForceCloseOtherNUI = true
Config.CloseResources = {
-- Export mode:
{ resource = 'nox-name', export = 'ToggleNameplate', hideArg = false, showArg = true },
{ resource = 'nc-hud', export = 'ToggleHUD', hideArg = false, showArg = true },
-- Event mode:
{ resource = 'nox-chat',
showEvent = 'nox-chat:setVisibleBySetting', showArg = true,
hideEvent = 'nox-chat:setVisibleBySetting', hideArg = false },
}
NPC Locations
8 bank locations with 17 NPC tellers. Each location can have multiple tellers — only the first teller per location has blip.enabled = true.
Config.BankNPCs = {
-- Pacific Standard (2 tellers)
{ id = 'bank_pacific_1', coords = vector4(149.57, -1042.11, 29.37, 338.29), blip = { enabled = true, ... } },
{ id = 'bank_pacific_1_1', coords = vector4(148.06, -1041.57, 29.37, 340.96), blip = { enabled = false, ... } },
-- Fleeca Bank — Vespucci (2 tellers)
{ id = 'bank_fleeca_1', coords = vector4(-1211.98, -331.95, 37.78, 25.48), blip = { enabled = true, ... } },
{ id = 'bank_fleeca_1_1', coords = vector4(-1213.28, -332.69, 37.78, 26.72), blip = { enabled = false, ... } },
-- Fleeca Bank — Great Ocean (2 tellers)
{ id = 'bank_fleeca_2_1', coords = vector4(-2961.1, 482.93, 15.7, 83.28), blip = { enabled = true, ... } },
{ id = 'bank_fleeca_2_2', coords = vector4(-2961.23, 481.42, 15.7, 89.71), blip = { enabled = false, ... } },
-- Fleeca Bank — Paleto Bay (1 teller)
{ id = 'bank_fleeca_paleto', coords = vector4(-112.24, 6471.03, 31.63, 134.87), blip = { enabled = true, ... } },
-- Maze Bank (2 tellers)
{ id = 'bank_maze_1', coords = vector4(313.76, -280.43, 54.16, 337.58), blip = { enabled = true, ... } },
{ id = 'bank_maze_2', coords = vector4(312.4, -279.93, 54.16, 341.52), blip = { enabled = false, ... } },
-- Bank of Liberty (2 tellers)
{ id = 'bank_liberty_1', coords = vector4(-351.33, -51.38, 49.04, 344.05), blip = { enabled = true, ... } },
{ id = 'bank_liberty_2', coords = vector4(-352.83, -50.79, 49.04, 344.87), blip = { enabled = false, ... } },
-- Maze Bank Tower HQ (4 tellers)
{ id = 'bank_maze_tower_1', coords = vector4(248.87, 224.34, 106.29, 160.95), blip = { enabled = true, color = 3, scale = 1.2, ... } },
{ id = 'bank_maze_tower_2', coords = vector4(247.05, 224.99, 106.29, 160.67), blip = { enabled = false, ... } },
{ id = 'bank_maze_tower_3', coords = vector4(243.65, 226.24, 106.29, 159.68), blip = { enabled = false, ... } },
{ id = 'bank_maze_tower_4', coords = vector4(252.21, 223.12, 106.29, 158.9), blip = { enabled = false, ... } },
-- Fleeca Bank — Route 68 (2 tellers)
{ id = 'bank_fleeca_3_1', coords = vector4(1174.99, 2708.23, 38.09, 179.89), blip = { enabled = true, ... } },
{ id = 'bank_fleeca_3_2', coords = vector4(1176.47, 2708.23, 38.09, 180.66), blip = { enabled = false, ... } },
}
NPC Properties
| Property | Type | Description |
|---|---|---|
id |
string | Unique identifier |
model |
string | Ped model (default: u_f_m_casinocash_01) |
coords |
vector4 | x, y, z, heading |
dialogTitle |
string | Dialog header |
dialogSubtitle |
string | Branch name shown in dialog |
greeting |
string | NPC's first message |
blip.enabled |
boolean | Show map blip |
blip.sprite |
number | Blip icon (108 = bank) |
blip.color |
number | Blip color |
blip.scale |
number | Blip size |
ATM
Config.ATMEnabled = true
Camera Presets
Config.ATMCameraPresets = {
{
name = 'default',
distance = 0.8, rightOffset = 0.0, height = 1.4,
lookAtHeight = 0.8, fov = 42.0, transitionMs = 800,
dof = true, dofNear = 0.3, dofFar = 4.0, dofStrength = 0.6,
models = { 'prop_atm_01' },
},
{
name = 'fleeca',
distance = 0.6, height = 1.6, lookAtHeight = 1.1, fov = 45.0,
models = { 'prop_fleeca_atm', 'prop_atm_02', 'prop_atm_03', 'amb_prop_pine_atm' },
},
}
ATM Spawner (Admin)
Config.ATMSpawnEnabled = true
Config.ATMSpawnModel = 'prop_atm_01'
Config.ATMSpawnCommand = 'atmspawn'
Config.ATMDeleteCommand = 'atmdelete'
ATM Calibration
Config.ATMCalibration = {
enabled = true,
command = 'atmcalibrate',
coordsFile = 'atm_coords.json',
debug = false,
}
Bank Card System
Config.BankCard = {
enabled = true,
useInventory = true, -- true: item + DB, false: DB only
itemName = 'atm_card', -- Only used when useInventory = true
issueAtNPC = true,
requireForATM = true,
maxCards = 10,
reissueFee = 250, -- Fee for reissuing a card ($0 = free)
-- Daily spending limits (ATM withdrawals + transfers only)
dailyLimitEnabled = true,
dailyLimitResetHour = 0, -- 0 = midnight server time
defaultGrade = 'standard',
grades = {
standard = { label = 'Standard Card', dailyLimit = 5000, cost = 0, order = 1 },
premium = { label = 'Premium Card', dailyLimit = 25000, cost = 500, order = 2 },
gold = { label = 'Gold Card', dailyLimit = 100000, cost = 2000, order = 3 },
platinum = { label = 'Platinum Card', dailyLimit = 0, cost = 5000, order = 4 }, -- 0 = unlimited
},
}
Card Services (NPC Menu)
Players can access three card operations at the NPC:
- Issue New Card — Issue a card linked to a specific account
- Cancel Card — Remove an existing card from inventory and database
- Reissue Card — Replace a card for the same account (preserves grade, charges
reissueFee)
useInventory
| Value | Behavior |
|---|---|
true |
Card = inventory item with metadata + DB record. Requires inventory with metadata support. |
false |
Card = DB record only. No inventory item created. Card list shown from database. |
Admin Permissions
Config.AdminAcePermission = 'nc-banking.admin'
Grant via server.cfg:
add_ace group.admin nc-banking.admin allow