toolsEconomy Calculator

Economy Calculator

Calculate optimal economy settings, job payouts, item prices, and server financial balance for a healthy QBCore economy.

Overview

The Economy Calculator helps server administrators design balanced economic systems by analyzing job payouts, item prices, business profits, and player spending patterns. Create sustainable economies that encourage gameplay while maintaining server balance.

Economy Calculator

Design balanced economic systems for your QBCore server

Job Wages Configuration

Payout every 30 minutes
JobHourly PayPer PayoutDifficultyDemandActions
Unemployed$0
1/10
unlimited
Police Officer$75
7/10
high
EMS$70
6/10
high
Mechanic$60
5/10
medium
Taxi Driver$40
3/10
medium
Garbage Collector$45
4/10
low
Trucker$55
5/10
medium
Lawyer$100
8/10
low
Average Hourly Pay:

$111

Highest Paying Job:

Lawyer

Total Jobs:

8

Economy Design Principles

Balanced Money Flow

  • Money In: Job payouts, business profits, mission rewards
  • Money Out: Item purchases, vehicle costs, housing, services
  • Net Balance: Slight positive flow to allow for growth and inflation

Job Hierarchy Design

-- Example job payment structure
Config.Jobs = {
    ['unemployed'] = { payment = 0 },
    ['garbage'] = { payment = 15 }, -- Entry level
    ['taxi'] = { payment = 20 }, -- Service industry
    ['mechanic'] = { payment = 25 }, -- Skilled trade
    ['police'] = { payment = 30 }, -- High responsibility
    ['ambulance'] = { payment = 30 }, -- High responsibility
    ['lawyer'] = { payment = 40 }, -- Professional
    ['judge'] = { payment = 50 } -- Leadership
}

Item Pricing Strategy

-- Price tiers for different item categories
Config.ItemPrices = {
    -- Basic needs (high volume, low margin)
    food = { multiplier = 1.0, markup = 10 },
    
    -- Tools and equipment (medium volume, medium margin)
    tools = { multiplier = 1.5, markup = 25 },
    
    -- Luxury items (low volume, high margin)
    luxury = { multiplier = 3.0, markup = 50 },
    
    -- Illegal items (risk premium)
    contraband = { multiplier = 5.0, markup = 100 }
}

Money Sink Strategies

Effective Money Sinks

  1. Vehicle Maintenance: Regular repair and fuel costs
  2. Housing Costs: Rent, utilities, property taxes
  3. License Fees: Renewal costs for various permits
  4. Insurance: Vehicle and property insurance premiums
  5. Luxury Services: High-end shops and entertainment

Implementation Examples

-- Vehicle maintenance system
RegisterNetEvent('garage:maintainVehicle', function(vehicleId)
    local cost = CalculateMaintenanceCost(vehicleId)
    local player = QBCore.Functions.GetPlayer(source)
    
    if player.Functions.RemoveMoney('bank', cost) then
        -- Apply maintenance
        TriggerClientEvent('garage:vehicleMaintained', source, vehicleId)
    end
end)
 
-- Housing utility bills
CreateThread(function()
    while true do
        Wait(3600000) -- Every hour
        for _, player in pairs(QBCore.Functions.GetPlayers()) do
            local bills = CalculateUtilityBills(player.PlayerData.citizenid)
            if bills > 0 then
                player.Functions.RemoveMoney('bank', bills)
                TriggerClientEvent('phone:notification', player.PlayerData.source, {
                    title = 'Utility Bill',
                    text = 'You have been charged $' .. bills
                })
            end
        end
    end
end)

Economic Balance Formulas

Inflation Control

-- Calculate healthy money supply growth
local function CalculateInflationRate()
    local totalMoney = GetTotalServerMoney()
    local playerCount = GetPlayerCount()
    local averageMoney = totalMoney / playerCount
    
    -- Target: 2-3% monthly inflation
    local targetGrowth = 0.025 / 30 -- Daily rate
    local currentGrowth = GetDailyMoneyGrowth()
    
    if currentGrowth > targetGrowth * 1.5 then
        -- Increase money sinks
        AdjustPrices(1.1)
        AddTaxes(0.05)
    elseif currentGrowth < targetGrowth * 0.5 then
        -- Increase money sources
        AdjustJobPayouts(1.1)
        ReduceTaxes(0.02)
    end
end

Dynamic Pricing

-- Adjust prices based on supply and demand
local function UpdateItemPrices()
    for itemName, data in pairs(Config.Items) do
        local demand = GetItemDemand(itemName)
        local supply = GetItemSupply(itemName)
        
        local priceMultiplier = 1.0
        if demand > supply * 1.5 then
            priceMultiplier = 1.2 -- Increase price when demand is high
        elseif supply > demand * 1.5 then
            priceMultiplier = 0.8 -- Decrease price when supply is high
        end
        
        data.price = math.floor(data.basePrice * priceMultiplier)
    end
end

Server Configuration Examples

Conservative Economy

Config.Economy = {
    type = 'conservative',
    startingMoney = { cash = 200, bank = 2000 },
    jobMultiplier = 0.8,
    itemMarkup = 35,
    taxRate = 0.15,
    inflationTarget = 0.015 -- 1.5% monthly
}

Balanced Economy

Config.Economy = {
    type = 'balanced',
    startingMoney = { cash = 500, bank = 5000 },
    jobMultiplier = 1.0,
    itemMarkup = 25,
    taxRate = 0.10,
    inflationTarget = 0.025 -- 2.5% monthly
}

Liberal Economy

Config.Economy = {
    type = 'liberal',
    startingMoney = { cash = 1000, bank = 10000 },
    jobMultiplier = 1.3,
    itemMarkup = 15,
    taxRate = 0.05,
    inflationTarget = 0.035 -- 3.5% monthly
}

Monitoring & Analytics

Economic Health Indicators

-- Track key economic metrics
local function GetEconomicHealth()
    return {
        averagePlayerMoney = GetAveragePlayerMoney(),
        unemploymentRate = GetUnemploymentRate(),
        priceInflation = GetInflationRate(),
        moneyVelocity = GetMoneyVelocity(),
        giniCoefficient = GetWealthInequality()
    }
end
 
-- Alert system for economic issues
local function CheckEconomicAlerts()
    local health = GetEconomicHealth()
    
    if health.unemploymentRate > 0.3 then
        SendAdminAlert('High unemployment rate: ' .. (health.unemploymentRate * 100) .. '%')
    end
    
    if health.priceInflation > 0.1 then
        SendAdminAlert('High inflation rate: ' .. (health.priceInflation * 100) .. '%')
    end
    
    if health.giniCoefficient > 0.7 then
        SendAdminAlert('High wealth inequality detected')
    end
end

Data Export for Analysis

-- Export economic data for external analysis
RegisterCommand('economy:export', function(source, args)
    if not QBCore.Functions.HasPermission(source, 'admin') then return end
    
    local data = {
        timestamp = os.time(),
        players = GetAllPlayerEconomicData(),
        jobs = GetJobStatistics(),
        items = GetItemStatistics(),
        businesses = GetBusinessStatistics()
    }
    
    TriggerClientEvent('economy:downloadData', source, json.encode(data))
end, true)

Best Practices

Regular Monitoring

  • Track daily money flow ratios
  • Monitor player wealth distribution
  • Watch for economic bottlenecks
  • Analyze job participation rates

Gradual Adjustments

  • Make small incremental changes
  • Test changes on development server first
  • Gather player feedback on economic changes
  • Allow time for markets to adjust

Emergency Interventions

  • Have plans for economic crises
  • Know how to inject or remove money quickly
  • Prepare communication for major changes
  • Monitor player reactions and adapt accordingly

Pro Tip: Start with conservative settings and gradually increase rewards based on player feedback and economic data. It’s easier to give players more money than to take it away once the economy is established.

Need help balancing your server economy? Check our economy guide or consult with experienced server administrators in our community forums.