Migrating
How lation banking replaces Renewed-Banking, qb-banking, qb-management and okokBanking, how their balances come across, and which of their exports and events it answers.
lation banking stands in for four resources. Its manifest provides their names, it answers their exports and events, and it reads their balances on start. Scripts written against any of them keep working without an edit.
| Old resource | Remove it? | Exports answered | Balances read |
|---|---|---|---|
Renewed-Banking | Yes | Yes | bank_accounts_new |
qb-banking | Yes | Yes | bank_accounts |
okokBanking | Yes | Yes | okokbanking_societies |
qb-management | Can stay | Yes | management_funds |
esx_addonaccount | Stays | Not needed | addon_account_data, only while esx_addonaccount is not running |
esx_society | Stays, unless you run lation jobs | No | None |
Personal balances are never imported or touched: they are your framework's own bank money, and they read the same before and after the switch.
Switching
Stop the server.
Delete or rename the old bank's folder (Renewed-Banking, qb-banking or okokBanking). Leave its database tables alone: lation banking reads them and never writes to them, so you can go back.
Install lation banking as on the overview, ensured before anything that uses society money.
Start the server and read the console. If an old bank's folder is still in your resources, it says so on every start:
[lation_banking] Renewed-Banking is still installed alongside lation_banking. Delete or rename its folder so every script reaches one bank.If the console printed YOUR SOCIETY BALANCES WERE NOT IMPORTED, run /bankadmin and choose on the dashboard (below).
How balances come across
On every start, until an import has been taken or dismissed, lation banking looks for the tables above. A table counts only if it has the columns that bank uses and at least one account above zero.
- One old bank with money, and lation banking holds none of its own: it is imported straight away and the console prints
imported N account(s) from <bank>. - More than one old bank with money, or lation banking already holds money: nothing is imported. The console prints a
YOUR SOCIETY BALANCES WERE NOT IMPORTEDbanner with each bank's account count, total and a few of its accounts, and the/bankadmindashboard shows the same list. Press Import on the one your server was really using, or dismiss the card if your balances are already right. Either choice is remembered, and the tables are read again when you press it.

An import sets each account to what the old bank says it holds and writes the difference into its history as Imported from <bank>, so you can always see where a balance came from. Old transaction history is not imported, savings accounts are never touched, and a job or gang account is filled only if that job or gang still exists in your framework.
What comes across from each:
From bank_accounts_new: the balance, the members (auth) and the frozen flag. An account with a creator was opened by a player and becomes a shared account under the same id, owned by its creator.
From bank_accounts: the balance and the members (users). An account of type shared becomes a shared account owned by its citizenid; job and gang accounts fill the society account of the same name.
From management_funds: each job's and gang's balance.
From okokbanking_societies: each society's balance.
On ESX, addon_account_data is read for its society_* rows only when esx_addonaccount is not running. While it runs, the balances stay in it and there is nothing to import; see ESX.
What keeps working
Each bank's exports are answered under its own name, so exports['Renewed-Banking']:getAccountMoney('police') reaches lation banking. Exports a script calls with a society name accept the job or gang name, or the same with a society_ prefix (see account names).
| Export | What lation banking does |
|---|---|
handleTransaction(account, title, amount, message, issuer, receiver, transType, transID) | Writes the line into the account's history (the caller already moved the money). transType withdraw is money out, anything else money in. Returns Renewed's transaction table. |
getAccountMoney(account) | The balance, or false when there is no such account |
addAccountMoney(account, amount) | Credits the account; false when there is no such account |
removeAccountMoney(account, amount) | Debits it; false when the balance can't cover it or the account is frozen |
GetJobAccount(jobName) | Renewed's account table (id, type, name, amount, frozen, auth, creator), or nil |
CreateJobAccount(job, initialBalance) | Opens a society account for job.name, named job.label. One that exists is returned as it is. |
addAccountMember(account, member) | Adds a member with deposit, withdraw and transfer |
removeAccountMember(account, member) | Removes a member |
getAccountTransactions(account) | The newest 100 lines in Renewed's shape, or false for an account nobody has |
changeAccountName(account, newName) | Changes the display name. The id stays, so every existing reference keeps working. |
The money exports answer for the accounts the bank keeps (society, shared, savings and business); a player's identifier gets false, since personal money is the framework's. Renewed-Banking also stood in for qb-management, and those exports are answered under the qb-management name.
| Client event | What lation banking does |
|---|---|
Renewed-Banking:client:openBankUI | Opens the bank, or the ATM view when passed { atm = true } |
Renewed-Banking:client:sendNotification | Shows the message as a notification |
On ESX, Renewed also stood in for esx_society. lation banking does not: there the society balance lives in esx_addonaccount, which esx_society reads and writes directly, so with lation banking alone the real esx_society stays installed and keeps working. With lation jobs, remove esx_society: lation jobs stands in for it. See ESX.
| Export | What lation banking does |
|---|---|
GetAccount(name), GetGangAccount(name) | qb-banking's row: account_name, account_balance, account_type (job, gang or shared), citizenid, users; nil when there is none |
GetAccountBalance(name) | The balance, or 0 |
AddMoney(name, amount, reason), AddGangMoney(...) | Credits the account, opening a society account first if there is none. The reason is kept as the history note. |
RemoveMoney(name, amount, reason), RemoveGangMoney(...) | Debits it; false when the balance can't cover it |
CreateJobAccount(name, balance), CreateGangAccount(...) | Opens a society account. One that exists keeps its balance. |
CreatePlayerAccount(playerId, accountName, balance, users) | Opens a shared account under accountName, owned by that player, with the listed members; false when the name is taken |
CreateBankStatement(playerId, account, amount, reason, statementType, accountType) | Writes a line into the history; the caller already moved the money. accountType player writes it on the player's own account, and statementType deposit is money in. |
| Export | What lation banking does |
|---|---|
GetAccount(name), GetGangAccount(name) | The society balance, or 0 |
AddMoney(name, amount), AddGangMoney(...) | Credits it, opening the society account first if needed |
RemoveMoney(name, amount), RemoveGangMoney(...) | Debits it; false when the balance can't cover it |
qb-management itself can stay installed: it is a boss menu and a stash and holds no money. lation jobs replaces its boss menu if you want that too.
| Export or event | What lation banking does |
|---|---|
GetAccount(society) | The society balance, or 0 |
AddMoney(society, value) | Credits it; false when there is no such account |
RemoveMoney(society, value) | Debits it; false when the balance can't cover it |
AddTransaction(identifier, transactionData, source) | Writes a history line for a move the caller already made, from value, type, reason, sender_name and receiver_name. A type of withdraw, transfer_out or expense is money out. |
GetPlayerTransactions(identifier, limit) | The newest lines, up to 1000 when limit is left out |
Server event okokBanking:AddNewTransaction | Writes both sides of a player-to-player transfer another script already made: (receiverName, receiverIdentifier, senderName, senderIdentifier, value, reason). A local server event; clients can't fire it. |
Client event okokBanking:OpenATM | Opens the ATM view |
Every move made through these exports lands in the account's history and names the calling resource in the admin ledger. A line written for a move the framework already tracked (see Track other scripts' bank moves) fills in that line instead of adding a second. They skip the checks made for players, such as transfer limits and Hooks.canTransact.
Account names
Other banks name society accounts after the job or gang. lation banking does the same, and strips a society_ prefix, so police, society_police and an ESX script asking for society_police all reach the same account.
ESX
With esx_addonaccount running, each society balance stays in its society_<job> vault and lation banking is the bank over it: on every start it reads each vault's balance, and it opens a vault account for a job that has none. Job scripts that read and write the vault directly keep working, and their moves show up in the society's history as Payment received or Payment. A write that fires no event, such as esx_society's money-wash payout, is caught within a minute, and before any payment from that account. Freezing a society account in /bankadmin only blocks money moved through lation banking.
Keep esx_addonaccount and esx_society when lation banking runs on its own. With lation jobs, remove esx_society and set nothing: lation jobs provides it, so the scripts that need it still start and find their society. Keep esx_addonaccount either way, since the money stays in it, and esx_datastore if a job uses a society garage.
ESX has no gangs, so there are no gang accounts.
Still stuck? Ask in our Discord: the people who write the scripts answer.
Last updated
lation banking
lation banking is a bank for FiveM with personal, savings, shared, society and business accounts, bills between players and businesses, loans, ATMs and a register, set up in game and answering the exports of the bank it replaces.
Admin panel and commands
The lation banking commands and who can use them, and what the /bankadmin panel shows and does, page by page.