Configuration Reference

Every setting in all eight oxide-dealerships config files, with types, defaults, and behavior notes.

Every setting in oxide-dealerships, what it does, and its default value. To change one, edit the file, save, and restart the resource or your server so the change takes effect.

Config files set the rules — the database holds the shops

The actual dealerships in your world — where each lot is, its map blip, the greeter NPC, test-drive spawn points, accepted payment methods, and job restrictions — are not in these files. They live in the database and are edited in-game with the admin commands and dashboard.

Config File Map

FileCovers
shared/config.luaGeneral settings, the tablet, manual sales, commission, repossession, wholesale, the preview scene, the showroom
shared/config/vehicles.luaThe vehicle catalog — which models exist and their prices
shared/config/finance.luaFinancing terms
shared/config/payments.luaPayment methods (cash, bank, items)
shared/config/coupons.luaPromo code rules
shared/config/tradein.luaTrade-in values
shared/config/email.luaIn-character email toggles
shared/config/showcase_hud.luaThe look-and-hold stat card over display cars

shared/config.lua

General

SettingTypeDefaultDescription
Config.DebugbooleanfalseDraws each dealership's lot-zone outline on screen in-game so you can see placed zones during setup. It does not add server console output.

Management Tablet

Controls the windowed dashboard owners and staff open at the lot.

SettingTypeDefaultDescription
Config.Tablet.holdAnimbooleantruePlays a tablet-holding animation while the dashboard is open.
Config.Tablet.radialIdstring'oxide-dealerships:radial:manage'Internal id of the radial-menu entry that opens the tablet inside the lot. You normally never change this.
Config.Tablet.commandstring'managedealership'The chat command that opens the tablet. Do not set this to dealership — that name is reserved for the admin command.

Manual Sales

Controls the in-person Sales Desk where a salesperson sells to a nearby buyer.

SettingTypeDefaultDescription
Config.ManualSale.buyerRadiusnumber5.0How close (in meters) the buyer must stand to the salesperson.
Config.ManualSale.offerTimeoutSecnumber60A pending contract expires after this many seconds if the buyer doesn't sign.
Config.ManualSale.maxConcurrentPerSellernumber1How many pending offers one salesperson may have at once.
Config.ManualSale.ownerEarnsCommissionbooleanfalseWhether an owner selling their own stock earns commission.
Config.ManualSale.minPriceOverridePctnumber50The lowest custom price a salesperson may set, as a percent of the listing price. 50 means a $100,000 listing can't be sold under $50,000. 0 removes the limit.

Commission and Duty

SettingTypeDefaultDescription
Config.OnDutyRadiusnumber80.0How close (in meters) an employee must be to the greeter when a walk-in sale closes to earn commission on it.

Used and Repossession

SettingTypeDefaultDescription
Config.UsedPriceDiscountnumber0.65A repossessed vehicle is re-listed for sale at this fraction of the original financed amount (the price minus the down payment). 0.65 = 65%.
Config.NpcSentinelCharIdstring'oxide-npc'A placeholder owner id used internally for vehicles repossessed by an NPC dealership. Only change it if it would clash with a real character id on your server.

Wholesale

SettingTypeDefaultDescription
Config.Dealerships.WholesaleMultipliernumber0.70The wholesale cost a player-owned shop pays per vehicle when ordering stock, as a fraction of the catalog price. 0.70 = owners buy in at 70% and resell at their own price.

Catalog Preview Scene (advanced)

Controls the 3D preview that opens when a player views a vehicle. Most owners never touch this — the defaults are tuned for the shipped car, boat, and aircraft shops.

SettingTypeDefaultDescription
Config.CatalogScene.groundtableshipped coordsVehicle position, camera position, and field of view for the ground (car/bike) preview.
Config.CatalogScene.seatableshipped coordsSame, for boats.
Config.CatalogScene.airtableshipped coordsSame, for aircraft.
Config.CatalogScene.closeDistancenumber5.0If the player walks more than this many meters from the greeter, the preview closes.
Config.CatalogScene.swaytableSpeed 1.0, X 0.12, Y 0.08, Z 0.08, Fov 1.5The gentle camera drift that keeps the preview feeling alive. Lower these if it feels seasick.
Config.CatalogScene.colorstable18 preset swatchesThe paint colors offered in the preview, each an { r, g, b } triple.
Config.CatalogScene.rotateSpeednumber60.0How fast (degrees per second) the previewed car spins when the player holds A or D.
Config.CatalogScene.rotateSmoothnumber8.0How smoothly the spin eases in and out.
shared/config.lua
Config.CatalogScene = {
    ground = {
        vehicle = vec4(227.23, -988.16, -99.00, 300.91),
        camera  = vec4(232.36, -988.16, -98.96, 90.16),
        fov     = 50.0,
    },
    sea = {
        vehicle = vec4(-798.32, -1500.60, -0.6, 109.73),
        camera  = vec4(-801.69, -1491.53, 2.13, 200.86),
        fov     = 40.0,
    },
    air = {
        vehicle = vec4(-979.09, -2995.52, 12.95, 328.83),
        camera  = vec4(-987.15, -2991.58, 14.47, 241.20),
        fov     = 40.0,
    },
    closeDistance = 5.0,
    sway = { Speed = 1.0, X = 0.12, Y = 0.08, Z = 0.08, Fov = 1.5 },
    colors = {
        { label = 'Black', r = 13, g = 17, b = 22 },
        -- ...17 more preset colors...
    },
    rotateSpeed  = 60.0,
    rotateSmooth = 8.0,
}

Showroom

SettingTypeDefaultDescription
Config.Showroom.rotateSpeednumber8.0Default turntable spin speed (degrees per second) for a display slot with rotation enabled but no speed of its own.

shared/config/vehicles.lua

The catalog: every vehicle that can be sold, and which shops sell it. Each entry is one model, keyed by its spawn name:

shared/config/vehicles.lua
V['adder'] = { label = 'Adder', brand = 'Truffade', price = 280000, category = 'super', type = 'automobile', shopList = { 'luxury' } }
FieldTypeDescription
labelstringThe display name shown in the catalog.
brandstringThe manufacturer shown in the catalog.
pricenumberThe catalog price in dollars.
categorystringThe grouping in the catalog (e.g. compacts, sedans, suvs, super, boats, helicopters).
typestringThe vehicle type used when spawning: automobile, bike, boat, heli, or plane.
shopListtableWhich shop ids this model is sold at, e.g. { 'pdm' }. A model can be sold at more than one shop.

The shipped catalog is the standard QBCore vehicle list, assigned to four shops: pdm (cars and bikes), boats, air, and truck. A luxury shop assignment exists for the optional Luxury dealership (see Installation).

Adding your own car

Add a new line with the vehicle's spawn name as the key, then restart the resource:

shared/config/vehicles.lua
V['mycar'] = { label = 'My Custom Car', brand = 'Custom', price = 150000, category = 'super', type = 'automobile', shopList = { 'pdm' } }

The blocklist

Config.VehiclesBlocklist is a list of spawn names excluded from every catalog no matter what — emergency, military, and special vehicles. Add any model here that should never be buyable.

shared/config/vehicles.lua
Config.VehiclesBlocklist = {
    'police', 'police2', 'police3', 'police4',
    'sheriff', 'sheriff2',
    'ambulance', 'firetruk',
    'fbi', 'fbi2',
    'riot', 'pbus',
    'lazer', 'hydra', 'cargobob', 'rhino',
    'apc', 'barracks', 'barracks2', 'barracks3',
}

shared/config/finance.lua

All the rules for vehicle financing. See Financing for how the loan lifecycle plays out.

SettingTypeDefaultDescription
Config.Finance.enabledbooleantrueTurns financing on or off entirely.
Config.Finance.minDownPctnumber10The minimum down payment, as a percentage of the price.
Config.Finance.minPaymentsnumber2The fewest installments a buyer may choose.
Config.Finance.maxPaymentsnumber24The most installments a buyer may choose.
Config.Finance.paymentIntervalMinutesnumber60Minutes between automatic payment collections.
Config.Finance.maxMissedBeforeDefaultnumber3The loan defaults (and the car is repossessed) on this many missed payments — with 3, the third miss triggers it.
Config.Finance.missWhileOfflinebooleanfalseWhat happens when a payment comes due while the buyer is offline. false: the due date pushes forward and the loan pauses until they return. true: the payment counts as missed — a pressure tactic that makes players log in to keep loans current.
Config.Finance.baseInterestPctnumber8The standard interest rate added to the financed amount.
Config.Finance.maxRatePctnumber30The highest interest rate a salesperson may set on a manual finance sale. The rate is clamped between 0 and this value.
Config.Finance.schedulerTickMsnumber60000How often (in milliseconds) the system checks for due payments. 60000 = once a minute.
Config.Finance.dueSoonNoticeSecondsnumber24 * 3600How far ahead (in seconds) a payment counts as "coming up soon" for the login reminder. Default is 24 hours.
Config.Finance.useOxideBankingbooleanfalseWhen true and oxide-banking is running, credit scores adjust interest rates and an invoice for the outstanding balance is sent when a loan defaults. Otherwise financing uses the flat base rate.

shared/config/payments.lua

Defines how buyers can pay. Read Payment Methods for the important item-payment behavior before enabling item methods.

SettingTypeDefaultDescription
Config.Payments.financeAccountstring'bank'The money account financing always uses for the down payment and installments.
Config.Payments.methodstableCash and BankThe list of payment methods.

Each method entry:

FieldTypeDescription
idstringA unique id for the method.
labelstringThe name shown at checkout.
iconstringA Font Awesome icon name shown next to the method.
typestringmoney (draws from a money account) or item (spends an inventory item).
accountstringFor money methods: which account to charge (e.g. cash, bank).
itemstringFor item methods: which inventory item to spend (one item = one dollar).
defaultbooleanWhen true, every shop accepts this method unless overridden.
enabledbooleanSet to false to hide a method. Omit it to keep the method on.
shared/config/payments.lua
Config.Payments = {
    financeAccount = 'bank',

    methods = {
        { id = 'cash', label = 'Cash', icon = 'fa-money-bill-wave', type = 'money', account = 'cash', default = true },
        { id = 'bank', label = 'Bank', icon = 'fa-building-columns', type = 'money', account = 'bank', default = true },

        -- Examples — set enabled = true to offer them:
        -- { id = 'crypto',    label = 'Crypto',    icon = 'fa-coins', type = 'money', account = 'crypto',    enabled = false },
        -- { id = 'vip_token', label = 'VIP Token', icon = 'fa-star',  type = 'item',  item = 'vip_token',    enabled = false },
        -- { id = 'casino',    label = 'Casino Chips', icon = 'fa-dice', type = 'item', item = 'casino_chip', enabled = false },
    },
}

Item methods are a money sink

An item method consumes the item and grants the car, but does not credit a player-owned shop's reserve balance and pays no commission. Only money methods do those.

shared/config/coupons.lua

Promo code rules. See Coupons and Promo Codes.

SettingTypeDefaultDescription
Config.Coupons.enabledbooleantrueTurns the coupon system on or off.
Config.Coupons.allowOwnerCreatedbooleanfalseWhen false, shop owners cannot create promo codes and the Promotions app is hidden. Set to true to let owners run their own sales. Admins can always create codes regardless.
Config.Coupons.codeMinLengthnumber3The shortest a promo code may be.
Config.Coupons.codeMaxLengthnumber32The longest a promo code may be. Do not raise this above 32 — the database column only holds 32 characters.
Config.Coupons.maxPercentnumber100The largest percentage discount a code may apply.
Config.Coupons.minFinalPricenumber1A discount can never bring the final price below this — there is always at least a token charge.

shared/config/tradein.lua

Trade-in values and payout rules. See Trade-Ins.

SettingTypeDefaultDescription
Config.TradeIn.enabledbooleantrueTurns trade-ins on or off.
Config.TradeIn.independentRatenumber0.45The automatic greeter offer, as a fraction of the vehicle's value. The value used is the price the vehicle last sold for at a dealership (never more than its catalog price), so a car bought at a discount can't be traded back in for more than was paid.
Config.TradeIn.cooldownMinutesnumber10How long a customer must wait between trade-ins. Stops players from rapidly cycling vehicles into payouts. 0 removes the wait.
Config.TradeIn.minOffernumber0A floor on the automatic offer. 0 = no floor.
Config.TradeIn.maxOffernumber0A ceiling on the automatic offer. 0 = no ceiling.
Config.TradeIn.resaleRatenumber0.65The price the traded car is re-listed at, as a fraction of its catalog price. Kept above independentRate so the shop makes a margin.
Config.TradeIn.allowFinanceCreditbooleantrueWhether a trade-in's value may be applied toward a financed purchase's down payment.
Config.TradeIn.payoutAccountstable{ 'cash', 'bank' }The money accounts a customer may cash out a trade-in into.

Financed vehicles can't be traded in

A vehicle with an unpaid finance loan has to be paid off before it can be traded in.

shared/config/email.lua

On/off switches for in-character emails. Emails need a phone resource that o-link supports; if none is installed they are simply skipped and the on-screen notifications still work.

SettingTypeDefaultDescription
Config.Email.enabledbooleantrueMaster switch for all dealership emails.
Config.Email.employmentbooleantrueHiring (welcome) and firing (separation) notices.
Config.Email.receiptsbooleantruePurchase receipts and signed financing agreements.
Config.Email.financingbooleantrueDue-soon reminders, missed-payment notices, repossession notices, and paid-off confirmations.
Config.Email.sellerCommissionbooleantrueThe "sale closed" notice sent to the salesperson.

shared/config/showcase_hud.lua

The floating stat card that appears over a showroom display vehicle when a player looks at it and holds a key.

SettingTypeDefaultDescription
Config.ShowcaseHud.enabledbooleantrueTurns the showcase card on or off.
Config.ShowcaseHud.holdKeynumber19The key the player holds to show the card. 19 is Left Alt.
Config.ShowcaseHud.maxDistancenumber8.0The farthest (in meters) the card will appear.
Config.ShowcaseHud.heightOffsetnumber1.4How high (in meters) above the car the card floats.
Config.ShowcaseHud.nearDistnumber4.0At or under this distance the card is at its largest.
Config.ShowcaseHud.farDistnumber8.0At or beyond this distance the card is at its smallest.
Config.ShowcaseHud.scaleMinnumber0.7The smallest the card scales to.
Config.ShowcaseHud.scaleMaxnumber1.0The largest the card scales to.

Next Steps