Configuration
Every entry in shared/config.lua. Defaults, types, and purpose.
All settings live in shared/config.lua. The file is in escrow_ignore
so it remains editable after install. Locale strings live in
shared/locales/<lang>.lua, and server-only secrets (Discord webhooks)
live in server-config.lua, which is not covered here.
Internal calibration (3D panel IK geometry, animation dictionaries, camera offsets, cache TTLs, sound effect mapping) is set inside the encrypted resource and is not part of this file.
General
Config.Localestringdefault: 'en'Active locale. Shipped values: 'en', 'fi'.
Config.UseTargetbooleandefault: trueUse a targeting system (ox_target / qb-target) for ATM and bank-ped interactions. If false, falls back to proximity prompts.
Config.TargetSystemstringdefault: 'ox_target'Target resource name. One of 'ox_target', 'qb-target', 'qtarget'.
Session
Config.Session.timeoutSecondsnumberdefault: 120Inactivity timeout before the ATM session is killed.
Config.Session.pinAttemptsnumberdefault: 3Allowed wrong-PIN attempts before lockout.
Config.Session.lockoutDurationnumberdefault: 300Lockout duration in seconds after exceeding pinAttempts.
3D ATM panels
Config.NUI3D.enabledbooleandefault: trueRender the ATM UI on the physical screen and keypad in the world via nx-3d. Set to false for a traditional fullscreen NUI.
Accounts
Config.Accounts.autoCreateDefaultbooleandefault: trueWhen a player without a default account uses an ATM, create one automatically.
Config.Accounts.autoCreateAccountTypestringdefault: 'personal'Type assigned to the auto-created default account.
Config.Accounts.autoCreateAccountNamestringdefault: 'Personal Account'Display name assigned to the auto-created default account.
Config.Accounts.autoCreateLinkBankBalancebooleandefault: trueIf true, mirror the framework's bank balance onto the linked personal account on login.
Config.Accounts.nameMinLengthnumberdefault: 3Minimum allowed length for an account name.
Config.Accounts.nameMaxLengthnumberdefault: 32Maximum allowed length for an account name.
Config.Accounts.allowOwnerClosebooleandefault: trueOwners can close their own accounts.
Config.Accounts.allowOwnerFreezebooleandefault: falseOwners can freeze their own accounts.
Config.Accounts.adminGroupsstring[]default: { 'admin', 'superadmin', 'mod' }Framework group names treated as bank admins.
Config.Accounts.adminPermissionsstring[]default: { 'admin', 'god' }Additional QBCore permissions recognized as bank admins.
Config.Accounts.adminAcePermissionstringdefault: 'command.nx_realbanking_admin'ACE permission checked for admin actions.
Shared accounts
Config.Accounts.Shared.enabledbooleandefault: trueMaster toggle for multi-owner (shared) accounts.
Config.Accounts.Shared.allowPersonalbooleandefault: falseAllow personal accounts to be shared with other players.
Config.Accounts.Shared.allowBusinessbooleandefault: trueAllow business accounts to be shared.
Config.Accounts.Shared.allowSavingsbooleandefault: trueAllow savings accounts to be shared.
Config.Accounts.Shared.allowLinkedPersonalbooleandefault: falseAllow the framework-linked personal account to be shared.
Config.Accounts.Shared.cacheSecondsnumberdefault: 120Cache TTL for shared account membership lookups.
Config.Accounts.Shared.adminBypassbooleandefault: trueAdmins bypass shared-account role checks.
Config.Accounts.Shared.defaultRolestringdefault: 'viewer'Role assigned when inviting a new member without an explicit role.
Config.Accounts.Shared.rolestableRole to permission map. Shipped with owner, manager, teller, viewer. Each role sets boolean flags: view, withdraw, deposit, transfer, manage_members, edit_limits, freeze, close.
Inventory / cash item
Config.Inventory.useOxInventoryForCashbooleandefault: falseWhen true, deposit and withdraw flows write the cash item directly through ox_inventory instead of calling the framework's AddMoney / RemoveMoney. Use this if your server renamed the cash item and the framework's auto-sync no longer fires.
Config.Inventory.moneyItemstringdefault: 'money'ox_inventory item name that represents cash. Common values: 'money', 'cash'. Only used when useOxInventoryForCash is true.
PIN code
Config.Pincode.changeCostnumberdefault: 100Fee charged when the user changes their PIN. First creation is free.
Config.Pincode.resetCostnumberdefault: 200Fee charged for a PIN reset (no old PIN required).
Config.Pincode.minLengthnumberdefault: 4Minimum PIN length.
Config.Pincode.maxLengthnumberdefault: 4Maximum PIN length.
Config.Pincode.allowSequentialbooleandefault: falseReject sequential PINs like 1234 or 4321.
Config.Pincode.allowRepeatedbooleandefault: falseReject PINs with all identical digits like 1111.
Config.Pincode.maxAttemptsnumberdefault: 3Failed-attempt threshold before lockout.
Config.Pincode.lockoutDurationnumberdefault: 300Seconds to lock out after exceeding maxAttempts.
Fees
Each fee block shares a shape: { enabled, type = 'percentage' | 'flat', value, minFee?, maxFee? }.
Config.Fees.withdrawaltabledefault: { enabled=true, type='percentage', value=1.5, minFee=1.00, maxFee=50.00 }Charged on ATM withdrawals.
Config.Fees.transfertabledefault: { enabled=true, type='flat', value=2.50, sameBankFree=true }Charged on transfers. sameBankFree waives the fee for transfers between accounts of the same player.
Config.Fees.deposittabledefault: { enabled=false, type='flat', value=0 }Charged on deposits. Disabled by default.
Transaction limits
Config.LimitstablePer-account-tier limits: default, premium, business, savings. Each entry: { dailyWithdrawal, dailyDeposit, dailyTransfer, transactionMax, transactionMin }. Shipped defaults use 10,000,000 as a permissive ceiling. Tighten these for your economy.
Sounds
Config.Sounds.volumenumberdefault: 0.2Master volume multiplier for ATM sound effects (0.0 to 1.0).
Security
Config.Security.logLevelstringdefault: 'basic'One of 'none', 'basic', 'verbose', 'paranoid'. Controls how much detail is written to the security audit log. The bank app's Security Center reads from these logs, so 'basic' is the minimum if you want session and PIN events to appear there. Set to 'none' to silence all security logs.
Config.Security.anticheattabledefault: { distanceChecks=true, teleportDetection=false, speedHackDetection=false, injectionDetection=false }Anti-exploit toggles. Distance checks are cheap and recommended. The others add overhead.
Config.Security.thresholdstabledefault: { rapidTransactions=10, largeTransfer=50000, dailyLimitPercent=90 }Heuristic thresholds for flagging suspicious activity. These flag, they do not hard-block.
ATMs
Config.ATMPropstableArray of ATM prop definitions. Each entry: { model = `hash`, type = 'standalone' | 'wall' | 'maze_bank' }. Shipped models: prop_atm_01, prop_atm_02, prop_fleeca_atm, v_5_b_atm1, v_5_b_atm2.
Blips
Config.Blipstabledefault: { enabled=false, sprite=207, color=2, scale=0.8, label='ATM', shortRange=true }Global toggle for ATM blips. Per-location visibility is still controlled by Config.ATMLocations[i].blip.
Config.ATMLocationstableATM marker / blip definitions at fixed coordinates. Each entry: { coords = vector3, name = string, blip = boolean }.
Bank locations
Config.BankLocationstableArray of in-world bank-access points. Each entry: { coords = vector3, heading, type = 'fleeca' | 'pacific' | 'blaine' | 'maze', label, blip, ped }. Peds spawn with the given model and scenario. Targeting a banker triggers nx_realbanking:server:openBank.
Bank interactions
Config.BankInteractions.targetOptionstabledefault: { label='Access Bank', icon='fa-solid fa-building-columns', distance=2.5 }Options surfaced when a player targets a bank ped or counter.
Config.BankInteractions.markertableMarker placed at bank locations. Fields: enabled, type, color {r,g,b,a}, size, bobUpAndDown, faceCamera, rotate. Disabled by default in favor of target-based interaction.
Config.BankInteractions.drawDistancenumberdefault: 15.0Maximum distance at which markers and 3D text are drawn.
Config.BankInteractions.text3dtabledefault: { enabled=false, scale=0.35, color={r=255,g=255,b=255,a=255} }Optional 3D text prompt above bank peds.
Config.BankInteractions.keybindtabledefault: { enabled=false, key=38, label='E' }Fallback keybind prompt if the targeting system is not in use.
Societies (job invoicing)
Config.SocietiestableMap of job name to { label, account, canFine, canBill, canInspect, finePresets, requireReason }. Shipped jobs: police, sheriff, ambulance, mechanic, taxi, realestate, cardealer. Each finePresets is an array of { label, amount } quick-fill options surfaced in the invoice UI.
Freelance billing
Config.FreelanceBilling.enabledbooleandefault: trueMaster toggle for freelance (player-to-player) invoicing.
Config.FreelanceBilling.commissionPercentnumberdefault: 5.0Commission taken from freelance invoices. Society-invoice commission is configured separately under Config.Commission.
Config.FreelanceBilling.maxAmountnumberdefault: 10000Maximum amount for a single freelance invoice.
Config.FreelanceBilling.minAmountnumberdefault: 10Minimum amount for a single freelance invoice.
Config.FreelanceBilling.requireDescriptionbooleandefault: trueReject freelance invoices without a description.
Config.FreelanceBilling.cooldownSecondsnumberdefault: 60Anti-spam cooldown between invoices issued by the same player.
Config.FreelanceBilling.allowOfflinePlayersbooleandefault: falseWhether freelance invoices can be addressed to offline players.
Invoices
Config.Invoices.enablePersonalbooleandefault: trueEnable player-to-player personal invoices.
Config.Invoices.enableSocietybooleandefault: trueEnable job-issued society invoices.
Config.Invoices.allowSelfInvoicebooleandefault: trueAllow a player to send an invoice to themselves.
Config.Invoices.personalRequireAcceptancebooleandefault: truePersonal invoices require the receiver to accept before they can be paid.
Config.Invoices.acceptanceTimeoutCheckIntervalnumberdefault: 5Minutes between sweeps that expire un-accepted personal invoices.
Config.Invoices.onlyOnlineTargetsbooleandefault: trueRestrict invoice creation to currently online recipients.
Config.Invoices.targetMenuEnabledbooleandefault: trueAdds an 'Invoice this player' option to the ox_target player menu.
Invoice limits
Config.InvoiceLimits.maxPendingtabledefault: { received=20, sent=10 }Hard cap on simultaneously pending invoices per player, split by direction.
Config.InvoiceLimits.maxAmountnumberdefault: 100000Maximum amount a single invoice may carry.
Config.InvoiceLimits.minAmountnumberdefault: 1Minimum amount a single invoice may carry.
Config.InvoiceLimits.dailyLimittabledefault: { enabled=true, maxCreated=50, maxAmount=500000 }Per-player daily cap on invoice count and total amount issued.
Config.InvoiceLimits.expirationtabledefault: { enabled=true, days=30 }When enabled, invoices become overdue after `days`.
VAT
Config.VAT.enabledbooleandefault: falseApply VAT on top of invoice amounts.
Config.VAT.ratenumberdefault: 10.0VAT percentage.
Config.VAT.govAccountstringdefault: 'society_government'Society account that receives collected VAT.
Config.VAT.applyToSocietybooleandefault: trueApply VAT to society-issued invoices.
Config.VAT.applyToFreelancebooleandefault: trueApply VAT to freelance-issued invoices.
Config.VAT.showBreakdownbooleandefault: trueDisplay VAT as a separate line in the invoice UI.
Commission
Config.Commission.societyInvoicestabledefault: { enabled=true, percent=5.0, minAmount=10, maxAmount=500 }Commission on society invoices, clamped between minAmount and maxAmount.
Config.Commission.freelanceInvoicestabledefault: { enabled=false, percent=0.0, minAmount=0, maxAmount=0 }Commission on freelance invoices. Disabled by default.
Autopay
Config.Autopay.enabledbooleandefault: falseAuto-debit invoices that pass their due date.
Config.Autopay.daysnumberdefault: 7Days after the due date at which autopay attempts settlement.
Config.Autopay.checkIntervalnumberdefault: 60Minutes between autopay sweeps.
Config.Autopay.debtAccountstringdefault: 'society_debt'Society account that accumulates unpaid debt.
Config.Autopay.notifyBeforetabledefault: { enabled=true, daysBefore=1 }Notify the player before autopay runs against them.
Config.Autopay.onFailuretabledefault: { applyInterest=true, interestRate=5.0, sendToDebtCollection=false, notifyPlayer=true }Behavior when autopay cannot collect funds.
Credit cards
Config.Credit.enabledbooleandefault: trueMaster toggle. If false, all credit-card exports return CREDIT_DISABLED.
Config.Credit.itemstabledefault: { givePhysicalCard=true, creditCardItem='credit_card' }ox_inventory item name that represents a credit card, and whether to give the physical item on approval.
Config.Credit.billingtableBilling cycle knobs: inGameDayMinutes, cycleDays, dueDays, checkIntervalSeconds, interestIntervalDays, minimumPaymentPercent, minimumPaymentFlat. In-game days compress real-world billing windows into a gameplay-friendly pace.
Config.Credit.scoretableCredit score model: min/max bounds, base score, stable-job bonus, bank-balance thresholds, account-age bonus, payment bonuses and penalties, usage bonus, and a usage-bonus cap (cardUsageBonusCap). These numbers drive tier eligibility.
Config.Credit.penaltiestabledefault: { lateFeeFlat=250, lateFeePercent=2.5, collectionsThreshold=50000, autoSeizeEnabled=true }Late fees and collections behavior. autoSeizeEnabled will seize funds from linked accounts when debt exceeds collectionsThreshold.
Config.Credit.limitstabledefault: { maxActiveCards=2, maxSingleCharge=25000 }Hard limits on cards per player and the maximum value of a single charge.
Config.Credit.atmCashAdvancetableATM cash-advance flow: enabled, autoFallbackOnInsufficient, requirePhysicalCard, merchant label, transactionType identifier.
Config.Credit.tierstableTier definitions keyed by tier id. Shipped: standard, gold, black. Each: label, creditLimit, interestRate, graceInterestRate, graceDays, minimumScore, requiresStableJob, whitelistedJobs. The black tier whitelists specific jobs.
Config.Credit.tierPrioritystring[]default: { 'black', 'gold', 'standard' }Order used when auto-assigning a tier from score. Highest eligible tier wins.