Features
Feature reference for retail, weapons, pawn, service shops, auctions, ownership, wholesale, and access controls.
This page explains how every part of oxide-shops works, from a server owner's point of view — what players see and do, and how the money and stock move behind the scenes.
Shop Types at a Glance
Every shop has a style that decides how it behaves and what players can do there.
| Style | What it does | Can be player-owned? |
|---|---|---|
| General | Sells everyday items (food, tools, etc.) | Yes |
| Weapon | Sells firearms, armor, and melee/throwable weapons; registers weapons | Yes |
| Pawn | Buys and sells items at prices that shift with demand | No (see Pawn Shop) |
| Clothing | Change outfit garments for a price | Yes |
| Barber | Change hair, hair color, facial hair, eyebrows, eye color | Yes |
| Tattoo | Apply and remove GTA tattoos | Yes |
| Mask | Buy a mask | Yes |
| Auction | Peer-to-peer item and vehicle auctions | No |
Players open a shop by walking up to the shopkeeper (or into the store zone for clothing/mask shops) and pressing their interaction key, then choosing Browse Shop (the label changes per shop type, e.g. "Buy Weapons", "Get a Haircut").
Static vs Player-Owned Shops
Every shop is one of two types:
- Static — a normal server-run store. Its stock is unlimited. Sales still record to the store's internal balance (its till), but for a static store that money just sits there unused — nobody withdraws it, and the till is cleared the moment a player buys the store, so a new owner always starts at $0. Newly created stores start as static.
- Player-owned — a player has bought the shop and now runs it. Its stock is finite: it starts with a fixed amount and runs out as customers buy, until the owner restocks. Sales fill the shop's balance (its till), which the owner withdraws.
A static shop becomes player-owned when a player buys it (if you've made it purchasable). An admin can take a shop back with Reclaim, which returns it to unlimited static stock.
General Stores
General stores sell everyday items — food, drinks, medical supplies, tools, and equipment. The built-in templates include 24/7 supermarkets, LTD gas stations, Rob's Liquor stores, and hardware stores at their familiar GTA locations, ready for an admin to place from /shop admin.
How a Purchase Works
- The player opens the store and picks an item and quantity.
- The price is the item's price plus sales tax (set by
Config.TaxRate, 5% by default). - The item price is charged from the player's cash. If they can't carry the item or don't have enough cash, the sale is refused and nothing is charged.
- On a player-owned store, the stock drops and the item's price (without tax) is added to the shop's balance.
| Setting | Default | What it controls |
|---|---|---|
Config.TaxRate | 0.05 | Sales tax added on top of item purchases (0.05 = 5%). Services, pawn sales, and auctions are not taxed |
Config.StartingStock | 25 | How much of each item a shop has when it first becomes player-owned |
Weapon Shops
Weapon shops (Ammunation) sell firearms, armor, and melee/throwable weapons. Each weapon shows a 3D model on the display shelf so players can see what they're buying.
- Weapon registration — Weapons bought at a legal weapon shop are automatically registered to the buyer. Players can also register firearms they're already carrying (for example ones they found): the Register Firearms button opens a list of their unregistered, serialized weapons, and they pick which ones to register. Each registered firearm costs the registration fee.
- Weapon stats — The shop UI shows an approximate damage/accuracy/range/fire-rate rating for each weapon (for display only; these are not exact game values).
| Setting | Default | What it controls |
|---|---|---|
Config.WeaponRegistrationFee | 500 | Cash fee charged per firearm registered |
Weapon items (like
weapon_pistol) must be registered in your framework for a weapon shop to sell them. The default catalog matches standard GTA weapons.
Pawn Shop
The pawn shop is a two-way store: players sell items to it for quick cash, and buy items back from it. Its defining feature is dynamic pricing — prices react to how much players trade there.
- Selling an item drops that item's sell price a little each time (the shop is "flooded"), down to a floor. Prices slowly recover over time.
- Buying an item drives its buy price up (demand), up to a cap. This also recovers over time.
- Each item has its own price memory, per pawn shop.
The pawn shop is deliberately not ownable by players. Its buy and sell prices ignore stock and its balance (it acts as a money source and item sink), so letting a player own it would create an unlimited money faucet.
| Setting | Default | What it controls |
|---|---|---|
Config.PawnShop.sellRatio | 0.5 | A sold item pays this fraction of its base price (50%) |
Config.PawnShop.decayPerSale | 0.05 | Sell price drop per sale of the same item (−5%) |
Config.PawnShop.recoveryPerMinute | 0.01 | Price recovery per minute back toward base (+1%/min) |
Config.PawnShop.minSellMultiplier | 0.1 | Sell price never falls below this fraction of base (10%) |
Config.PawnShop.demandMultiplier | 0.03 | Buy price rise per unit of demand (+3%) |
Config.PawnShop.maxBuyMultiplier | 1.5 | Buy price is capped at this multiple of base (150%) |
Clothing Stores
Clothing stores let players change outfit garments — shirt, pants, shoes, bags, accessories, armor, hats, glasses, and more. A store is a walk-in zone (no shopkeeper ped); walking into it gives the Buy Clothes option.
- Players are billed only for the slots they actually change, using a per-slot price book.
- The change is saved through your server's clothing/appearance resource.
- On a player-owned store, each changed slot uses one unit of the store's
fabricsupply.
The default per-slot prices live in Config.ClothingShop.components and Config.ClothingShop.props (for example Shirt $200, Pants $150, Hat $80).
Barber Shops
Barber shops let players restyle hair, hair color, facial hair, eyebrows, and eye color in a seated, animated scene — the customer sits in a chair and the barber works with a scissors prop.
- Players are billed per category they change. Changing just the hair color costs only the hair-color price.
- The look is saved through your clothing/appearance resource.
- On a player-owned barber, each changed category uses one unit of
hair_productsupply.
| Category | Default price |
|---|---|
Haircut (hair) | 35 |
Hair color (hairColor) | 25 |
Facial hair (beard) | 20 |
Eyebrows (eyebrows) | 15 |
Eye color (eyeColor) | 20 |
Barber shops need a clothing resource that supports full appearance. Some clothing backends only handle outfits, not hair and face detail. If yours doesn't, the barber politely refuses ("can't style hair on this server's clothing system") rather than wiping the player's look. Appearance-rich backends (for example illenium-appearance, fivem-appearance, rcore_clothing) work fully.
Tattoo Parlors
Tattoo parlors apply and remove GTA tattoos in a seated scene, with the camera framed on the body area being worked on. The parlor offers ten GTA overlay collections (Business, Hipster, Biker, Air Races, Beach Bum, Festive, Gunrunning, Import/Export, Lowrider, Lowrider II).
- Apply a tattoo for a flat price; remove one for a (usually higher) flat price.
- Tattoos are saved through your clothing/appearance resource, so they persist and work on every framework.
- On a player-owned parlor, each apply or removal uses one unit of
tattoo_inksupply.
| Action | Default price |
|---|---|
Apply (apply) | 500 |
Remove (remove) | 750 |
A tattoo only appears in the shop if it has a camera set. Each tattoo needs a preview camera angle so it can be framed on the body. The default collections ship with cameras already set. If you add new tattoos, set their camera with the in-game tattoo camera editor in
/shop admin— until you do, a camera-less tattoo is hidden from customers.
Mask Shops
Mask shops are a walk-in zone that sells a single service: putting on a mask. The player picks a mask style and pays the mask price. On a player-owned mask shop, each mask uses one unit of mask_blank supply.
| Setting | Default | What it controls |
|---|---|---|
Config.MaskShop.maskPrice | 500 | Default mask price (player-owned shops set their own) |
Auction House
The auction house is a peer-to-peer marketplace where players list items or owned vehicles for other players to bid on. The built-in templates include one auction house in Vinewood that an admin can place from /shop admin.
Listing
- A seller lists an item (from a chosen inventory slot) or a vehicle they own, with a starting price, an optional buy-now price, and a duration (1, 6, 12, or 24 hours by default).
- Listing charges a listing fee (a percentage of the starting price) from the seller's cash, and holds the listed item out of their inventory.
- Each seller may have up to
Config.Auction.maxActiveListingsauctions running at once (a per-player limit — there is no cap on the total number of auctions across the whole server).
Bidding & Buying
- Bidders pay their bid amount up front from cash; if they're outbid, they're refunded automatically.
- Each new bid must beat the current bid by a minimum increment (a flat amount and a percentage, whichever is larger).
- A buyer can pay the buy-now price to end the auction immediately.
Completion
- When an auction ends with a winning bid, the seller is paid the winning amount minus a completion fee, and the winner receives the item or vehicle.
- If an auction ends with no bids, the item is returned to the seller (vehicles simply stay with the seller).
- Everything is delivered safely even if a player is offline. Payouts, refunds, won items, returned items, and won vehicles are queued and delivered the next time that player logs in.
- Vehicle ownership is re-checked at the moment of sale, so a seller can't sell a car they no longer own.
| Setting | Default | What it controls |
|---|---|---|
Config.Auction.listingFeePercent | 0.05 | Fee to list, as a fraction of the starting price (5%) |
Config.Auction.completionFeePercent | 0.05 | Fee taken from a completed sale (5%) |
Config.Auction.minBidIncrement | 100 | Smallest allowed absolute bid increase |
Config.Auction.bidIncrementPercent | 0.05 | A bid must also beat the current bid by this fraction (5%) |
Config.Auction.durations | { 1, 6, 12, 24 } | Auction lengths (in hours) sellers can choose |
Config.Auction.maxActiveListings | 10 | Most auctions one seller may have active at once (per-player, not server-wide) |
Vehicle Preview Spots
Admins can add preview spots to an auction house — a marked location where a listed vehicle appears so bidders can look it over before bidding, with a saved camera angle. Preview spots are managed from /shop admin.
Owning a Shop
Players can buy shops and run them as businesses.
Buying a Shop
- An admin makes a static shop purchasable by setting a purchase price on it (in
/shop admin). - A player walks up and chooses Purchase Shop. The price is charged from their bank.
- The shop becomes player-owned with an empty till: its unlimited stock is converted to a finite starting amount (
Config.StartingStock), and service shops are seeded with their price book and starting supply. - A player can own up to
Config.MaxShopsPerPlayershops (3 by default).
Running a Shop
Owners get a Manage Shop option at their own shop, which opens the management panel:
- Set prices on each item (or each service, for service shops).
- Restock from wholesale, or transfer items from their own pockets into the shop.
- Set an auto-restock target per item so the shop tops itself up automatically.
- Deposit and withdraw money from the shop balance (withdrawals go to the owner's bank).
- View the transaction history (recent sales, restocks, deposits, etc.).
- List the shop for resale (if resale is enabled).
Reselling a Shop
When Config.AllowResale is on, an owner can list their shop for sale at a price. The next player to choose Purchase Shop at that shop buys it as a going concern:
- The seller is paid the sale price minus a resale fee, plus whatever was in the shop's till.
- The buyer takes over the shop with its stock and price book, and an empty till.
- If the seller is offline when the shop sells, their proceeds are paid the next time they log in.
| Setting | Default | What it controls |
|---|---|---|
Config.MaxShopsPerPlayer | 3 | How many shops one player may own at once |
Config.AllowResale | true | Whether owners can list shops for other players to buy |
Config.ResaleFeePercent | 0.05 | Cut taken from a resale before paying the seller (5%) |
Wholesale & Auto-Restock
Player-owned inventory shops (general and weapon) restock from a wholesale catalog. The owner buys stock at wholesale cost (an item's base price multiplied by Config.WholesaleMarkup) using the shop's balance, then sells it to customers at their chosen retail price for a margin.
- Each wholesale item has a minimum and maximum order size.
- Owners set their own retail prices, so the profit margin is up to them.
Auto-restock lets an owner set a target quantity per item. On a timer, the shop automatically tops each item back up to its target from wholesale, paying from the shop balance, and stops when the balance runs low.
| Setting | Default | What it controls |
|---|---|---|
Config.WholesaleMarkup | 1.5 | Owner's cost = item base price × this (1.5 = 150%) |
Config.AutoRestock.Enabled | true | Whether the automatic restock sweep runs |
Config.AutoRestock.Interval | 600000 | Time between restock sweeps, in milliseconds (10 minutes) |
Access Restrictions
Any shop can be locked so it only serves certain players. This is set per shop in /shop admin:
- Job — only players with this job name are served.
- Minimum rank — require at least this job grade (rank number).
- On-duty only — require the player to be on duty.
A locked shop refuses to open its browse/buy menus for players who don't qualify, showing "This store doesn't serve you". A shop with no job set serves everyone.
One thing to note about owners: the restriction applies to everyone on the customer side, including a shop's own owner. If an owner stops matching the lock (for example they change jobs), they can still open Manage Shop — managing your own shop bypasses the job lock — but they'll be refused if they try to buy from their own shop as a customer.
Map Blips
Each shop style has its own default map blip (icon, color, size, and label), all configurable. Per shop, an admin can also:
- Hide the blip entirely, so the shop doesn't appear on the map.
- Override the blip with a custom icon, color, size, and label, using the Map Blip editor in
/shop admin. Any field you leave blank falls back to a default: the icon, color, and size fall back to the style's default, and a blank label falls back to the shop's own name (only if the shop somehow had no name would it use the style's default label).
See Configuration for the default blip of each style.
Next Steps
- Configuration — every setting in detail
- Admin — managing shops in-game
- Troubleshooting — if something isn't working