How to Add Converted Cars to the QBCore Vehicle Shop (qb-core vehicles.lua + qb-vehicleshop)

From a gta5-mods.com link to a car players can buy at PDM: convert it, install the resource, add one line to qb-core's shared/vehicles.lua in the current list format, restart in the right order and fix the usual reasons it does not show up.

Published 8 min read4 sections

Most QBCore tutorials start from a car that is already "FiveM ready". This one starts a step earlier, with a vehicle page on gta5-mods.com, and ends with that car for sale in qb-vehicleshop and showing its proper name in qb-garages.

You need: a QBCore server you can restart, file access to its resources folder, and an account with the QBCore admin permission for the test spawn. The examples use a car whose spawn name is gtr35; replace it with yours everywhere.

Note

The snippets below match qb-core 1.3.0 (see Sources). Older qb-core versions used a different layout for the same file. If the entries already in your vehicles.lua do not look like the ones shown here, copy the shape of your file's existing entries instead.

Step 1: Convert the car and note the spawn name

Paste the gta5-mods.com page link into the converter and download the zip. The first 3 conversions are free; after that it is a one-time $15 for unlimited conversions. Add-on cars convert best, see add-on conversions for what that means.

Inside the zip is one resource folder:

text
gtr35/
├── fxmanifest.lua
├── common/     vehicles.meta, handling.meta, carcols.meta, carvariations.meta
└── stream/     gtr35.yft, gtr35_hi.yft, gtr35.ytd, ...

The spawn name is the <modelName> value in common/vehicles.meta, which is also the name of the main .yft file in stream/. Write it down in lowercase. If you would rather not open the file, drop the zip into the Resource Inspector and read it there. More background: spawn name and model hash.

Step 2: Install the resource and ensure it

Create a category folder for your cars and put the resource in it:

text
resources/
└── [cars]/
    └── gtr35/
        ├── fxmanifest.lua
        ├── common/
        └── stream/

Folders in square brackets are categories, not resources, so one line in server.cfg starts every car inside:

cfg
ensure qb-core
ensure [qb]
ensure [standalone]
ensure [cars]

The first three lines are from the QBCore txAdmin recipe and are probably already in your file; only ensure [cars] is new. If you manage the server through txAdmin, installing cars via txAdmin shows where each of these clicks lives.

Step 3: Check that it spawns before touching the framework

Restart the server (or run refresh and then ensure gtr35 in the console), join, and run:

text
/car gtr35

/car is a qb-core admin command. If the car appears with textures, the resource is fine and everything left is configuration. If it does not, stop here: no vehicles.lua entry will fix a resource that is not streaming. Go to the invisible car guide or paste the console output into the Error Analyzer.

Step 4: Add the car to qb-core/shared/vehicles.lua

Open resources/[qb]/qb-core/shared/vehicles.lua. The file is one long list called Vehicles, one entry per line. Add yours inside that list, before its closing } (the one just above QBCore.Shared.VehicleHashes):

lua
    --- Custom cars
    { model = 'gtr35', name = 'GT-R R35', brand = 'Nissan', price = 185000, category = 'sports', type = 'automobile', shop = 'pdm' },
KeyWhat to put there
modelThe spawn name from step 1, lowercase. Everything else looks the car up by this exact string.
nameDisplay name in the shop menu and the garage list.
brandManufacturer. Used as the "make" list when Config.FilterByMake is on in qb-vehicleshop.
priceA number, no quotes.
categoryOne of the categories already used in the file, such as compacts, sedans, suvs, coupes, muscle, sports, sportsclassics, super, offroad, vans, motorcycles.
typeautomobile for cars. The stock file also uses bike, boat, heli and plane.
shopThe key of a shop in qb-vehicleshop's Config.Shops.

You do not write a hash. The loop at the bottom of the file calls joaat(model) for every entry and fills QBCore.Shared.VehicleHashes itself.

To sell the car in more than one shop, use a table: shop = { 'pdm', 'luxury' }. To register the name without selling the car anywhere (a staff or job vehicle), use shop = 'none', as the stock file does for its non-sale vehicles.

Warning

Every entry ends with a comma and every string needs both quotes. One missing comma is a Lua syntax error in a file that qb-core loads at startup, and the whole framework fails to start. If the server breaks right after this edit, look at the line you just added first.

Step 5: Match the shop key to qb-vehicleshop

Open resources/[qb]/qb-vehicleshop/config.lua and look at the keys of Config.Shops. The stock config has pdm, luxury, boats, air and truck. The shop value from step 4 must be one of those keys, spelled the same way.

Two things worth knowing about the stock shops:

  • pdm has ['Type'] = 'free-use': any player can walk in and buy.
  • luxury has ['Type'] = 'managed' and ['Job'] = 'cardealer': a player with that job has to sell the car. Putting your car there and then testing alone looks exactly like "the car is not showing".

Categories need no extra setup. qb-vehicleshop builds a shop's category menu from the category values of the vehicles assigned to that shop.

Step 6: Restart the whole server and buy the car

vehicles.lua is a shared file of qb-core, and qb-vehicleshop and qb-garages read the vehicle list from the core when they start. Restart the whole server instead of single resources. Then walk into the shop, open the vehicle menu, pick the category and find the car by its name. Buy it, store it, and open the garage: the list should show "GT-R R35", not the raw spawn name.

Not showing up? Check these in order

  1. Does /car gtr35 work? If not, it is a resource problem, not a QBCore problem. Check that the folder is under resources/, that ensure [cars] is in server.cfg and that the server console lists the resource as started.
  2. Does model match the spawn name exactly? Compare it with <modelName> in vehicles.meta. Keep it lowercase in both the config and your head; the game hashes model names without regard to case, but the QBCore tables are looked up by the exact string.
  3. Is shop a real key? 'PDM', 'pdm ' or a shop you renamed in Config.Shops all fail silently.
  4. Are you standing in a managed shop without a dealer? See step 5.
  5. Did you edit the right copy? Servers that were moved or updated sometimes have two qb-core folders. The one that counts is the one that is started.
  6. Did you restart everything? Restarting only qb-vehicleshop does not reload qb-core's shared file.
  7. Is the entry inside the list? A line pasted below the final } of Vehicles is a syntax error or is simply ignored.
  8. Garage shows the spawn name instead of the name? qb-garages falls back to the raw model when it finds no vehicles.lua entry for it. The car was probably given to the player under a different spelling than the model key.

The name shows as NULL

The converted resource does not ship a display-name script, so GTA has no text for the car's label and prints NULL wherever a script asks the game for the vehicle name. Open common/vehicles.meta, find the <gameName> value for your car, then add a small client script to the car resource:

lua
-- vehicle_names.lua (inside the car resource)
CreateThread(function()
    -- first argument: the <gameName> value from vehicles.meta
    AddTextEntry('GTR35', 'Nissan GT-R R35')
end)

Then register it in the resource's fxmanifest.lua:

lua
client_script 'vehicle_names.lua'

The Vehicles.meta Generator writes this file for you if you are building the metas from scratch.

FAQ

Do I need to add a hash for the car?

No. In the current format you write model only and qb-core computes the hash. If your file has entries with a hash field, you are on an older qb-core: follow the format your file already uses.

Can I add a new category such as "imports"?

For qb-vehicleshop, yes: the menu shows whatever categories the shop's vehicles carry, so category = 'imports' creates an "imports" entry. Be careful with bikes, boats and aircraft, though. qb-vehicleshop maps a few category names (motorcycles, boats, helicopters, planes) to the vehicle type it spawns, so keep those names for those vehicle kinds.

Where do I change the price later?

In the same line of vehicles.lua, followed by a server restart. Vehicles that players already own are not affected.

I have twenty cars. Do I need twenty resources?

No. Merge them with the Car Pack Builder into one resource, then add twenty lines to vehicles.lua. The Vehicle List tool helps you keep the spawn names straight.

Will updating qb-core delete my cars?

Replacing the qb-core folder replaces shared/vehicles.lua with the stock one. Keep your custom lines together under one comment so they are easy to copy back.

Other frameworks

Running something else? See ESX, Qbox, or the framework-neutral txAdmin install guide. The full tool chain from link to working car is in the complete workflow.

Sources

Checked on 2026-10-10.

Have a gta5-mods.com link ready?

Paste it into the converter and download a FiveM resource with the stream folder, meta files and fxmanifest.lua in place.

  • 3 conversions free, no account needed
  • 2 more free if you leave an email
  • After that: $15 once for unlimited conversions and the Pro tools, no subscription