> For the complete documentation index, see [llms.txt](https://doc.var-fivem.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.var-fivem.com/coins-shop/configuration/products.md).

# Products

All products live in `shared/config.lua` under `Shop.Products`. Each product type has its own schema. The `id` of a product **must be unique** across all categories — it is used for cart, stock, promos, gifts, and spotlight references.

### Vehicle

```lua
{
  id = "rebla",
  name = "Rebla GTS",
  price = 4500,
  type = "car",            -- "car" | "bike" | "boat" | "plane" | "heli"
  brand = "Pfister",
  img = "https://docs.fivem.net/vehicles/rebla.webp",
  previewImg = "images/preview/rebla.mp4", -- optional video / image preview
  special = false           -- optional badge highlight
}
```

### Weapon

```lua
{
  id = "WEAPON_AK4K",
  name = "AK-4K",
  price = 1500,
  wtype = "ar",             -- "ar" | "smg" | "sniper" | "shotgun" | "pistol" | "melee"
  rarity = "common",        -- "common" | "rare" | "epic" | "legendary"
  img = "...",
  stats = {
    dmg = 30, rate = 80, acc = 65, recoil = 40
  }
}
```

Stats are displayed on cards if `WeaponStatsOnCards = true` in config.

### Skin (weapon skin)

```lua
{
  id = "SKIN_WEAPON_NEVA",
  name = "Neva Glowing In Night",
  price = 450,
  weaponFor = "WEAPON_NEVA",
  rarity = "epic",
  img = "...",
  variants = { "black", "red" } -- optional color variants
}
```

### Pack

A pack bundles multiple items at a discount. Items are referenced by `id`.

```lua
{
  id = "pack_explorer",
  name = "Explorer Pack",
  price = 7800,
  save = 18, -- shown as "-18%" badge
  img = "images/pack.png",
  contents = {
    { kind = "vehicle", ref = "rebla" },
    { kind = "weapon",  ref = "WEAPON_AK4K" },
    { kind = "skin",    ref = "SKIN_WEAPON_NEVA" }
  }
}
```

When delivered, the pack is unpacked recursively and each child item runs through its own delivery handler.

### Subscription

```lua
{
  id = "sub_monthly",
  name = "Monthly Subscription",
  price = 2500,
  billing = "monthly",      -- "monthly" | "permanent"
  durationDays = 30,        -- ignored when billing = "permanent"
  description = "Temporary premium benefits and monthly bonuses.",
  perks = {
    "Queue priority in-game",
    "10% bonus on Coin purchases",
  },
  badge = "Monthly",
  accent = "#3fd4b3",
  image = "/images/var.webp"
}
```

### Vehicle upgrades

Optional upgrades shown on vehicle cards (full performance, custom plate, etc.):

```lua
VehicleOptions = {
  Upgrades = {
    perf  = { Enabled = true, Price = 350 },
    plate = { Enabled = true, Price = 150 },
  }
}
```

The upgrade price is added on top of the base vehicle price at checkout.

### Categories visibility

Hide a whole category from the menu:

```lua
Categories = {
  Home = true,
  Ranks = true,
  Vehicles = true,
  Weapons = true,
  Cosmetics = true,
  Subscriptions = true,
  Packs = true,
  Account = true,
  Gifts = true
}
```

### Loyalty tiers

Players are ranked by total Coins spent. Define your tiers:

```lua
Loyalty = {
  DefaultTier = "Rookie",
  Tiers = {
    { name = "Rookie",  threshold = 0,     privileges = { "..." } },
    { name = "Bronze",  threshold = 1000,  privileges = { "..." } },
    { name = "Silver",  threshold = 2500,  privileges = { "..." } },
    { name = "Gold",    threshold = 6000,  privileges = { "..." } },
    { name = "Diamond", threshold = 12000, privileges = { "..." } },
    { name = "Mythic",  threshold = 20000, privileges = { "..." } },
  }
}
```
