Advanced Shops System | [QBCore / ESX / QBOX]

:camera: Preview Photos



:gear: Features:

  • :gun: Automatic License System – Built-in weapon license verification for Ammu-Nation purchases, ensuring players cannot buy weapons illegally without the proper authorization.
  • :credit_card: Flexible Payment Options – Fully configurable payment methods per shop, allowing cash, bank, or custom payment setups depending on your server’s economy.
  • :world_map: Easy Plug-and-Play Setup – Pre-configured shop locations across the map with customizable blips, NPC vendors, and target zones supporting both ox_target and qb-target.
  • :satellite: Webhook Purchase Logging – Detailed Discord webhook logs for every transaction, including player information, purchased items, quantities, and payment method used.
  • :gear: Fully Customizable Configuration – Simple and clean config file to add or modify shops, products, categories, prices, and locations with ease.

:camera: Preview Video

Watch

:package: Buy Here

Escrowed $15.99

Open Source $29.99


Preview config.lua
Config = {}

Config.Framework = 'qb' -- Options: 'qb', 'qbx', or 'esx'
Config.Target = 'ox'    -- Options: 'qb', 'ox'
Config.Inventory = 'ox' -- Options: 'qb', 'ox', 'qs', 'codm', 'tgiann', 'origen'

Config.Categories = {
    ['food']        = { label = 'Food', icon = 'fa-solid fa-burger' },
    ['drinks']      = { label = 'Drinks', icon = 'πŸ₯€' },
    ['alcohol']     = { label = 'Alcohol', icon = '🍷' },
    ['electronics'] = { label = 'Tech', icon = 'πŸ“±' },
    ['tools']       = { label = 'Tools', icon = 'πŸ”§' },
    ['medical']     = { label = 'Medical', icon = 'πŸ’Š' },
    ['ammo']        = { label = 'Ammo', icon = 'πŸ“¦' },
    ['pistols']     = { label = 'Pistols', icon = 'πŸ”«' },
    ['rifles']      = { label = 'Rifles', icon = 'πŸ’€' },
    ['illegal']     = { label = 'Illegal', icon = '😈' },
}

Config.Shops = {
    ["market_247"] = {
        label = "Market",
        themeLabel = "24/7",
        theme = "green",
        icon = "fa-solid fa-basket-shopping",
        iconColor = "green",
        ped = "mp_m_shopkeep_01",
        scenario = "WORLD_HUMAN_STAND_MOBILE",
        paymentMethods = {
            cash = true,
            bank = true
        },
        locations = {
            { coords = vector4(372.75, 327.15, 103.57, 255.25), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(549.2, 2670.54, 42.16, 99.65), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(1959.71, 3740.67, 32.34, 302.18), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(2677.34, 3279.82, 55.24, 332.05), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(1728.2, 6415.92, 35.04, 245.67), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(24.45, -1346.52, 29.5, 271.66), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(-3243.06, 1000.03, 12.83, 354.2), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(-3039.75, 584.32, 7.91, 18.97), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
            { coords = vector4(2556.48, 380.88, 108.62, 359.25), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "24/7 Market" },
        },
        products = {
            { name = 'burger', label = 'Burger', weight = 500, price = 15, category = 'food' },
            { name = 'sandwich', label = 'Sandwich', weight = 350, price = 10, category = 'food' },
            { name = 'water_bottle', label = 'Water Bottle', weight = 500, price = 5, category = 'drinks' },
            { name = 'cola', label = 'Cola', weight = 500, price = 6, category = 'drinks' },
            { name = 'sprunk', label = 'Sprunk', weight = 500, price = 6, category = 'drinks' },
            { name = 'coffee', label = 'Coffee', weight = 400, price = 10, category = 'drinks' },
            { name = 'phone', label = 'Mobile Phone', weight = 700, price = 500, category = 'electronics' },
            { name = 'radio', label = 'Radio', weight = 600, price = 200, category = 'electronics' },
            { name = 'binoculars', label = 'Binoculars', weight = 800, price = 50, category = 'tools' },
            { name = 'bandage', label = 'Bandage', weight = 100, price = 50, category = 'medical' },
        }
    },
    ["market_ltd"] = {
        label = "Gasoline",
        themeLabel = "LTD",
        theme = "blue",
        icon = "fa-solid fa-gas-pump",
        iconColor = "blue",
        ped = "mp_m_shopkeep_01",
        scenario = "WORLD_HUMAN_STAND_MOBILE",
        paymentMethods = {
            cash = true,
            bank = false
        },
        locations = {
            { coords = vector4(1164.81, -323.56, 69.21, 103.82), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "LTD Gasoline" },
            { coords = vector4(-706.07, -914.54, 19.22, 85.86), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "LTD Gasoline" },
            { coords = vector4(-47.42, -1758.68, 29.42, 49.11), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "LTD Gasoline" },
            { coords = vector4(-1819.54, 793.52, 138.09, 128.84), enableBilp = true, sprite = 52, color = 2, scale = 0.8, label = "LTD Gasoline" },
        },
        products = {
            { name = 'water_bottle', label = 'Water Bottle', weight = 500, price = 5, category = 'drinks' },
            { name = 'coffee', label = 'Coffee', weight = 400, price = 10, category = 'drinks' },
            { name = 'sandwich', label = 'Sandwich', weight = 350, price = 12, category = 'food' },
            { name = 'burger', label = 'Burger', weight = 500, price = 15, category = 'food' },
            { name = 'repairkit', label = 'Repair Kit', weight = 2500, price = 300, category = 'tools' },
            { name = 'advancedrepairkit', label = 'Advanced Repair Kit', weight = 3500, price = 500, category = 'tools' },
            { name = 'cleaningkit', label = 'Cleaning Kit', weight = 1500, price = 50, category = 'tools' },
            { name = 'radio', label = 'Radio', weight = 600, price = 200, category = 'electronics' },
            { name = 'lighter', label = 'Lighter', weight = 50, price = 2, category = 'tools' },
        }
    },
    ["market_liquor"] = {
        label = "Liquor",
        themeLabel = "Rob's",
        theme = "orange",
        icon = "fa-solid fa-wine-bottle",
        iconColor = "orange",
        ped = "mp_m_shopkeep_01",
        scenario = "WORLD_HUMAN_STAND_MOBILE",
        paymentMethods = {
            cash = true,
            bank = false
        },
        locations = {
            { coords = vector4(-2966.47, 390.28, 15.04, 87.8), enableBilp = true, sprite = 93, color = 2, scale = 0.8, label = "Rob's Liquor" },
            { coords = vector4(-1222.65, -908.82, 12.33, 33.73), enableBilp = true, sprite = 93, color = 2, scale = 0.8, label = "Rob's Liquor" },
            { coords = vector4(-1485.69, -378.66, 40.16, 132.93), enableBilp = true, sprite = 93, color = 2, scale = 0.8, label = "Rob's Liquor" },
            { coords = vector4(1134.13, -981.71, 46.42, 277.64), enableBilp = true, sprite = 93, color = 2, scale = 0.8, label = "Rob's Liquor" },
            { coords = vector4(1166.64, 2710.8, 38.16, 182.51), enableBilp = true, sprite = 93, color = 2, scale = 0.8, label = "Rob's Liquor" },
            { coords = vector4(1391.94, 3606.09, 34.98, 198.16), enableBilp = true, sprite = 93, color = 2, scale = 0.8, label = "Rob's Liquor" },
        },
        products = {
            { name = 'beer', label = 'Beer', weight = 500, price = 10, category = 'alcohol' },
            { name = 'wine', label = 'Wine', weight = 750, price = 25, category = 'alcohol' },
            { name = 'vodka', label = 'Vodka', weight = 750, price = 50, category = 'alcohol' },
            { name = 'whiskey', label = 'Whiskey', weight = 750, price = 60, category = 'alcohol' },
            { name = 'chocolate', label = 'Chocolate Bar', weight = 250, price = 6, category = 'food' },
            { name = 'lighter', label = 'Lighter', weight = 50, price = 2, category = 'tools' },
            { name = 'water_bottle', label = 'Water Bottle', weight = 500, price = 5, category = 'drinks' },
        }
    },
    ["ammunation"] = {
        label = "ation",
        themeLabel = "Ammun",
        theme = "red",
        icon = "fa-solid fa-gun",
        iconColor = "red",
        ped = "s_m_y_ammucity_01",
        scenario = "WORLD_HUMAN_GUARD_STAND",
        paymentMethods = {
            cash = true,
            bank = false
        },
        locations = {
            { coords = vector4(23.11, -1105.65, 29.8, 160.22), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(-661.6, -933.52, 21.83, 178.9), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(809.5, -2159.04, 29.62, 359.85), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(841.8, -1035.3, 28.19, 359.84), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(253.7, -51.15, 69.94, 68.48), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(-331.14, 6085.51, 31.45, 225.83), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(-1304.25, -395.35, 36.7, 73.81), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(-1118.46, 2700.21, 18.55, 224.06), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(2567.29, 292.52, 108.73, 359.18), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(-3173.27, 1088.96, 20.84, 248.57), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
            { coords = vector4(1692.65, 3761.44, 34.71, 226.62), enableBilp = true, sprite = 110, color = 1, scale = 0.8, label = "Ammu-Nation" },
        },
        products = {
            { name = 'weapon_pistol', label = 'Pistol', weight = 2000, price = 2500, category = 'pistols', requiresLicense = true },
            { name = 'weapon_combatpistol', label = 'Combat Pistol', weight = 2200, price = 3000, category = 'pistols', requiresLicense = true },
            { name = 'weapon_snspistol', label = 'SNS Pistol', weight = 1800, price = 2000, category = 'pistols', requiresLicense = true },
            { name = 'weapon_vintagepistol', label = 'Vintage Pistol', weight = 2300, price = 3500, category = 'pistols', requiresLicense = true },
            { name = 'pistol_ammo', label = 'Pistol Ammo', weight = 200, price = 50, category = 'ammo' },
            { name = 'shotgun_ammo', label = 'Shotgun Ammo', weight = 300, price = 60, category = 'ammo' },
            { name = 'armor', label = 'Body Armor', weight = 5000, price = 1000, category = 'tools' },
            { name = 'weapon_knife', label = 'Knife', weight = 800, price = 200, category = 'tools' },
            { name = 'weapon_bat', label = 'Baseball Bat', weight = 1200, price = 150, category = 'tools' },
            { name = 'weapon_flashlight', label = 'Flashlight', weight = 400, price = 100, category = 'tools' },
            { name = 'parachute', label = 'Parachute', weight = 8000, price = 500, category = 'tools' },
        }
    },
    ["blackmarket"] = {
        label = "Market",
        themeLabel = "Black",
        theme = "red",
        icon = "fa-solid fa-user-secret",
        iconColor = "red",
        ped = "g_m_m_chicold_01",
        scenario = "WORLD_HUMAN_DRUG_DEALER",
        paymentMethods = {
            cash = true,
            bank = false
        },
        locations = {
            { coords = vector4(2471.15, 1572.7, 32.72, 296.26), enableBilp = true, sprite = 500, color = 2, scale = 0.8, label = "Black Market" },
        },
        products = {
            { name = 'weapon_assaultsmg', label = 'Assault SMG', weight = 3500, price = 25000, category = 'rifles' },
            { name = 'weapon_compactrifle', label = 'Compact Rifle', weight = 4000, price = 35000, category = 'rifles' },
            { name = 'weapon_heavypistol', label = 'Heavy Pistol', weight = 2400, price = 5000, category = 'pistols' },
            { name = 'pistol_ammo', label = 'Pistol Ammo', weight = 200, price = 100, category = 'ammo' },
            { name = 'smg_ammo', label = 'SMG Ammo', weight = 250, price = 150, category = 'ammo' },
            { name = 'rifle_ammo', label = 'Rifle Ammo', weight = 300, price = 200, category = 'ammo' },
            { name = 'armor', label = 'Body Armor', weight = 5000, price = 2000, category = 'tools' },
            { name = 'lockpick', label = 'Lockpick', weight = 300, price = 500, category = 'illegal' },
            { name = 'advancedlockpick', label = 'Advanced Lockpick', weight = 500, price = 1000, category = 'illegal' },
            { name = 'phone', label = 'Mobile Phone', weight = 700, price = 200, category = 'electronics' },
        }
    }
}

:handshake: Support & Community

Need help, updates, or want to suggest features?
Join the AP5 Studios Community on Discord
:point_right: Click here to join: AP5 Studios


Other Releases

Additional Info

Code Access No
Subscription-based No
Lines of Code ~1500
Requirements None
Support Yes