Skip to main content

Configuration

wasabi_banking is configured through shared, client, and server config files.

tip

After editing bank locations, blips, or ATM models, restart the resource and test in-game. Interaction zones and markers are easiest to validate on a live client.

config/shared/config.lua​

Shared settings used by both client and server.

Config = {}

-- Debug mode: verbose lib.print.debug output + /openbank dev command
Config.Debug = false

-- Currency
Config.Currency = '$'
Config.CurrencyOnRight = false

-- IBAN
Config.AccountIbanPrefix = 'WSB-'

-- Cards
Config.MaxCards = 3
Config.MaxPinAttempts = 3
Config.CardPrice = 1000
Config.PinChangePrice = 100
Config.IBANChangePrice = 250
Config.ResetCardDailyLimit = 24
Config.CardItem = 'bankcard'
Config.CardExpireMonths = 2
-- When true, using another person's bankcard *item* near an ATM opens the PIN
-- screen for that card. ATM target ("Use ATM") always only lists your own cards.
Config.AllowStolenCards = true
Config.EnableCardAnimations = true
Config.CardsAnimationType = 'vertical'

Config.CardsTypeAndLimit = {
['default'] = { limit = 5000, label = 'Default Card' },
['gold'] = { limit = 10000, label = 'Gold Card' },
['express'] = { limit = 50000, label = 'Express Card' },
}

-- Savings / shared
Config.MaxMoneyOnSavingsAccount = 100000
Config.MaxSharedAccounts = 3

-- Default blip appearance. Each Config.Banks entry can override these.
Config.BlipSprite = 431
Config.BlipColor = 2
Config.BlipScale = 0.8

Config.ATMModels = { `prop_fleeca_atm`, `prop_atm_01`, `prop_atm_02`, `prop_atm_03` }
Config.PedModels = { `ig_bankman`, `u_m_m_bankman` }

-- Quick-amount presets on the ATM withdraw/deposit screen.
Config.ATMQuickAmounts = { 20, 50, 100, 200, 500, 1000 }

Shared options​

OptionTypeDescription
Config.DebugbooleanEnables verbose debug logging and the /openbank client command.
Config.CurrencystringCurrency symbol shown in the UI.
Config.CurrencyOnRightbooleanPlaces the currency symbol after the amount when true.
Config.AccountIbanPrefixstringPrefix applied to new personal account IBANs.
Config.MaxCardsnumberMaximum cards per account.
Config.MaxPinAttemptsnumberFailed PIN attempts before a card is blocked.
Config.CardPricenumberCost to create a card.
Config.PinChangePricenumberCost to change a card PIN.
Config.IBANChangePricenumberCost to change an account IBAN.
Config.ResetCardDailyLimitnumberHours between daily card spend resets.
Config.CardItemstringInventory item name for physical bank cards.
Config.CardExpireMonthsnumberCard lifetime in months.
Config.AllowStolenCardsbooleanAllow using another player's bankcard item at an ATM.
Config.EnableCardAnimationsbooleanEnables card-insert and card-flip animations.
Config.CardsAnimationTypestring'vertical' or 'horizontal' insert animation.
Config.CardsTypeAndLimittableCard tiers with ATM daily limit and display label.
Config.MaxMoneyOnSavingsAccountnumberMaximum savings balance.
Config.MaxSharedAccountsnumberMaximum shared accounts a player can own.
Config.ATMModelstableProp hashes treated as ATMs.
Config.PedModelstableBanker ped models for interaction.
Config.ATMQuickAmountstablePreset ATM withdraw/deposit amounts.

Bank locations​

Config.Banks is keyed by bank name. Each location supports:

FieldDescription
blip.enabledCreate a map blip when true/omitted; skip when false.
blip.idBlip sprite. Overrides Config.BlipSprite.
blip.colorBlip color. Overrides Config.BlipColor.
blip.scaleBlip scale. Overrides Config.BlipScale.
blip.labelOptional blip name. Defaults to the bank name key.
coordsBank location as vector4.
interactionCoordsOne or more teller/interaction points as vector4.

Example:

Config.Banks = {
['Pacific Bank'] = {
{
blip = {
enabled = true,
id = 431,
color = 2,
scale = 0.8,
},
coords = vector4(247.32, 222.77, 106.29, 340.95),
interactionCoords = {
vector4(247.97, 224.72, 106.29, 162.74),
},
},
},
}

config/client/config.lua​

Client-facing interact, progress, and notification settings.

-- Interaction backend.
-- 'auto' | 'ox_target' | 'qb-target' | 'sleepless_interact' | 'drawtext'
Config.Interact = 'auto'

Config.InteractDistance = 2.0

Config.DrawText = {
maxDistance = 8.0,
sprite = {
dict = 'shared',
texture = 'emptydot_32',
color = { 41, 177, 129, 255 },
},
}

-- Progress bar style for the progress bridge: 'bar' | 'circle'
Config.ProgressStyle = 'bar'

-- 'auto' | 'wasabi_notify' | 'wasabi_uikit' | 'lation_ui' | 'ox_lib'
Config.NotificationSystem = 'auto'

Client options​

OptionTypeDescription
Config.InteractstringInteract backend. 'auto' prefers ox_target β†’ qb-target β†’ sleepless_interact, then drawtext.
Config.InteractDistancenumberDefault interact distance / zone radius in meters.
Config.DrawTexttableDrawtext fallback tuning (max distance and sprite).
Config.ProgressStylestring'bar' or 'circle' progress UI.
Config.NotificationSystemstringForce a notify backend, or 'auto' to detect one.

config/server/config.lua​

Server-side logging, society, inventory, loans, admin, and migration settings.

Config.Logger = {
enabled = true,
type = 'discord', -- 'discord' | 'ox'
webhooks = {
['transactions'] = '',
['cards'] = '',
['savings'] = '',
['loans'] = '',
['shared'] = '',
['admin'] = '',
['default'] = '',
},
}

Config.AutomaticAddDatabaseTables = true
Config.LegacyImport = false
Config.ImportFromFrameworkBanking = false
Config.MaxSavedTransactions = 50

-- 'auto' | 'wasabi' | 'qb-management' | 'qbx_management' |
-- 'qb-banking' | 'esx_addonaccount' | 'bank_accounts_new' | 'manual'
Config.SocietyBackend = 'auto'

Config.SocietyTable = 'addon_account_data' -- only when SocietyBackend = 'manual'
Config.JobNameColumn = 'account_name'
Config.AmountColumn = 'money'

Config.CompatExports = {
['qb-management'] = true,
['Renewed-Banking'] = true,
['okokBanking'] = true,
}

-- 'auto' | 'ox_inventory' | 'qb-inventory' | 'ps-inventory'
-- | 'codem-inventory' | 'jaksam_inventory' | 'tgiann-inventory'
Config.InventorySystem = 'auto'

Config.BankWorkingHours = {
disableBankAtNight = true,
openHour = 6,
closeHour = 22,
}

Config.InterestRate = 2 -- percent
Config.InterestRatePeriod = 24 -- hours

Logger​

FieldDescription
enabledTurns audit logging on or off.
type'discord' posts webhook embeds; 'ox' forwards to lib.logger.
webhooksPer-bucket Discord webhook URLs: transactions, cards, savings, loans, shared, admin, and default.

Society and compatibility​

OptionDescription
Config.SocietyBackendWhere society/job money lives. 'auto' uses esx_addonaccount on ESX and owned wasabi balances on QB/QBX.
Config.SocietyTable / JobNameColumn / AmountColumnManual table mapping when SocietyBackend = 'manual'.
Config.CompatExportsAnswers export calls for replaced resources. See Migration.
Config.InventorySystemInventory backend for card/receipt items. 'auto' detects a supported inventory.
Config.LegacyImportImport Wasabi Banking v1 tables.
Config.ImportFromFrameworkBankingImport qb-banking / Renewed-Banking / okokBanking tables.

Loans​

Config.Loans = {
maxCreditScore = 1000,
paymentInterval = 1, -- hours
paymentOnlyWhenOffline = false,
creditScoreIncrease = 1,
creditScoreDecrease = 5,
creditScoreDecreaseAfterCancelLoan = 100,
maxFailedPayments = 5,
creditScoreIncreaseAfterFinishingLoan = 50,
creditScoreIncreaseAfterFinishingLoanEarly = 75,
creditScores = {
[0] = { value = 0, label = 'Very Poor' },
[1] = { value = 150, label = 'Poor' },
[3] = { value = 250, label = 'Normal' },
[4] = { value = 500, label = 'Good' },
[5] = { value = 750, label = 'Excellent' },
[6] = { value = 1000, label = 'Perfect' },
},
loans = {
[1] = { totalamount = 5000, days = 30, interest = 5, minimumcreditscore = 0, label = 'Standard Loan' },
[2] = { totalamount = 10000, days = 45, interest = 10, minimumcreditscore = 400, label = 'Premium Loan' },
[3] = { totalamount = 20000, days = 60, interest = 15, minimumcreditscore = 600, label = 'Diamond Loan' },
[4] = { totalamount = 50000, days = 80, interest = 20, minimumcreditscore = 750, label = 'Platinum Loan' },
},
}
FieldDescription
maxCreditScoreUpper bound for credit score.
paymentIntervalHours between scheduled loan payments.
paymentOnlyWhenOfflineWhen true, only offline borrowers are auto-debited.
maxFailedPaymentsConsecutive failed payments before a loan is marked defaulted. 0 disables defaulting.
creditScoresScore brackets with threshold value and display label.
loansLoan products with amount, term, interest, minimum credit score, and label.

Admin panel​

Config.BankManager = {
commandBankMenu = 'bankmenu',
jobnames = {
['police'] = { grades = { 3, 4 } },
['banker'] = { grades = { 3, 4 } },
},
allowFreeze = true,
allowViewTransactions = true,
freezeableTypes = {
bank = true,
savings = true,
shared = true,
society = true,
},
}
FieldDescription
commandBankMenuChat command that opens the admin banking panel.
jobnamesJob name β†’ allowed grades for admin access.
allowFreezeEnables freeze/unfreeze actions.
allowViewTransactionsEnables filtered transaction lookup.
freezeableTypesWhich account types may be frozen.

Society access grades​

Config.AllowedSocietiesAndRanks = {
['police'] = { grades = { 3, 4 } },
['ambulance'] = { grades = { 3, 4 } },
['mechanic'] = { grades = { 3, 4 } },
['taxi'] = { grades = { 3, 4 } },
['banker'] = { grades = { 3, 4 } },
}

Only listed jobs/grades can open society banking for that job account.

Locales​

Locale files live in:

locales/*.json

The resource currently ships en.json. UI and notification strings are loaded from these files.