Configuration

The config is split into five open files in config/:

FileWhat it holds
main.luaLanguage, pages on or off, IBAN, cash, cards and PIN, society, gang and shared accounts, scheduled transfers, /givecash, bank robberies
locations.luaBanks, bankers, voices and dialogue, ATMs, target, sounds, HUD
economy.luaCosts, transfer fee, largest amount, savings, loans, Discord webhook
billing.luaBills
compat.luaScripts written for other banks, and the account import
In the files each key is written C.Name (for example C.Locale = 'en'). This page writes them Config.Name. Amounts are whole numbers.
Your server, your rules. The five files of config/, locales/ and the inventory images are not encrypted: language and currency, IBAN format, cards and PIN, fees and prices, savings, loans and credit score, bills, society, gang and shared accounts, banks and their bankers, voices, blips, ATM models, target or prompt, sounds, commands and compatibility are all yours to change. With hz_lib, 48 of these settings also change in game from /hzpanel, with no restart.

General

KeyDefaultDescription
Config.Locale'en'Language of the app, the dialogue and the messages: a file name from locales/. en and fr ship. nil uses the hz_locale convar.
Config.Currency'$'Currency sign shown in the app.
Config.Featuressavings, bills, loans all trueTurns the Savings, Bills and Loans pages on or off. Off: the page leaves the menu and the server refuses its operations. Nothing is deleted.
Config.RateLimitssee fileMost calls per player in a few seconds, for reads, money operations, PIN checks and /givecash.
Config.DebugfalseExtra logs in the console.
Another language: copy locales/en.json to a new file (for example locales/de.json), translate the text, and set Config.Locale = 'de'. No rebuild needed; missing lines fall back to English. The bankers' voices exist in English and French only.

IBAN

KeyDefaultDescription
Config.IbanPrefix'NT'Prefix of every IBAN, in capitals. A personal IBAN looks like NT482913.
Config.IbanDigits6Digits of a generated personal IBAN.
Config.CustomIbanMaxChars12Longest custom IBAN a player can buy, prefix included.
Society accounts get the prefix and the job name (NTPOLICE), gang accounts the prefix, GANG and the gang name (NTGANGBALLAS). Players can't take these as custom IBANs.

Cash

KeyDefaultDescription
Config.UseCashAsItem'auto''auto': the cash item with ox_inventory, the framework's cash otherwise. true forces the item, false the framework's cash.
Config.CashItem'money'Name of the cash item (ox_inventory money, qb cash).
Config.BankAccount'bank'Framework account used as the personal bank.

Cards & PIN

KeyDefaultDescription
Config.RequireCreditCardForATMtrueA bank card is needed to use an ATM. false: the PIN alone.
Config.CreditCardItem'bank_card'Item name of the card. It must exist in your inventory, see Installation.
Config.FirstCardFreetrueA character who never had a card gets the first one free, at the counter or straight at the ATM.
Config.CardValidityDays90Days a new card stays valid. 0 = cards never expire.
Config.MaxCardsPerAccount3Cards a character can hold at once, expired ones not counted. 0 = no limit.
Config.PinDigits4Length of the PIN.
Config.PinMaxAttempts3Wrong PINs in a row before the card is locked.
Config.PinLockoutSeconds300How long the card stays locked.
Config.PinAtBankfalseKeep false: the PIN is asked at ATMs only.

Society & gang accounts

KeyDefaultDescription
Config.SocietyAllJobstrueEvery job has a society account, created on first use. false: only the jobs of Config.Societies.
Config.Societiespolice, ambulance, mechanic, realestateJobs whose account is created at start.
Config.SocietyExcludedJobsunemployedJobs that never have an account.
Config.SocietyMinGrade3Besides the boss, the job grade (and above) that opens the society account. false = boss only.
Config.SocietyMinGradeByJob{}Grade per job, for example { police = 4 }.
Config.BankAuthtrueQbox: the bank access setting of each grade (in qbx_management) decides who opens society and gang accounts. false = the grade rules above.
Config.EsxSocietyAccountstrueESX: society balances are the society_<job> accounts of esx_addonaccount, so boss menus and bills see the same money.
Config.BossGradenilESX: grade level of the boss (and above). nil = the boss flag or a grade named boss.
Config.GangMinGradefalseBesides the gang boss, the gang grade (and above) that opens the gang account. false = boss only.
Config.GangMinGradeByGang{}Grade per gang, for example { ballas = 3 }.
Config.GangPermissionExporthz_illegal, CanAccessGangBankOptional export that decides gang access, used only while its resource runs. false = none.

Shared accounts

KeyDefaultDescription
Config.SharedAccountstruePlayers open shared accounts at a bank counter.
Config.SharedMaxOwned2Shared accounts one character may own.
Config.SharedMaxMembers5Members per shared account, owner not counted.
Config.SharedNameMax32Longest account name.

Scheduled transfers

KeyDefaultDescription
Config.MaxScheduledPerAccount10Active or paused scheduled transfers per account. 0 = no limit.
Config.ScheduleMaxRunsShared52Most runs of a society or gang scheduled transfer. Those always need a number of runs.

Giving cash

KeyDefaultDescription
Config.GiveCashtruePlayers hand cash with /givecash [id] <amount>; without an ID it goes to the nearest player. false: the command isn't created.
Config.GiveCashCommand'givecash'Command name.
Config.GiveCashDistance3.0Most metres between the two players.
Config.GiveCashMaxAmount0Largest gift. 0 = Config.MaxAmount.

Bank robberies

KeyDefaultDescription
Config.BankClosuretrueA bank closes while it is being robbed.
Config.BankClosureMinutes30It reopens after this delay at the latest. 0 = only when the robbery ends.
Config.RobberyBanksqb-bankrobbery orderBank id of the robbery script → bank number in Config.Banks.
See Closed during a robbery.

Banks

C.Banks = {
    { -- Legion Square
        coords = vec3(150.27, -1040.20, 29.37), brand = 'fleeca',
        ped = { model = 'a_m_m_business_01', coords = vec4(149.38, -1042.05, 29.37, 334.49), name = 'Martin Kessler' },
    },
    -- ...
}

FieldDescription
coordsWhere the player stands in front of the banker. The server measures players from this point.
brandLook of the app: 'fleeca', 'maze', 'pacific', 'blaine' or 'union'.
pedThe banker: model, coords (vec4 with heading) and name, shown in the dialogue.
blipOptional: changes any field of Config.Blip for this bank, or false for no blip.
distanceOptional: prompt distance of this bank.
KeyDefaultDescription
Config.InteractDistance3.0Distance at which a counter's prompt becomes active.
Config.InteractKey'E'Key shown in the prompt (label only).
Config.Blipsprite 108, colour 2, scale 0.9, label BankBlip of each bank. enabled = false hides them.
Config.BlipColorByBrandMaze 1, Fleeca 2, Pacific 46, Blaine 76, Union 29Blip colour of each bank brand.
Config.BankPedModel'a_m_m_business_01'Banker model when a bank sets none.
Config.BankPedDistance60.0Metres at which bankers appear.
Config.SessionIdleTimeout900Seconds without any action before the app closes.
More in Banks & bankers.

Bankers & dialogue

KeyDefaultDescription
Config.StaffVoice.enabledtrueBankers speak.
Config.StaffVoice.language'en''en', 'fr', or 'auto' (the language of Config.Locale).
Config.StaffVoice.greetDistance5.0Metres at which the banker greets the player.
Config.StaffVoice.greetCooldown300Seconds before the same banker greets the same player again.
Config.StaffVoice.lookDistance6.0Metres at which the banker follows the player with their eyes.
Config.Dialogue.enabledtrueTalking to a banker opens the dialogue box. false: the bank app opens at once.
Config.Dialogue.cameratrueThe camera frames the banker while the dialogue is open.

ATMs

KeyDefaultDescription
Config.AtmModelsprop_atm_01, prop_atm_02, prop_atm_03, prop_fleeca_atmATM models. Every prop of these models on the map is an ATM.
Config.AtmDistance1.5Metres from an ATM to get its prompt.
Config.AtmUse.walktrueThe player walks up to the ATM. false: they stay in place.
Config.AtmUse.cardtrueGame ATMs: the player inserts their card before the screen opens.
Config.AtmUse.view'screen'Game ATMs: 'screen' faces the screen and keypad, 'shoulder' looks over the player's shoulder.
Config.AtmUse.fingertrueThe player's hand on the keypad, the finger on the key under the cursor.
Config.AtmUse.cardModelfalseOne card prop for everyone. false = the card of the player's own bank.
Config.AtmUse.animTime2.0ATM models you add: seconds of card animation before the screen opens. 0 = none.
Config.AtmPositionsemptyOptional list of allowed ATM positions (vec3). Empty = every ATM of the models above.
Config.AtmPositionTolerance1.5Metres between an ATM and its listed position.
Config.AtmBrand'fleeca'Bank of the ATMs: look of the full-screen ATM (models you add) and bank of a first free card handed out there.
Config.AtmBrandByModelprop_fleeca_atm = 'fleeca'The same, per model.

Target, sounds & HUD

KeyDefaultDescription
Config.Target.banktrueTarget eye on bankers and their counter (ox_target or qb-target, through hz_lib).
Config.Target.atmtrueTarget eye on ATMs.
Config.Target.distance2.0Reach of the eye, in metres.
Config.Target.pinstrueWith HZ-TextUi running: its pins (shown when near, no key held) instead of the eye.
Config.Soundsgame soundsSounds of the app: open, close, PIN right and wrong, success, error, keypad, hover, click, page change. enabled = false mutes all of them; set one entry to false to mute it.
Config.HideHudtrueHides the HUD while the app is open (HZ-Hud, or the game's minimap).
Without a target resource, hz_lib shows its own [E] prompt.

Costs & limits

KeyDefaultDescription
Config.IbanChangeCost5000Price of a custom IBAN.
Config.PinChangeCost1000Price of a PIN change. The first PIN is free.
Config.CreditCardPrice250Price of a bank card.
Config.TransferFeePct0.0Fee on transfers, as a fraction (0.01 = 1 %), kept by the bank.
Config.MaxAmount100000000Largest amount of a single operation.
Costs are taken from the personal bank.

Savings

C.Savings = {
    InterestPct = 0.5,
    PeriodHours = 24,
    MaxBalance  = 1000000,
    MaxCatchUp  = 7,
}

KeyDescription
InterestPctInterest per period, in % of the balance kept for the whole period.
PeriodHoursReal hours between two interest payments.
MaxBalanceMost a character may keep in savings. 0 = no limit.
MaxCatchUpPeriods paid at most after time away. 0 = no limit.
How it works: Savings & loans.

Loans

C.Loans = {
    Tiers = {
        { score = 300, max = 5000,   rate = 15 },
        { score = 580, max = 25000,  rate = 10 },
        { score = 670, max = 75000,  rate = 7 },
        { score = 740, max = 200000, rate = 5 },
    },
    MinAmount    = 1000,
    Installments = { 4, 8, 12 },
    PeriodHours  = 24,
    LateFeePct   = 5,
    DefaultAfter = 3,
    UseSavings   = true,
    Score = { start = 600, min = 300, max = 850, onTime = 5, repaid = 25, missed = 30, default = 100 },
}

KeyDescription
TiersFrom this credit score: largest loan and its interest, in % of the amount for the whole loan.
MinAmountSmallest loan.
InstallmentsRepayment plans offered, in number of payments.
PeriodHoursReal hours between two payments.
LateFeePctAdded to the debt for each missed payment, in % of one payment.
DefaultAfterMissed payments in a row before the loan is in default.
UseSavingsA payment the bank account can't cover is taken from savings.
ScoreStarting score, bounds, and points won or lost: on-time payment, loan repaid, missed payment, default.
How it works: Savings & loans.

Bills

All in config/billing.lua, under C.Billing.

KeyDefaultDescription
Command'invoice'Chat command that writes a bill. '' = no command.
JobsnilJobs that may bill, for example { 'police', 'mechanic' }. nil = every job that has a society account.
MinGrade0Lowest job grade allowed to bill.
MinGradeByJob{}Grade per job, for example { mechanic = 1 }.
GangstrueGang members may bill for their gang.
PlayerInvoicesfalsePlayers may bill other players, to their own account.
NoDeclinepolice, ambulanceJobs whose bills can't be declined (fines).
MaxAmount1000000Largest bill.
MaxPending20Unpaid bills a player may have at once.
Distance5.0Most metres between the writer and the player billed.
DueDays7Real days before a bill is overdue.
LateFeePct10Added once when overdue, in % of the amount. 0 = none.
AutoCollecttrueOverdue bills are taken from the bank as soon as it covers them.
IssuerCommission0% of a society bill paid to the employee who wrote it.
ReasonMax96Characters kept from the reason.
PhoneBrand'maze'Bank look of the phone Bills app.
Phonesqs-smartphone, lb-phone, hz_phonePhones that get the Bills app and bill notifications, when they run.
How it works: Bills.

Compatibility

In config/compat.lua:

KeyDefaultDescription
Config.Compat['qb-banking']trueAnswer the exports of qb-banking. false = off.
Config.Compat['Renewed-Banking']trueSame for Renewed-Banking.
Config.Compat['esx_banking']trueSame for esx_banking.
Config.Compat['okokBanking']trueSame for okokBanking.
Config.Compat['esx_billing']trueBills sent by ESX job menus become HZ-Banking bills.
Config.Compat['qb-management']'auto'Old money exports of qb-management, only while no qb-management runs.
Config.Compat.esxClientLogfalseLet players write lines in their own history through the esx_banking client event.
Config.MigrationPriorityokok, renewed, qb, esxImport sources, from most to least trusted.
Config.MigrationHistorytrueAlso import the history lines.
Each relay stays off while the real resource of that name runs. More in Replacing your banking script.

In /hzpanel

The Banking module of /hzpanel edits most settings live on the server, in two tabs:

  • General — IBAN prefix; Savings, Bills and Loans pages; card and PIN rules, cash mode, society and gang grades, Qbox bank access, ESX society money; shared accounts; /givecash and bank closure.
  • Economy — IBAN, PIN and card prices, transfer fee (in %), largest amount, scheduled transfer limits; savings; loans; bills (largest invoice, days before overdue, late fee, collecting overdue bills, employee commission, lowest grade that bills, gangs and players billing, billing distance).
48 settings in all, applied at once with no restart. The files give the starting values. A value saved in the panel wins over the file. Banks, ATMs, voices, sounds, loan tiers, the credit score, the bill command and the jobs that bill, and compatibility are set in the files only.

Convars

ConvarDescription
hz_banking_webhookDiscord webhook URL for the money log.
hz_banking_pin_secretPrivate secret used to store PINs. Set it once, before players set their PINs.
See Installation.