What goes wrong most often, what it actually means, and what to do about it. Most of these are configuration, not faults — and with Config.Debug = true the F8 console explains a good part of them on its own. Turn it on before opening a ticket, and off again afterwards.
Installation and Access#
SQL errors on start, or placed machines are not saved
The qs_vendingmachines table was never imported, or oxmysql is not running. Run [sql]/qs_vendingmachines.sql in your database and make sure ensure oxmysql comes first in server.cfg. Missing ownership columns on an older table are added automatically — nothing to re-import.
The resource stops on start with a framework error
No supported framework was running when it started, so it found no bridge to load. Move your framework's ensure above ensure qs-vendingmachine-creator, or set Config.Framework by hand — see Integrations.
"Using standalone inventory" repeats in the console
No supported inventory was detected, so the creator has no item list. The inventory starts after this resource, or has been renamed. Fix the order in server.cfg or set Config.Inventory by hand.
"You do not have permission to do this" on /vendingcreator
The player is not a framework admin — ESX admin or superadmin; QBCore and QBox admin, god or the command ace — and their job and grade are not in Config.CreatorJobs.
The creator fails for a job with a grade set
grade in Config.CreatorJobs is a list. Write grade = { 4 } — or { 3, 4 } — rather than grade = 4, and false for every grade.
The creator does not open
Check the F8 console first. A placement left running is cancelled the moment the creator opens, so trying again usually works. If the creator's item list is empty, the inventory was not detected — see the line above about the standalone inventory.
Buying and Products#
Players pay but get nothing
The product is not declared in your framework's or inventory's item list, so there is nothing to hand over. Declare it as shown in Installation → The Products. On ESX with an inventory that reads the items table, it must exist in that table — a Lua file alone is not enough.
Products show the default icon
The picture is missing from your inventory's image folder, or misnamed. Copy the icons from [img]/ and rename expresso.png to espresso.png. On ESX the items table has no image column, so the owner's panel always shows a default picture there — expected, and harmless.
Editing the config does not change a placed machine
Correct behaviour. A placed machine keeps its own product list in the database; Config.MachineTypes is only the template and the list for map machines. Edit that machine in the creator.
A vending machine on the map does not respond
Its model is not in Config.MachineTypes — GTA has several look-alike models. Add a machine type with that prop and it starts selling. Map machines are picked up within a couple of seconds of walking near them.
A machine only offers itself for sale
Correct behaviour. A machine flagged For sale sells nothing until a player buys it. Turn the switch off in the creator to make it an ordinary machine.
Owned Machines#
The owner sees "Use" instead of "Manage"
Ownership belongs to the character that bought it. Playing another character of the same player shows the machine as somebody else's. Right after joining, give it a couple of seconds: the character is recognised once the framework has loaded it.
Restock is refused
The owner must carry the units — restocking moves items from their own inventory. A slot holds at most Config.Ownable.maxStockPerItem units; at that point the panel says the slot is already full.
The owner cannot add a new product
Correct behaviour. Which products a machine sells is set in the creator; the owner restocks and reprices them. Add the product there — the stock already inside is kept.
There is no "Sell machine" button
Config.Ownable.resaleRatio is 0, or the machine was put on sale at a price of 0 — either way the refund would be nothing.
The stock disappeared after selling the machine back
Correct behaviour. Selling back pays the refund plus uncollected earnings and empties the machine for the next buyer; stock inside is not returned.
Robberies#
No [G] robbery prompt
Set Config.Debug = true and stand next to the machine: the F8 console prints the reason every ten seconds. It is one of these:
Config.Robbery.enabledis off.The machine has Can be robbed off in the creator.
You own it, and
allowSelfRobberyis off.It is still on cooldown from a recent attempt.
You are not carrying
Config.Robbery.item.
Machines that came with the map can never be robbed — only placed ones.
"This machine is empty"
An owned machine with no stock left has nothing to steal. The prompt still shows, because a thief only finds out by trying.
Using the lockpick from the inventory does nothing
Config.Robbery.useItem is off by default, so the robbery starts with [G]. If you turned it on and it still does nothing, another resource registered the same item after this one — the last one wins. Turn it off again and start the robbery from that resource with the event in Commands and Exports.
The police get no alert
The alert only goes out alert.chance% of the time (70 by default), only to online players whose job is in alert.jobs, and at the start of the robbery. If AlertPolice was replaced with a dispatch call, an error in it is printed in the server console.
Cooldowns reset after a restart
Correct behaviour. Cooldowns are kept in memory, so restarting the resource clears them.
The Phone App#
VendGo says the vending system is not running
The resource is stopped, or its folder was renamed. The phone looks for it as qs-vendingmachine-creator exactly.
VendGo is not in the App Store
The phone-vendingmachine addon is not running. It needs both qs-smartphone and qs-vendingmachine-creator started, and prints VendGo store listing registered when it succeeds. The app is installed from the App Store, not placed on the home screen.
Buying from the phone fails
Config.Phone.allowRemotePurchase is off — the app can still browse and set waypoints — or the player lacks the money in the machine's own payment account, which is not always cash.
Texts and Languages#
Some texts are in English
Your translation is missing those keys — usually after an update added new ones — and they fall back to English rather than breaking. Copy them from locales/en.json into your language file and translate them.
"Locale … does not exist, falling back to default"
Config.Locale names a file that is not in locales/. Use the file name without .json — 'es', not 'es-ES'.
Still stuck? Open a ticket and include your framework and its version, your inventory, and both consoles — F8 and server — with
Config.Debug = true, taken while reproducing the problem.



