Configuration

Configure the Oxide Shops economy, rate limits, shop types, weapon licenses, auctions, wholesale catalog, templates, tablet integration, and map mode.

oxide-shops is configured in-game, not by editing files. Nearly every setting on this page can be changed live with the /shop settings menu, and your changes are saved to your database.

How Configuration Works

This is the most important thing to understand about configuring oxide-shops:

  • Your settings live in your database, not in the config files. The first time the resource starts, it reads the starting values from its config files and copies them into a database table called oxide_settings. From that point on, the database is the source of truth.
  • To change a setting, open /shop settings in-game (admins only). Pick a setting, change it, and save. The change takes effect immediately and is remembered across restarts.
  • Editing the config .lua files after the first start usually does nothing. Because the database already holds your values, hand-edited file changes are ignored — except for a brand-new setting added by a future update, which is copied in the first time it appears. Use /shop settings instead.
  • Each setting has a "Reset to default" button in the menu, which restores that setting to the value the resource shipped with.

The /shop settings menu is organized into the same groups shown below, split into Basic (shown upfront) and Advanced (behind a toggle) tiers.

The tables below cover the settings you'll normally change, with each one's type, shipped default, and what it changes in-game. The Config. names are the internal keys; in the menu they appear with friendly labels.

Advanced sub-settings not in the menu

A handful of deeper tuning values are not in the /shop settings menu — for example the barber's seating scene (Config.BarberShop.scene), the tattoo shop's animations, seating scene, and clothing-strip amounts (Config.TattooShop.anims, .scene, .undress — the last one notes "adjust per your clothing pack"), the service display labels (serviceLabels), and the clothing slot definitions and icons (Config.ClothingShop.components / .props).

Because the database becomes the source of truth after the first start (see above), these values are effectively frozen at their first-boot values — they're not in the menu, and editing the config files later has no effect. If you genuinely need to change one of these, you must edit it in the config file and clear this resource's saved settings so the file values are re-imported on the next boot. That procedure is in Troubleshooting → I want to wipe all settings back to the file defaults. For almost every server, the shipped values are fine and you can ignore this section.

General

SettingTypeDefaultDescription
Config.MaxShopsPerPlayernumber3How many shops a single player may own at once
Config.AllowPlayerRenamebooleantrueWhen on, owners can rename their shop from the management panel. Admins can rename any shop in /shop admin either way. See Renaming a Shop
Config.MaxShopNameLengthnumber32Longest name (in characters) an owner may give their shop
Config.StartingStocknumber25Quantity each item starts with when a shop first becomes player-owned
Config.InteractionDistancenumber2.5How close (in metres) a player must be to open a shop
Config.DefaultPedModelstring's_m_y_ammucity_01'Shopkeeper model used when a shop has none set
Config.ServerInteractDistancenumber12.0Anti-cheat guard: the server rejects a shop action from farther than this (metres). Keep it generous
Config.DebugbooleanfalsePrints extra [oxide-shops] lines to the server console. Leave off on a live server
Config.MapModestring'inherit'How the /shop admin map shows the mainland and Cayo Perico. See Shared map mode

Economy

SettingTypeDefaultDescription
Config.TaxRatenumber0.05Sales tax added on top of item purchases at general and weapon shops (0.05 = 5%). It does not apply to services (barber/tattoo/mask/clothing), the pawn shop, or the auction house — those add no tax
Config.WholesaleMarkupnumber1.5Multiplier from an item's base price to the owner's wholesale cost (1.5 = 150%)
Config.WeaponRegistrationFeenumber500Cash fee charged per firearm a player registers at a weapon shop
Config.AllowResalebooleantrueWhen on, owners can list a shop for another player to buy at the shop
Config.ResaleFeePercentnumber0.05Cut taken from a shop resale before paying the seller (0.05 = 5%)
Config.AutoRestock.EnabledbooleantrueWhether player-owned inventory shops auto-restock on a timer
Config.AutoRestock.Intervalnumber600000Time between auto-restock sweeps, in milliseconds (600000 = 10 minutes)
Config.Transactions.RetentionDaysnumber30How many days of shop transaction history to keep
Config.Transactions.PruneIntervalnumber3600000How often old transactions are cleaned up, in milliseconds (1 hour)

Rate Limits

Config.RateLimits sets a minimum wait (in milliseconds) between repeats of each action, per player — an anti-spam guard. Each key is one action. Raise a value to slow an action down; lower it to allow faster repeats. When an update adds a new action, it uses its default value from the next start; your existing values are kept.

KeyDefault (ms)Action it limits
buyItem1000Buying an item (also pawn buy/sell, service purchases, auction actions)
registerWeapon3000Registering carried firearms
updatePrice1000An owner changing an item's price
wholesaleOrder3000Placing a wholesale order
transferItem1000Moving items from pockets into the shop
withdraw3000Withdrawing from the shop balance
deposit3000Depositing to the shop balance
purchaseShop5000Buying a shop
adminCreate3000Admin creating a shop
adminEdit2000Admin editing a shop
adminDelete5000Admin deleting a shop
adminReclaim5000Admin reclaiming a shop
getShopData500Opening a shop's item list
getManagementData1000Opening the management panel
getAdminData1000Opening the admin panel
setResalePrice1000Listing/unlisting a shop for resale
setAutoRestock1000Setting an auto-restock target
renameShop5000An owner renaming their shop

Blips

Each shop style has a default map blip. A blip has a sprite (icon ID), color (color ID), scale (size), and label (name on the map). Individual shops can override or hide their blip in /shop admin.

SettingStyleDefault (sprite / color / scale / label)
Config.BlipGeneral store52 / 2 / 0.7 / Store
Config.WeaponBlipWeapon shop110 / 1 / 0.8 / Ammunation
Config.MaskBlipMask shop362 / 4 / 0.7 / Mask Shop
Config.PawnBlipPawn shop617 / 46 / 0.6 / Pawn Shop
Config.AuctionBlipAuction house269 / 2 / 0.8 / Auction House
Config.BarberBlipBarber shop71 / 25 / 0.7 / Barber Shop
Config.ClothingBlipClothing store73 / 47 / 0.7 / Clothing Store
Config.TattooBlipTattoo parlor75 / 1 / 0.7 / Tattoo Parlor

Weapon Shop

SettingTypeDefaultDescription
Config.WeaponModelstable(per weapon)Maps each weapon item name to the 3D prop model shown on the weapon shop display shelf. A weapon with no entry simply shows no prop. Edited from the Weapon Shop section of /shop settings
Config.RequireWeaponLicensebooleanfalseRequire a weapon license. When on, players need a firearms license to buy from a weapon shop, except items exempted by the two lists below. If your framework has no license system, sales go through as normal and a warning is printed to the server console
Config.WeaponLicenseTypestring'weapon'License type — the license name that is checked. weapon matches QBCore and QBX out of the box; on ESX it must match a type in your user_licenses table
Config.WeaponLicenseExemptCategorieslist{ 'Melee' }Categories sold without a license — shelf categories that never need the license. Not case-sensitive
Config.WeaponLicenseExemptItemslistfive melee weaponsItems sold without a license — item names that never need the license. Ships with the five melee weapons from the default Ammunation catalog: weapon_knife, weapon_bat, weapon_crowbar, weapon_hammer, weapon_nightstick. Not case-sensitive

An item is sold without a license when either its name is in the items list or its shelf category is in the categories list. Items placed with Add item in /shop admin, restocked from wholesale, or transferred from a player's inventory have no category, so exempt those by name. Clear both lists to require the license for everything in the shop.

A player without the license sees "You need a weapon license to buy this item" (shop_weapon_license_required in locales/en.json) and is not charged.

Both lists ship pre-filled, so melee weapons sell without a license even while the requirement is on. Clear both lists if every item should need the license.

Weapon stats shown in the UI (damage/accuracy/range/fire-rate) ride on the individual template items inside Config.ShopTemplates. Like all top-level settings, the shop templates become database-backed after the first start — so editing shared/config/templates.lua later has no effect, and there is no stats field in the settings menu. In practice the stats are frozen at their first-boot values unless you change them the hard way: edit the template rows and re-import the settings using the wipe procedure in Troubleshooting.

Mask Shop

SettingTypeDefaultDescription
Config.MaskShop.maskPricenumber500Default mask price (player-owned shops set their own)
Config.MaskShop.supplyItemstring'mask_blank'Item consumed per mask sold (player-owned shops only)
Config.MaskShop.supplyPerServicenumber1Units of the supply item used per mask
Config.MaskShop.startingSupplynumber25Supply seeded into the shop when a player buys it

Barber Shop

Config.BarberShop.prices sets the default price charged per category the customer changes.

SettingTypeDefaultDescription
Config.BarberShop.prices.hairnumber35Haircut (hair style) price
Config.BarberShop.prices.hairColornumber25Hair color + highlight price
Config.BarberShop.prices.beardnumber20Facial hair price
Config.BarberShop.prices.eyebrowsnumber15Eyebrows price
Config.BarberShop.prices.eyeColornumber20Eye color price
Config.BarberShop.supplyItemstring'hair_product'Item consumed per styling (player-owned shops only)
Config.BarberShop.supplyPerServicenumber1Units of supply used per changed category
Config.BarberShop.startingSupplynumber25Supply seeded when a player buys the shop

Tattoo Shop

SettingTypeDefaultDescription
Config.TattooShop.prices.applynumber500Price to apply one tattoo
Config.TattooShop.prices.removenumber750Price to remove one tattoo
Config.TattooShop.supplyItemstring'tattoo_ink'Item consumed per apply/remove (player-owned shops only)
Config.TattooShop.supplyPerServicenumber1Units of supply used per apply/remove
Config.TattooShop.startingSupplynumber25Supply seeded when a player buys the shop
Config.TattooCatalogtable(10 collections)The collections and tattoos offered. Editable in the Tattoo Shop section of /shop settings; per-tattoo preview cameras are set with the in-game camera editor in /shop admin

Clothing Shop

Config.ClothingShop.components and Config.ClothingShop.props define the garment/prop slots and their default per-slot prices. A few examples:

SlotDefault price
Shirt (component_11)200
Arms (component_3)200
Undershirt (component_8)100
Pants (component_4)150
Shoes (component_6)120
Armor (component_9)300
Hat (prop_0)80
Glasses (prop_1)60
Watch (prop_6)100
SettingTypeDefaultDescription
Config.ClothingShop.pricestable(per-slot)Default price charged per changed clothing/prop slot. Editable in /shop settings
Config.ClothingShop.supplyItemstring'fabric'Item consumed per changed slot (player-owned shops only)
Config.ClothingShop.supplyPerServicenumber1Units of supply used per changed slot
Config.ClothingShop.startingSupplynumber25Supply seeded when a player buys the shop

Pawn Shop

Controls how the pawn shop's buy and sell prices are derived and how they move with demand. See Features → Pawn Shop for how these interact.

SettingTypeDefaultDescription
Config.PawnShop.sellRationumber0.5Base sell price as a fraction of buy price (50%)
Config.PawnShop.decayPerSalenumber0.05Sell price drop per sale of the same item (−5%)
Config.PawnShop.recoveryPerMinutenumber0.01Price recovery per minute toward base (+1%/min)
Config.PawnShop.minSellMultipliernumber0.1Sell price floor as a fraction of base (10%)
Config.PawnShop.demandMultipliernumber0.03Buy price rise per unit of demand (+3%)
Config.PawnShop.maxBuyMultipliernumber1.5Cap on buy price as a multiple of base (150%)

Auction House

SettingTypeDefaultDescription
Config.Auction.listingFeePercentnumber0.05Fee to list, as a fraction of the starting price (5%)
Config.Auction.completionFeePercentnumber0.05Fee taken from a completed sale (5%)
Config.Auction.minBidIncrementnumber100Smallest allowed absolute bid increase
Config.Auction.bidIncrementPercentnumber0.05A bid must also beat the current bid by this fraction (5%)
Config.Auction.maxActiveListingsnumber10Most auctions one seller may have active at once (a per-character cap, not a server-wide total)
Config.Auction.checkIntervalnumber30000How often auctions are checked for expiry, in milliseconds (30 seconds)
Config.Auction.durationstable{ 1, 6, 12, 24 }Auction lengths in hours that sellers can choose. This one is not editable in the settings menu, and because the whole Auction setting is database-backed after the first start, it's effectively frozen at its first-boot value. To change it you must edit shared/config/auction.lua and re-import settings via the wipe procedure

Wholesale Catalog

Config.WholesaleCatalog is the list of items that player-owned shop owners can restock from wholesale. Each entry has:

FieldTypeDescription
basePricenumberThe base price. Owner's cost per unit = basePrice × Config.WholesaleMarkup
minOrdernumberSmallest allowed order quantity
maxOrdernumberLargest allowed order quantity
categorystringGrouping label shown in the wholesale UI

You add, remove, and edit wholesale items in the Wholesale section of /shop settings using the item picker. The four service supply items (hair_product, tattoo_ink, mask_blank, fabric) are included so owners can restock service shops.

Shop Templates

Config.ShopTemplates is the list of ready-made shops that /shop admin can create from a picker. Each template carries a shop ID, name, ped model, style, location, optional chairs (for barber/tattoo), an optional purchase price, and an item list. The default templates place all the standard GTA stores at their familiar locations.

Templates are advanced and are edited in the Shop Templates section of /shop settings (including placing the location in-world). For everyday use you'll create and edit live shops directly in /shop admin rather than editing templates.

Tablet

These settings only do something when Oxide Tablet (oxide-tablet) is installed. Without it, or with Tablet apps switched off, the shop manager and auction house open in their own window at the shop exactly as they always have.

With it, an owner gets a Shop Manager tile and, if your server runs an auction house, an Auction House tile, plus a My Shops widget for the home screen showing each shop they own and its till.

The settings live in Config.Tablet (shared/config/tablet.lua) and appear in /shop settings as Tablet integration, under the Tablet group.

SettingMenu labelTypeDefaultDescription
UseTabletTablet appstoggletrueShow the Shop Manager and Auction House tiles and the My Shops widget
AllowCashActionsAllow remote withdraw/deposittogglefalseAllow Withdraw and Deposit from the tablet. Off by default — see below
NotificationsTablet notificationstoggletruePush sales, low-stock warnings and auction results (outbid, won, sold, expired) to the owner's tablet. Needs Tablet apps on as well
LowStockThresholdLow stock warning atnumber5A sale that leaves this many or fewer of an item warns the owner (one notification per item per shop, replaced rather than repeated). 0 turns the warning off
SessionTtlRemote session timeoutnumber600Seconds (60–7200) a remote management session stays valid if the game never reports the desktop closed — a crash, or the player quitting mid-session

Why withdraw and deposit are off by default

Moving the till is the one shop action that puts cash straight in a player's pocket, and the shop counter has always been the thing that kept it local. Opening the manager from a tablet anywhere on the map would quietly turn that into withdraw-from-anywhere, which is a real change to your economy — so it is opt-in.

Everything else works remotely: price changes, auto-restock targets, wholesale orders, restocking from your own inventory, listing the shop for resale, and the transaction ledger. Those move shop balance and stock, never a player's cash.

Turn AllowCashActions on if you'd rather have the convenience. When it's off, the buttons are hidden while the panel is open on a tablet, and the server refuses the action either way, so nothing slips through.

Shared map mode

Config.MapMode picks how the shop map in /shop admin shows the mainland and Cayo Perico. The map itself comes from o-link, which owns the artwork and calibration, so this setting only chooses a mode.

ValueWhat you see
inheritDefault. Follow the server-wide default set in o-link
combinedMainland and Cayo Perico on one combined map
separateSeparate mainland and Cayo Perico views, with a region selector
disabledMainland only — Cayo Perico and its markers are hidden
shared/config.lua
Config.MapMode = 'inherit'

The value is saved in the oxide_settings table like every other setting: the config file only seeds it when nothing is saved yet. Change it live in either of these ways:

  • Map mode under General in /shop settings.
  • oxide-shops:mapmode <value> from the server console, or /oxide-shops:mapmode <value> in game as an admin. Run it without a value to print the current mode to the server console.

inherit follows the server-wide default, which you set once for every Oxide resource with olink:mapmode <value> (combined, separate or disabled; o-link ships with combined). Open maps pick up a new mode without a restart.

The shared map needs o-link 1.8.0 or newer. Update o-link and oxide-shops together, then do a full server restart rather than restarting o-link on its own.

Next Steps

  • Admin — using the /shop admin and /shop settings menus
  • Features — how each setting plays out in-game
  • Troubleshooting — if a change doesn't seem to apply