Config Preview

This is the full Config. Here you can see everything that you can edit so the script fits your need perfectly. Information on what each setting does can be found on the page Installation and Configuration.

Tax = {} -- don't touch
Locale = {} -- don't touch

--[[
  _____       ___   ___  ____   _____   ______     ______  _______     _____  _______   _________   ______   
 |_   _|    .'   `.|_  ||_  _| |_   _|.' ____ \  .' ___  ||_   __ \   |_   _||_   __ \ |  _   _  |.' ____ \  
   | |     /  .-.  \ | |_/ /     | |  | (___ \_|/ .'   \_|  | |__) |    | |    | |__) ||_/ | | \_|| (___ \_| 
   | |   _ | |   | | |  __'.     | |   _.____`. | |         |  __ /     | |    |  ___/     | |     _.____`.  
  _| |__/ |\  `-'  /_| |  \ \_  _| |_ | \____) |\ `.___.'\ _| |  \ \_  _| |_  _| |_       _| |_   | \____) | 
 |________| `.___.'|____||____||_____| \______.' `.____ .'|____| |___||_____||_____|     |_____|   \______.' 
  _____       ___   ___  ____   _____             _________     _       ____  ____                           
 |_   _|    .'   `.|_  ||_  _| |_   _|           |  _   _  |   / \     |_  _||_  _|                          
   | |     /  .-.  \ | |_/ /     | |             |_/ | | \_|  / _ \      \ \  / /                            
   | |   _ | |   | | |  __'.     | |                 | |     / ___ \      > `' <                             
  _| |__/ |\  `-'  /_| |  \ \_  _| |_   _______     _| |_  _/ /   \ \_  _/ /'`\ \_                           
 |________| `.___.'|____||____||_____| |_______|   |_____||____| |____||____||____|                          
                                                                                                             
--]]

-- READ THE DOCUMENTATION FOR MORE INFO
-- OPEN A TICKET IF YOU NEED MORE HELP
-- 0.0075 = 0.75%

-- Framework is detected automatically. Compatible are ESX, QB-Core and QBOX

------------------------ General -------------------
Tax.Locale                  = 'en' -- Available Translations: en, de
Tax.Currency                = '€' -- €/$/Β£ or whatever
Tax.CreateTables            = true -- This creates the needed database tables for you on first startup

Tax.TaxReturns              = true -- if true, players can file a tax return every X days to receive back X amount of their paid taxes
Tax.ReturnRate              = 0.05 -- 5% of paid taxes can be claimed
Tax.ReturnTime              = 30 -- Time in days how often a player can file their tax return
Tax.DeleteExpiredReturns    = true -- if true players can only claim money for taxes paid within the last Tax.ReturnTime amount of days
Tax.PedCoords               = vector4(-547.1, -209.6, 37.6, 300.0)
Tax.PedModel                = 's_f_y_airhostess_01'
Tax.Blip                    = 207
Tax.BlipColor               = 25
Tax.OxTarget                = true -- uses OxTargets support for QB-Target. If this results in any issues, let me know

-------------------- Webhook / Logs ----------------
Tax.Webhook                 = true
Tax.WebhookLink             = 'webhook link'


------------------------- Jobs ---------------------
---- Jobs and grades that are allowed to use the commands. You can add more yourself. If the grade is 1, everyone with grade 1 or higher can use it.
---- If any is true, everyone can use the command. If Owner is true, the Owner and the provided jobs can use it.
---- If any is true it will overwrite the setting for owner
Tax.AllowedJobsTitleVehicle = {
    any                     = false,
    owner                   = false,
    police                  = 3,
    mechanic                = 4,
}
Tax.AllowedJobsRegisterVehicle = {
    any                     = false,
    owner                   = false,
    mechanic                = 4,
}
Tax.AllowedJobsUnRegisterVehicle = {
    any                     = false,
    owner                   = false,
    mechanic                = 4,
}
Tax.AllowedJobsCheckVehicle = {
    any                     = false,
    owner                   = true,
    police                  = 3,
    mechanic                = 4,
}
Tax.AllowedJobsCheckPrice   = {
    any                     = true,
    owner                   = true,
}
Tax.AllowedJobsUpdateVehicleOwner = {
    any                     = false,
    owner                   = false,
    police                  = 3,
    mechanic                = 4
}

------------------------- Menu ---------------------
Tax.MenuPosition            = 'bottom-right' -- top-left | top-right | bottom-left | bottom-right | center
Tax.MaxDistance             = nil -- max distance to vehicle for actions. Set to nil to deactivate
Tax.MenuCommand             = 'vehiclemenu' -- both command and keybind can be used to open the menu
Tax.MenuDefaultKey          = 'f5'
Tax.OxLib                   = true -- if true, uses ox_lib menu instead of esx_menu_deafult / qb-menu


----------------------- Fixed Taxes ----------------
Tax.EnableFixedTaxes        = false
Tax.FixedTaxes              = { -- These are fixed additional fees that every player has to pay, you can add as many as you want. A new column in the users/players table will be created for the interval
    phoneBill = { -- will be the name of the column in the database, so chose something that does not already exist
        price = 150, -- what the player has to pay
        interval = 7, -- after how many days does this have to be paid
        jobs = { -- you can change the price for individial jobs for example if you want police officers to pay less

        },
        society = 'society_unemployed', -- The society/company that should receive the money
        societyName = "Phone provider",
    },
    healthInsurance = {
        price = 300, -- what the player has to pay
        interval = 7, -- after how many days does this have to be paid
        jobs = { -- you can change the price for individial jobs for example if you want police officers to pay less
            {job = 'police', price = 200},
            {job = 'off_police', price = 200}, -- remember to also add off-duty jobs if they exist
            {job = 'ambulance', price = 150}
        },
        society = 'society_unemployed', -- The society/company that should receive the money
        societyName = "Health insurance",
    }
}


------------------- Capital (bank account) ---------
Tax.EnablePercentualIncomeTax = false -- percentual tax on every paycheck the player receives. loki_jobtime is needed for this to work
Tax.PercentualIncomeTax     = 0.1 -- 10% of the players paycheck
Tax.EnableFixedIncomeTax    = false -- fixed amount tax on every paycheck the player receives. loki_jobtime is needed for this to work
Tax.FixedIncomeTax          = 500 -- fixed 500$ tax, even for jobs without any payout (like criminals to make it fair, but less realistic)
Tax.EnablePercentualCapitalTax = true   
Tax.PercentualCapitalTax    = 0.005
Tax.EnableFixedCapitalTax   = true
Tax.FixedCapitalTax         = 500
Tax.EnablePercentualCompanyTax = true -- Tax on campany accounts
Tax.PercentualCompanyTax    = 0.005
Tax.EnableFixedCompanyTax   = true
Tax.FixedCompanyTax         = 5000
Tax.ExcludedCompanys        = {'society_police'} -- here you can add societys that should not receive tax
Tax.CapitalInterval         = 7
Tax.CapitalRandomInterval   = 2 -- This will set the interval to a random number reaching from 5 to 9. So the interval minus the random factor to the interval plus the random factor.
-- Set to 0 to deactivate and just use the set interval. This is to prevent players cashing out everything shortly before the tax has to be paid.


------------------------ Vehicles ------------------
Tax.Dealership              = 'qb-vehicleshop' -- Available dealership systems: lc_dealership, okokVehicleShop, myCardealer, qb-vehicleshop, esx_vehicleshop, custom
-- esx_vehicleshop will work with every script that uses the "vehicles" table and qb-vehicleshop works with every script that uses the qb-core/shared/vehicles.lua (including qbx_vehicleshop)

Tax.EnablePercentualVehicleTax = true
Tax.PercentualVehicleTax    = 0.0075

Tax.EnableFixedVehicleTax   = false
Tax.FixedVehicleTax         = 100

Tax.VehicleInterval         = 7

Tax.ImpoundVehicleIfNotPaid = false -- loki_impound is required. Vehicle will be impounded if player cant pay the vehicle tax
Tax.Impound                 = 'Police' -- The Impound where the vehicle goes, if impounded

Tax.DefaultPrice            = 50000 -- This price is used if the vehicle could not be found in your dealership system
Tax.NotifyOnDefualtPrice    = true -- this will print in the console whenever the default price is used

Tax.SyncVehicles            = false -- use this and/or the documented exports, if you want every vehicle to be synced to the registered_vehicles
Tax.AlwaysRegister          = false -- only relevant if Tax.SyncVehicles is true. If this is true, every synced vehicle will always be registered

function CustomDealership(hash, price) -- This function has to return the price of the vehicle
    MySQL.Async.fetchAll('SELECT price from dealership_vehicles WHERE hash = @hash LIMIT 1', {
        ['@hash'] = hash
    }, function(result)
        price = result[1].price
        return price
    end)
    -- This is an example of how you could write this for your custom dealership script. Please edit it to fit your script.
end



------------------- Vehicle Certificates -----------
Tax.RegistrationCertificates = true -- allow to create vehicle certificate documents
Tax.CertificateStyle = 'us' -- available styles of certificates: de (Zulassungsbescheinigung Teil I), us (california certificate of title). If you want to see more, let me know
Tax.CertificateItem = "fahrzeugschein" -- insert the name of the item here, after setting it up in your inventory/framework
Tax.Inventory = "ox_inventory" -- available inventorys: qs-inventory, ox_inventory, qb-inventory

----------------------- Property -------------------
Tax.Housing                 = 'custom' -- Available housing systems: qs-housing, loaf_housing, qb-houses, custom

Tax.EnablePercentualPropertyTax = false
Tax.PercentualPropertyTax   = 0.0075

Tax.EnableFixedPropertyTax  = false
Tax.FixedPropertyTax        = 100

Tax.PropertyInterval        = 7

function CustomHousing(license, tax) -- edit this code to fit your housing script. Remeber to add the column lastPay to your housing table with the format DATE and default CURDATE()
    local houseID = nil
    MySQL.Async.fetchAll('SELECT * FROM housing WHERE owner = @owner AND lastPay < DATE_SUB(NOW(), INTERVAL @interval DAY)', {
        ['@interval'] = Tax.Interval,
        ['@owner'] = license
    }, function(resulthouses)
        for k, v in pairs(resulthouse) do
            houseID = v.houseId
            tax = tax + math.ceil(v.price * Tax.PropertyTax)
            MySQL.Async.execute('UPDATE housing SET lastPay = CURDATE() WHERE houseId = @id', {
                ['@id'] = houseID
            })
        end
    end)
    return tax
    -- This is an example of how you could write this for your custom shop system. Please edit it to fit your script.
end


------------------------- Shops --------------------
Tax.Shop                    = 'custom' -- available systems: okokShop, custom

Tax.EnablePercentualShopTax = false -- percentual tax on the price of the shop
Tax.PercentualShopTax       = 0.0075

Tax.EnableFixedShopTax      = false -- fixed tax on the shop
Tax.FixedShopTax            = 500

Tax.EnableAccountShopTax    = false -- percentual tax on the current money on the shops account
Tax.AccountShopTax          = 0.0075

Tax.ShopInterval            = 7 -- interval in days

function CustomShop(source) -- only if you use a custom shop
    local identifier = '' -- you have to get the identifier
    MySQL.Async.fetchAll('SELECT * FROM shops WHERE owner = @owner AND lastPay < DATE_SUB(NOW(), INTERVAL @interval DAY)', {
        ['@owner'] = identifier,
        ['@interval'] = Tax.ShopInterval
    }, function(result)
        for k, v in pairs(result) do
            tax = tax + (v.price * Tax.PercentualShopTax) + Tax.FixedShopTax + (v.accountMoney * Tax.AccountShopTax)
            MySQL.Async.execute('UPDATE shops SET lastPay = CURRENT_TIMESTAMP() WHERE shopId = ?', {v.shopId})
        end
    end)
    return tax
    -- This is an example of how you could write this for your custom shop system. Please edit it to fit your script.
end

--------------------- Gas Stations -----------------
Tax.GasStation              = 'custom' -- abailable systems: okokGasStation, lc_gas_stations, custom

Tax.EnablePercentualGasTax  = false -- percentual tax on the price of the gas station
Tax.PercentualGasTax        = 0.0075

Tax.EnableFixedGasTax       = false -- fixed tax on the gas station
Tax.FixedGasTax             = 500

Tax.EnableAccountGasTax     = false -- percentual tax on the current money on the gas stations account
Tax.AccountGasTax           = 0.0075

Tax.GasInterval             = 7 -- interval in days

function CustomGasStation(source) -- only if you use a custom shop
    local identifier = ''
    MySQL.Async.fetchAll('SELECT * FROM gasStations WHERE owner = @owner AND lastPay < DATE_SUB(NOW(), INTERVAL @interval DAY)', {
        ['@owner'] = identifier,
        ['@interval'] = Tax.ShopInterval
    }, function(result)
        for k, v in pairs(result) do
            tax = tax + (v.price * Tax.PercentualGasTax) + Tax.FixedGasTax + (v.accountMoney * Tax.AccountGasTax)
            MySQL.Async.execute('UPDATE gasStations SET lastPay = CURRENT_TIMESTAMP() WHERE id = ?', {v.id})
        end
    end)
    return tax
    -- This is an example of how you could write this for your custom shop system. Please edit it to fit your script.
end


------------------------ Billing -------------------
Tax.Billing                 = 'none' -- Available billing systems: zapps_billing, esx_billing, okokBilling, qb (phone app), renewed-banking (qbox), ps-banking, none (just remove money from acc), custom

Tax.TaxSociety              = 'society_police' -- The society that will receive the cash. For ESX it is usually society_jobname, for qb/qbox it is usually just the jobname.
Tax.TaxSocietyName          = 'IRS' -- The name of the society that will receive the money
Tax.TaxSenderName           = 'IRS' -- The name of who issued the invoice
Tax.TaxDaysToPay            = 7 -- How many days do the players have to bay the bill (zapps_billing only)

---- Write your custom billing system here if you wish to use your own
function CustomBilling(receiver, tax, plate, source, taxType, society, societyName)
    -- Receiver is the license of the user who has to pay
    -- You know what xPlayer is
    -- tax is the ammount the player has to pay
    -- plate is the vehicle plate. If the bill is for property tax, plate will be nil
    -- currentID is the server ID of the player
    -- Type is capital, property or vehicle depending on where it comes drom
    -- society and societyName are for fixed taxes with own specified societys, nil for other taxes
    print('customBilling')
end


---------------------- Notifications ---------------
Tax.Notification            = 'lib' -- Available notification systems: okokNotify, esx, lib (ox_lib), RiP-Notify, qb, wasabi_notify, mythic_notify, sy_notify, custom

---- Write your custom Notify system here if you wish to use your own
function CustomNotify(type, msg, heading, source) 
    -- Your Custom function goes here
    -- Used types are error, success and info
    -- msg is the displayed notification text 
    -- heading is for systems like okokNotify with headings on the notification. Just dont use it if your system does not have one. 
    -- currentID is the server ID of the player that gets the notification
    print('customNotify')
end

If you have any questions or your housing, notify billing or dealership script is not natively supported, please open a ticket on our discord to get some help!

Last updated

Was this helpful?