Configuration
All configuration is done in config.lua. This page covers the key settings — property types and economy have their own dedicated pages.
Framework & System
Framework
Supports QBCore and ESX. Set Framework, FrameworkResource, and NewFrameworkVersion (ESX < 1.8).
Locale
Language file from locales/ folder. Default: 'en'.
Auto-Save
Interval in ms (default: 300000 = 5 mins). Persists all cached data to the database.
lua
Config = {
Framework = 'qb-core', -- 'qb-core' or 'esx'
FrameworkResource = 'qb-core', -- Resource name
NewFrameworkVersion = true, -- ESX only: false for < 1.8
Locale = 'en', -- Language file from locales/ folder
DebugMode = false, -- Verbose console logging
AutoSaveInterval = 300000, -- Auto-save interval in ms (5 mins)
}Commands & Keybinds
All commands are configurable. Players can rebind in GTA Settings > Key Bindings > FiveM.
lua
Commands = {
business = { command = 'business', bind = false }, -- CEO tablet
bills = { command = 'bills', bind = false }, -- Player bills
market = { command = 'market', bind = false }, -- International Market
propertyeditor = { command = 'propertyeditor', bind = false }, -- Admin editor
exitinterior = { command = 'exitinterior', bind = false }, -- Exit interior
},Usable Item
Register an inventory item that opens the business tablet when used:
lua
UsableItem = false, -- Set to item name string, e.g. 'ipad' or 'tablet'Target & Inventory
Target System
Auto-detected — no configuration needed. Supports ox_target and qb-target.
Inventory
Set UseInventory to your system: qb-inventory, ox_inventory, core_inventory, qs-inventory, codem-inventory, tgiann-inventory, or custom.
lua
UseInventory = 'core_inventory', -- See installation page for options
QBInventoryResourceName = 'qb-inventory', -- Only for QB inventory forks
InventoryImagesPath = 'nui://core_inventory/html/img/', -- Item image path for UICore Gangs Integration
Enable gang raids on business properties:
Raids
Gang members get 5-minute access to property stash. Shareholders receive an emergency alert.
Racket
Gangs collect 20% of property income as protection money. Configurable percent and cooldowns.
lua
UsingCoreGangs = {
enabled = false,
racket_enabled = true, -- Allow gangs to collect racket payments
racket_percent = 0.2, -- 20% of property income goes to racket
action_delay = 10800, -- Cooldown between gang actions (3 hours)
raid_time = 300, -- Time gang must stay near property (5 mins)
},Economy Settings
lua
DefaultTaxRate = 15, -- 15% tax on net profit
DailyWithdrawalLimit = 10000000, -- Max withdrawal per day
OperationsInterval = 86400, -- Time between operations ticks (seconds)Tax Distribution
Taxes collected from business operations are split between job/department accounts:
lua
TaxesDistribution = {
enabled = true,
recipients = {
{ percent = 60, qb_account = "police", esx_account = "society_police" },
{ percent = 30, qb_account = "ambulance", esx_account = "society_ambulance" },
{ percent = 10, qb_account = "mechanic", esx_account = "society_mechanic" },
}
}TIP
Percentages should total ≤ 100. Any unclaimed remainder is removed from the economy.
Default Business Settings
These are applied when a player creates a new business:
lua
DefaultBusinessSettings = {
uiBackground = 'glass',
dividendPercent = 0, -- % of post-tax profits to distribute
notifyProd = true, -- Production notifications
notifyIncome = false, -- Income notifications
notifyEmergency = true, -- Raid/emergency notifications
racketMode = false -- Gang racket collection
},Maintenance
Properties incur maintenance costs deducted from the business balance:
lua
Maintenance = {
enabled = true,
interval = 3600, -- Deduct every hour (seconds)
},Each property type defines its own base_maintenance cost. See Properties.
Production Alerts
Periodic reports sent to shareholders summarizing production activity:
lua
ProductionAlerts = {
enabled = true,
report_interval = 1800, -- Every 30 minutes
require_activity = true, -- Only send if something happened
tracking = {
inputs_consumed = true,
outputs_produced = true,
money_generated = true,
maintenance_costs = true
}
},Financial Alerts
Market transaction reports sent to shareholders:
lua
FinancialAlerts = {
enabled = true,
report_interval = 1800,
require_activity = true
},Property Boost System
Random production boost events that temporarily increase property output:
lua
PropertyBoost = {
enabled = true,
check_interval = 300, -- Check every 5 mins
trigger_chance = 0.15, -- 15% chance per check
max_concurrent_boosts = 3,
duration_min = 900, -- 15 min minimum
duration_max = 3600, -- 1 hour maximum
boost_multiplier_min = 1.25, -- +25% productivity
boost_multiplier_max = 2.0, -- +100% productivity (double)
min_base_productivity = 20, -- Minimum productivity to trigger
notify_shareholders = true
},Business Registry
The NPC location where players register new businesses:
lua
Registry = {
enabled = true,
location = {
coords = vector3(-268.38, -957.78, 31.22),
blip = { enabled = true, sprite = 498, color = 2, scale = 0.8, label = "Business Registry" }
},
npc = {
enabled = true,
model = "s_m_m_fiboffice_01",
coords = vector4(-268.38, -957.78, 31.22, 202.28),
scenario = "WORLD_HUMAN_CLIPBOARD"
},
creation_cost = 500000, -- Cost to register a business
min_name_length = 3,
max_name_length = 50
},International Market
A global NPC market with dynamic pricing — acts as a fallback when player markets are unavailable:
lua
InternationalMarket = {
enabled = true,
location = vector3(1230.85, -3003.41, 9.32),
npc = { enabled = true, model = "s_m_m_highsec_01", ... },
blip = { enabled = true, sprite = 500, color = 3, scale = 0.8, label = "International Market" },
fluctuation = {
update_interval = 3600, -- Price update every hour
min_price_multiplier = 0.7, -- Prices can drop to 70%
max_price_multiplier = 1.5, -- Prices can rise to 150%
change_rate = 0.1 -- Max change per update
},
supply = {
update_interval = 1800, -- Stock update every 30 min
min_stock = 50,
max_stock = 500,
replenish_rate = 0.2
},
commodities = {
-- Raw materials (expensive to buy, cheap to sell)
iron = { buy_price = 120, sell_price = 15 },
aluminum = { buy_price = 150, sell_price = 20 },
-- ... see config.lua for full list
}
},WARNING
International Market prices are intentionally punishing — high buy prices, low sell prices. This forces player-to-player trading to be the profitable path.
Garage Settings
lua
Garages = {
allowExternalVehicles = false, -- true = any vehicle, false = only market vehicles
recovery_price = 5000,
default_car_color = 0, -- Default color index (0 = black)
},Property Blips
lua
PropertyBlips = {
enabled = true,
scale = 0.7,
shortRange = true
},