NX CreativeNX CreativeDocs
Scriptsnx_realbanking

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: true

Use 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: 120

Inactivity timeout before the ATM session is killed.

Config.Session.pinAttemptsnumberdefault: 3

Allowed wrong-PIN attempts before lockout.

Config.Session.lockoutDurationnumberdefault: 300

Lockout duration in seconds after exceeding pinAttempts.

3D ATM panels

Config.NUI3D.enabledbooleandefault: true

Render 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: true

When 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: true

If true, mirror the framework's bank balance onto the linked personal account on login.

Config.Accounts.nameMinLengthnumberdefault: 3

Minimum allowed length for an account name.

Config.Accounts.nameMaxLengthnumberdefault: 32

Maximum allowed length for an account name.

Config.Accounts.allowOwnerClosebooleandefault: true

Owners can close their own accounts.

Config.Accounts.allowOwnerFreezebooleandefault: false

Owners 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: true

Master toggle for multi-owner (shared) accounts.

Config.Accounts.Shared.allowPersonalbooleandefault: false

Allow personal accounts to be shared with other players.

Config.Accounts.Shared.allowBusinessbooleandefault: true

Allow business accounts to be shared.

Config.Accounts.Shared.allowSavingsbooleandefault: true

Allow savings accounts to be shared.

Config.Accounts.Shared.allowLinkedPersonalbooleandefault: false

Allow the framework-linked personal account to be shared.

Config.Accounts.Shared.cacheSecondsnumberdefault: 120

Cache TTL for shared account membership lookups.

Config.Accounts.Shared.adminBypassbooleandefault: true

Admins bypass shared-account role checks.

Config.Accounts.Shared.defaultRolestringdefault: 'viewer'

Role assigned when inviting a new member without an explicit role.

Config.Accounts.Shared.rolestable

Role 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: false

When 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: 100

Fee charged when the user changes their PIN. First creation is free.

Config.Pincode.resetCostnumberdefault: 200

Fee charged for a PIN reset (no old PIN required).

Config.Pincode.minLengthnumberdefault: 4

Minimum PIN length.

Config.Pincode.maxLengthnumberdefault: 4

Maximum PIN length.

Config.Pincode.allowSequentialbooleandefault: false

Reject sequential PINs like 1234 or 4321.

Config.Pincode.allowRepeatedbooleandefault: false

Reject PINs with all identical digits like 1111.

Config.Pincode.maxAttemptsnumberdefault: 3

Failed-attempt threshold before lockout.

Config.Pincode.lockoutDurationnumberdefault: 300

Seconds 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.Limitstable

Per-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.2

Master 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.ATMPropstable

Array 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.ATMLocationstable

ATM marker / blip definitions at fixed coordinates. Each entry: { coords = vector3, name = string, blip = boolean }.

Bank locations

Config.BankLocationstable

Array 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.markertable

Marker 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.0

Maximum 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.Societiestable

Map 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: true

Master toggle for freelance (player-to-player) invoicing.

Config.FreelanceBilling.commissionPercentnumberdefault: 5.0

Commission taken from freelance invoices. Society-invoice commission is configured separately under Config.Commission.

Config.FreelanceBilling.maxAmountnumberdefault: 10000

Maximum amount for a single freelance invoice.

Config.FreelanceBilling.minAmountnumberdefault: 10

Minimum amount for a single freelance invoice.

Config.FreelanceBilling.requireDescriptionbooleandefault: true

Reject freelance invoices without a description.

Config.FreelanceBilling.cooldownSecondsnumberdefault: 60

Anti-spam cooldown between invoices issued by the same player.

Config.FreelanceBilling.allowOfflinePlayersbooleandefault: false

Whether freelance invoices can be addressed to offline players.

Invoices

Config.Invoices.enablePersonalbooleandefault: true

Enable player-to-player personal invoices.

Config.Invoices.enableSocietybooleandefault: true

Enable job-issued society invoices.

Config.Invoices.allowSelfInvoicebooleandefault: true

Allow a player to send an invoice to themselves.

Config.Invoices.personalRequireAcceptancebooleandefault: true

Personal invoices require the receiver to accept before they can be paid.

Config.Invoices.acceptanceTimeoutCheckIntervalnumberdefault: 5

Minutes between sweeps that expire un-accepted personal invoices.

Config.Invoices.onlyOnlineTargetsbooleandefault: true

Restrict invoice creation to currently online recipients.

Config.Invoices.targetMenuEnabledbooleandefault: true

Adds 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: 100000

Maximum amount a single invoice may carry.

Config.InvoiceLimits.minAmountnumberdefault: 1

Minimum 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: false

Apply VAT on top of invoice amounts.

Config.VAT.ratenumberdefault: 10.0

VAT percentage.

Config.VAT.govAccountstringdefault: 'society_government'

Society account that receives collected VAT.

Config.VAT.applyToSocietybooleandefault: true

Apply VAT to society-issued invoices.

Config.VAT.applyToFreelancebooleandefault: true

Apply VAT to freelance-issued invoices.

Config.VAT.showBreakdownbooleandefault: true

Display 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: false

Auto-debit invoices that pass their due date.

Config.Autopay.daysnumberdefault: 7

Days after the due date at which autopay attempts settlement.

Config.Autopay.checkIntervalnumberdefault: 60

Minutes 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: true

Master 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.billingtable

Billing cycle knobs: inGameDayMinutes, cycleDays, dueDays, checkIntervalSeconds, interestIntervalDays, minimumPaymentPercent, minimumPaymentFlat. In-game days compress real-world billing windows into a gameplay-friendly pace.

Config.Credit.scoretable

Credit 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.atmCashAdvancetable

ATM cash-advance flow: enabled, autoFallbackOnInsufficient, requirePhysicalCard, merchant label, transactionType identifier.

Config.Credit.tierstable

Tier 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.