QBCore economy · persistence

QBCore Money Not Saving? Fix Cash and Bank Persistence

When QBCore cash or bank values reset, the bug is usually save timing, a conflicting money script, a failed database update or a client-side trust mistake.

Updated September 2026 · 7 min read · Stellar AI
Use this prompt in Stellar AI:

“My QBCore money is not saving. Here is the money code, server console output, database table and the steps that reset the balance. Diagnose the most likely cause first, then give me the smallest safe patch and a test checklist.”

Fix this with Stellar AI →

Prove where the value changes

Money persistence problems need a chain-of-evidence approach. First confirm that the server value changes. Then confirm that the framework save path runs. Then confirm that the database row changes. Finally, reconnect and check that the value loads from the database instead of a default. If you skip one of those steps, you may patch the wrong layer. A script can show a new balance on screen while the database still contains the old value.

Do not trust client events to set final cash or bank values. Economy actions should call the correct server-side QBCore player functions and validate why the player is gaining or losing money. If a client can directly tell the server “set my cash to 100000,” the issue is not only persistence; it is an exploit risk. The server should verify job rewards, item sales, shop purchases and admin actions before changing money.

server balance before:
server balance after:
database row after save:
reconnect loaded value:
resource that changed money:

Look for conflicting resources

Many servers run multiple economy-related resources: jobs, shops, phone banking, invoices, society accounts, starter rewards, admin tools and custom scripts. One resource may update money correctly, while another reloads or overwrites player data after it. Search for cash, bank and money functions across custom resources. Pay attention to old scripts that write directly to the database instead of using the framework player object.

If the database update fails, inspect the console for oxmysql errors. A missing column, wrong database, bad JSON field or old schema can stop the save. If no database error appears, check whether the save function is called when the player unloads, disconnects or the server restarts. Timing matters. A value changed right before a crash may never persist if the save path does not run.

Test one transaction at a time

Use one test player and one small amount. Add £10 or remove £10 through the exact flow that fails. Do not test a whole job loop until the simplest transaction works. After changing the money, leave, rejoin and confirm the value. Then restart the resource or server and confirm again. If it passes simple tests but fails in a job, the job logic may be changing a separate value or using an invalid player object.

A good patch should preserve server validation, use framework functions, avoid direct client-controlled values and include a persistence test. Ask Stellar AI to compare the money-changing code with your save path and database errors, then make the smallest safe change.

Fix the save path

Paste the money-changing code, database error and reconnect test results into Stellar AI. Ask for a server-safe fix and a persistence checklist.

Open Stellar AI free →