Players Pay But Get Nothing#
Cause: the item is not declared in your framework's item list, so the inventory has nothing to give.
Solution: declare the product in your inventory — see the Inventory Items guide. On ESX, remember the item must exist in the items SQL table, not only in shared/items.lua.
No [G] Robbery Prompt#
Cause: one of the robbery checks is failing.
Solution: set Config.Debug = true and stand next to the machine. The F8 console prints the exact reason:
The machine is not flagged as robbable
The machine is on cooldown
You are the owner (
allowSelfRobbery = false)You are not carrying
Config.Robbery.item
The Creator Does Not Open#
Cause: a permission failure, or a placement left running from a previous session.
Solution: check the F8 console. If a placement was still active, opening the creator now cancels it automatically — try again. Otherwise confirm you are an admin or that your job is listed in Config.CreatorJobs.
Items Show The Default Icon#
Cause: the image is missing from your inventory's image folder, or misnamed.
Solution: copy the icons from [img]/ into the right folder, and rename expresso.png to espresso.png.
Inventory | Folder |
|---|---|
|
|
|
|
|
|
On ESX, the
itemstable has no image column, so the management panel always falls back todefault.png. This is expected and does not affect buying or stock.
Editing The Config Doesn't Change A Placed Machine#
Cause: machines store their own product list in the database when they are placed.
Solution: this is expected behaviour. Edit those machines from the creator — Config.MachineTypes only provides the template used when creating a new one.
The Lockpick Does Nothing When Used#
Cause: another resource also registers the lockpick as a usable item, and the last one to register it wins — vehicle lockpicking scripts usually do this.
Solution: leave Config.Robbery.useItem = false and start the robbery with the [G] prompt instead.
SQL Errors On Startup#
Cause: the machines table was not imported, or oxmysql is not running.
Solution: execute [sql]/qs_vendingmachines.sql in your database manager and make sure oxmysql starts before the resource.
If you are updating, the ownership columns are added automatically on startup — there is nothing to re-import.
Missing Texts In The UI#
Cause: your locale file is incomplete or outdated after an update.
Solution: missing keys fall back to English automatically, so this is a warning, not a failure. Copy the missing key from locales/en.json into your language file.
Enabling Debug Mode#
If none of the above solves your issue, enable debug mode in config/main.lua:
Config.Debug = trueThe F8 console will then explain what the resource is doing. Turn it off in production.



