Skip to content

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 UI

Core 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
},