Configuration
Configure the Oxide Shops economy, rate limits, shop types, auctions, wholesale catalog, and templates.
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 settingsin-game (admins only). Pick a setting, change it, and save. The change takes effect immediately and is remembered across restarts. - Editing the config
.luafiles 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 settingsinstead. - 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
| Setting | Type | Default | Description |
|---|---|---|---|
Config.MaxShopsPerPlayer | number | 3 | How many shops a single player may own at once |
Config.StartingStock | number | 25 | Quantity each item starts with when a shop first becomes player-owned |
Config.InteractionDistance | number | 2.5 | How close (in metres) a player must be to open a shop |
Config.DefaultPedModel | string | 's_m_y_ammucity_01' | Shopkeeper model used when a shop has none set |
Config.ServerInteractDistance | number | 12.0 | Anti-cheat guard: the server rejects a shop action from farther than this (metres). Keep it generous |
Config.Debug | boolean | false | Prints extra [oxide-shops] lines to the server console. Leave off on a live server |
Economy
| Setting | Type | Default | Description |
|---|---|---|---|
Config.TaxRate | number | 0.05 | Sales 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.WholesaleMarkup | number | 1.5 | Multiplier from an item's base price to the owner's wholesale cost (1.5 = 150%) |
Config.WeaponRegistrationFee | number | 500 | Cash fee charged per firearm a player registers at a weapon shop |
Config.AllowResale | boolean | true | When on, owners can list a shop for another player to buy at the shop |
Config.ResaleFeePercent | number | 0.05 | Cut taken from a shop resale before paying the seller (0.05 = 5%) |
Config.AutoRestock.Enabled | boolean | true | Whether player-owned inventory shops auto-restock on a timer |
Config.AutoRestock.Interval | number | 600000 | Time between auto-restock sweeps, in milliseconds (600000 = 10 minutes) |
Config.Transactions.RetentionDays | number | 30 | How many days of shop transaction history to keep |
Config.Transactions.PruneInterval | number | 3600000 | How 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.
| Key | Default (ms) | Action it limits |
|---|---|---|
buyItem | 1000 | Buying an item (also pawn buy/sell, service purchases, auction actions) |
registerWeapon | 3000 | Registering carried firearms |
updatePrice | 1000 | An owner changing an item's price |
wholesaleOrder | 3000 | Placing a wholesale order |
transferItem | 1000 | Moving items from pockets into the shop |
withdraw | 3000 | Withdrawing from the shop balance |
deposit | 3000 | Depositing to the shop balance |
purchaseShop | 5000 | Buying a shop |
adminCreate | 3000 | Admin creating a shop |
adminEdit | 2000 | Admin editing a shop |
adminDelete | 5000 | Admin deleting a shop |
adminReclaim | 5000 | Admin reclaiming a shop |
getShopData | 500 | Opening a shop's item list |
getManagementData | 1000 | Opening the management panel |
getAdminData | 1000 | Opening the admin panel |
setResalePrice | 1000 | Listing/unlisting a shop for resale |
setAutoRestock | 1000 | Setting an auto-restock target |
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.
| Setting | Style | Default (sprite / color / scale / label) |
|---|---|---|
Config.Blip | General store | 52 / 2 / 0.7 / Store |
Config.WeaponBlip | Weapon shop | 110 / 1 / 0.8 / Ammunation |
Config.MaskBlip | Mask shop | 362 / 4 / 0.7 / Mask Shop |
Config.PawnBlip | Pawn shop | 617 / 46 / 0.6 / Pawn Shop |
Config.AuctionBlip | Auction house | 269 / 2 / 0.8 / Auction House |
Config.BarberBlip | Barber shop | 71 / 25 / 0.7 / Barber Shop |
Config.ClothingBlip | Clothing store | 73 / 47 / 0.7 / Clothing Store |
Config.TattooBlip | Tattoo parlor | 75 / 1 / 0.7 / Tattoo Parlor |
Weapon Shop
| Setting | Type | Description |
|---|---|---|
Config.WeaponModels | table | 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 |
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
| Setting | Type | Default | Description |
|---|---|---|---|
Config.MaskShop.maskPrice | number | 500 | Default mask price (player-owned shops set their own) |
Config.MaskShop.supplyItem | string | 'mask_blank' | Item consumed per mask sold (player-owned shops only) |
Config.MaskShop.supplyPerService | number | 1 | Units of the supply item used per mask |
Config.MaskShop.startingSupply | number | 25 | Supply seeded into the shop when a player buys it |
Barber Shop
Config.BarberShop.prices sets the default price charged per category the customer changes.
| Setting | Type | Default | Description |
|---|---|---|---|
Config.BarberShop.prices.hair | number | 35 | Haircut (hair style) price |
Config.BarberShop.prices.hairColor | number | 25 | Hair color + highlight price |
Config.BarberShop.prices.beard | number | 20 | Facial hair price |
Config.BarberShop.prices.eyebrows | number | 15 | Eyebrows price |
Config.BarberShop.prices.eyeColor | number | 20 | Eye color price |
Config.BarberShop.supplyItem | string | 'hair_product' | Item consumed per styling (player-owned shops only) |
Config.BarberShop.supplyPerService | number | 1 | Units of supply used per changed category |
Config.BarberShop.startingSupply | number | 25 | Supply seeded when a player buys the shop |
Tattoo Shop
| Setting | Type | Default | Description |
|---|---|---|---|
Config.TattooShop.prices.apply | number | 500 | Price to apply one tattoo |
Config.TattooShop.prices.remove | number | 750 | Price to remove one tattoo |
Config.TattooShop.supplyItem | string | 'tattoo_ink' | Item consumed per apply/remove (player-owned shops only) |
Config.TattooShop.supplyPerService | number | 1 | Units of supply used per apply/remove |
Config.TattooShop.startingSupply | number | 25 | Supply seeded when a player buys the shop |
Config.TattooCatalog | table | (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:
| Slot | Default 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 |
| Setting | Type | Default | Description |
|---|---|---|---|
Config.ClothingShop.prices | table | (per-slot) | Default price charged per changed clothing/prop slot. Editable in /shop settings |
Config.ClothingShop.supplyItem | string | 'fabric' | Item consumed per changed slot (player-owned shops only) |
Config.ClothingShop.supplyPerService | number | 1 | Units of supply used per changed slot |
Config.ClothingShop.startingSupply | number | 25 | Supply 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.
| Setting | Type | Default | Description |
|---|---|---|---|
Config.PawnShop.sellRatio | number | 0.5 | Base sell price as a fraction of buy price (50%) |
Config.PawnShop.decayPerSale | number | 0.05 | Sell price drop per sale of the same item (−5%) |
Config.PawnShop.recoveryPerMinute | number | 0.01 | Price recovery per minute toward base (+1%/min) |
Config.PawnShop.minSellMultiplier | number | 0.1 | Sell price floor as a fraction of base (10%) |
Config.PawnShop.demandMultiplier | number | 0.03 | Buy price rise per unit of demand (+3%) |
Config.PawnShop.maxBuyMultiplier | number | 1.5 | Cap on buy price as a multiple of base (150%) |
Auction House
| Setting | Type | Default | Description |
|---|---|---|---|
Config.Auction.listingFeePercent | number | 0.05 | Fee to list, as a fraction of the starting price (5%) |
Config.Auction.completionFeePercent | number | 0.05 | Fee taken from a completed sale (5%) |
Config.Auction.minBidIncrement | number | 100 | Smallest allowed absolute bid increase |
Config.Auction.bidIncrementPercent | number | 0.05 | A bid must also beat the current bid by this fraction (5%) |
Config.Auction.maxActiveListings | number | 10 | Most auctions one seller may have active at once (a per-character cap, not a server-wide total) |
Config.Auction.checkInterval | number | 30000 | How often auctions are checked for expiry, in milliseconds (30 seconds) |
Config.Auction.durations | table | { 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:
| Field | Type | Description |
|---|---|---|
basePrice | number | The base price. Owner's cost per unit = basePrice × Config.WholesaleMarkup |
minOrder | number | Smallest allowed order quantity |
maxOrder | number | Largest allowed order quantity |
category | string | Grouping 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.
Next Steps
- Admin — using the
/shop adminand/shop settingsmenus - Features — how each setting plays out in-game
- Troubleshooting — if a change doesn't seem to apply