Configuration · origen_banking
All configuration lives in config/main.lua. Server-only values are in config/server/webhooks.lua.
General
| Variable | Default | Description |
|---|---|---|
Config.Debug | false | Prints debug output to the server console |
Config.Language | 'en' | Resource language — 'es' or 'en' |
Config.MaxAccounts | 3 | Maximum number of accounts a player can own |
Config.Framework is auto-detected in init.lua. Do not override it in the config file.
IBAN
Account IDs are generated as IBANPrefix followed by random digits, padded to IBANLength total characters.
| Variable | Default | Description |
|---|---|---|
Config.IBANPrefix | '' | Prefix prepended to every generated account ID |
Config.IBANLength | 16 | Total length of the account ID, prefix included |
Banks
Each entry creates a physical bank interaction point with a blip.
| Field | Type | Description |
|---|---|---|
coords | vector3 | Required. Position of the bank interaction point |
isCentral | boolean | Optional, default false. When true, players can create new shared accounts from this branch |
label | string | Optional. Text shown on the blip |
Config.Banks = {
{ coords = vector3(150.266, -1040.203, 29.374), isCentral = false, label = 'Banco - Legion Square' },
{ coords = vector3(-1212.980, -330.841, 37.787), isCentral = false, label = 'Banco - Pillbox Hill' },
{ coords = vector3(-2962.582, 482.627, 15.703), isCentral = false, label = 'Banco - Del Perro' },
{ coords = vector3(314.187, -278.621, 54.170), isCentral = false, label = 'Banco - Alta Street' },
{ coords = vector3(-112.202, 6469.295, 31.626), isCentral = true, label = 'Banco Central - Paleto Bay' },
{ coords = vector3(246.727, 223.705, 106.286), isCentral = true, label = 'Banco Central - Vinewood Hills' },
{ coords = vector3(1830.41, 3850.33, 35.89), isCentral = false, label = 'Banco - Sandy' },
{ coords = vector3(-351.04, -49.71, 49.04), isCentral = false, label = 'Banco - Rockford Hills' },
}Marker
Marker drawn at every bank interaction point.
Config.Marker = {
type = 20,
color = {0, 0, 0, 200},
size = vector3(0.3, 0.3, -0.3),
coords = vector3(0.0, 0.0, 1.0),
bobUpAndDown = false,
faceCamera = false,
rotate = true,
}ATMs
ATM props are detected automatically by model — they have no blips.
| Variable | Default | Description |
|---|---|---|
Config.ATM.Models | prop_atm_01, prop_atm_02, prop_atm_03, prop_fleeca_atm | Prop models treated as ATMs |
Config.ATM.DetectRadius | 1.5 | Distance in meters to show the text UI and allow interaction |
Config.ATM.ShowSharedAccounts | true | When true, shared accounts (job, gang, society) the player has access to are also usable from an ATM |
ATM limits
Limits apply per account, per cycle, and only on the ATM channel. Bank branches are not limited.
| Variable | Default | Description |
|---|---|---|
Config.ATM.Limits.Enabled | true | Enables the per-cycle limit system |
Config.ATM.Limits.ResetMinutes | 20 | Real minutes before a cycle resets and limits go back to zero |
Config.ATM.Limits.WithdrawPerCycle | 50000 | Maximum withdrawable per account per cycle |
Config.ATM.Limits.DepositPerCycle | 50000 | Maximum depositable per account per cycle |
Limits are cached in memory. Restarting the resource or the server resets every counter.
Loans
All validation — amounts, terms, eligibility and bank funds — is server-side. The UI only simulates and displays; it never decides.
Approval
| Variable | Default | Description |
|---|---|---|
Config.Loans.Enabled | true | Enables the loan system |
Config.Loans.AutoApproveUnder | 25000 | Loans at or below this amount are approved instantly; above it they go to the manual queue |
Config.Loans.ApprovalJob | 'banker' | Job allowed to approve loans, when grade is at least ApprovalGrade |
Config.Loans.ApprovalGrade | 2 | Minimum job grade required to approve |
Config.Loans.ApprovalAce | 'origen_banking.approve' | ACE permission that also grants approval rights |
Config.Loans.ApprovalCommand | 'loansadmin' | Chat command that opens the NUI on the approval queue. Set to '' to disable |
Global limits
| Variable | Default | Description |
|---|---|---|
Config.Loans.MaxActiveLoans | 2 | Simultaneous active loans per player, pending ones included |
Config.Loans.MinAmount | 1000 | Global minimum loan amount |
Config.Loans.BlockIfOverdue | true | Blocks new loans while the player has an overdue one |
Penalties
| Variable | Default | Description |
|---|---|---|
Config.Loans.Penalty.Enabled | true | Enables late payment penalties |
Config.Loans.Penalty.RatePerMiss | 5.0 | Extra percentage added to the installment per missed payment |
Config.Loans.Penalty.MaxMisses | 3 | Misses before the loan is marked defaulted and the collateral event fires |
Early payoff
| Variable | Default | Description |
|---|---|---|
Config.Loans.EarlyPayoff.Enabled | true | Allows paying the loan off before term |
Config.Loans.EarlyPayoff.InterestRebate | 50 | Percentage of the remaining interest forgiven on early payoff |
Loan types
| Field | Description |
|---|---|
label | Display name shown in the UI |
interestRate | Total interest percentage |
minAmount / maxAmount | Allowed principal range |
allowedTerms | Array of allowed installment counts |
frequency | Days between installments |
requiresCollateral | Requires an asset reference (plate, property ID) |
forceManualApproval | Always sends the loan to the manual queue, ignoring AutoApproveUnder |
Config.Loans.Types = {
personal = {
label = 'Personal',
interestRate = 12.0,
minAmount = 1000,
maxAmount = 50000,
allowedTerms = { 6, 12, 24 },
frequency = 7,
requiresCollateral = false,
},
mortgage = {
label = 'Mortgage / Vehicle',
interestRate = 6.0,
minAmount = 25000,
maxAmount = 500000,
allowedTerms = { 24, 48, 96 },
frequency = 7,
requiresCollateral = true,
forceManualApproval = true,
},
}Bridge providers
Defined in init.lua. Use "auto" to detect the active resource, or force a specific provider by name.
BridgeConfig.HelpText = "auto"
BridgeConfig.Notify = "auto"
BridgeConfig.Inventory = "auto"Webhooks
File: config/server/webhooks.lua
Config.Webhook = {
banking = "YOUR_DISCORD_WEBHOOK_URL"
}