Commands#
Banking Creator registers a single command. Everything else a player does is reached in the world — counters, tellers, ATMs, the boss laptop and branch doors.
Command / key | Where | Description |
|---|---|---|
| In game | Opens the bank creator. Renamed with |
| Counter, teller, ATM | Opens the bank or the ATM, when |
| Boss laptop | Opens Manage for the owner, the staff and creator admins. |
| Branch door | Locks or unlocks it, for the owner and ranks with the |
Server Exports#
How another resource drives the bank — a job paying wages, a heist draining a company, a phone app reading a mortgage. identifier is the framework's character id: the ESX identifier or the QBCore citizenid.
AddTransaction — write a line into a player's history
Adds an entry to the history in the Overview tab without moving any money. The icon is a Font Awesome class; a piggy-bank icon reads as money in, money-check or wallet as money out, exchange as a transfer. The first number in the text is shown as the amount.
exports['qs-banking']:AddTransaction(identifier, 'Paycheck', 'fa-solid fa-piggy-bank', 'Weekly pay: 2500')Company accounts — GetSocietyMoney, AddSocietyMoney, RemoveSocietyMoney
Read and move a job's shared account. The account is opened on first use when Config.Society.autoCreate is on. Every movement is written to the account's log with the reason. RemoveSocietyMoney returns false and takes nothing when the balance is short.
local balance = exports['qs-banking']:GetSocietyMoney('police')
exports['qs-banking']:AddSocietyMoney('mechanic', 1500, 'Repair invoice #204')
if exports['qs-banking']:RemoveSocietyMoney('police', 5000, 'Weekly wages') then
-- paid
end
local account = exports['qs-banking']:GetSocietyAccount('police', 'job')
-- { id, name, label, type, balance, roles, created }Each takes an optional last argument, 'job' (default) or 'gang'. For scripts written against qb-management, the same functions also answer to GetAccountBalance, AddMoney and RemoveMoney.
Gang accounts — AddGangMoney, RemoveGangMoney, GetGangAccount
exports['qs-banking']:AddGangMoney('ballas', 20000, 'Drug run')
exports['qs-banking']:RemoveGangMoney('ballas', 5000, 'Weapons')
local gang = exports['qs-banking']:GetGangAccount('ballas')Gang accounts appear in the Company tab on QBCore with Config.Society.gangs on.
GetPlayerLoans and GetHousingMortgages — credit
GetPlayerLoans returns the player's pending, active and defaulted bank credit, split into loans and mortgages. Each entry carries id, bankId, status, amount, total, paid, remaining, instalment, missed, nextPayment and its collateral.
local credit = exports['qs-banking']:GetPlayerLoans(identifier)
-- credit.loans, credit.mortgages
local housing = exports['qs-banking']:GetHousingMortgages(identifier)
-- { { house, remaining, instalment, instalmentsLeft }, ... } — qs-housing's own creditGetHeldAmount — deposit screening
How much of the player's balance is frozen right now. Subtract it before letting another script spend from the bank account, or the player could pay with money the bank is still holding.
local held = exports['qs-banking']:GetHeldAmount(identifier)
local spendable = bankBalance - heldGetBanks and GetAtms — locations
Every branch and every creator-placed ATM, as loaded from the database. A branch carries id, name, label, displayName, coords (with w as heading), blip, ped, owner, ownerName, forSale, price, fee, treasury, employees and upgrades.
for _, bank in ipairs(exports['qs-banking']:GetBanks()) do
print(bank.id, bank.displayName or bank.label, bank.owner)
end
local atms = exports['qs-banking']:GetAtms()IsRealEstateReady and GetHouseBuyers — property banking
if exports['qs-banking']:IsRealEstateReady() then
local buyers = exports['qs-banking']:GetHouseBuyers()
-- { { id, label, ownerName, treasury }, ... } owned branches with the Real Estate licence
endClient Exports#
CreateCard — use a card item from the client
Meant for ox_inventory's client.export and origen_inventory. It reads the card's metadata, checks that the player stands at an ATM, and opens the PIN pad.
client = { export = 'qs-banking.CreateCard' }Events and Callbacks#
-- Client → server: same as AddTransaction, for the calling player
TriggerServerEvent('banking:server:addTransaction', 'Paycheck', 'fa-solid fa-piggy-bank', 'Weekly pay: 2500')
-- Client → server: offer one of the player's houses to a branch (qs-housing)
TriggerServerEvent('qs-banking:server:offerHouseToBank', house, bankId, price)
-- ox_lib callback: branches that buy houses
local buyers = lib.callback.await('qs-banking:getHouseBuyers', false)
-- Client: fired on every player whenever a branch or ATM changes
RegisterNetEvent('banking:client:syncLocations', function(payload)
-- payload.banks, payload.atms
end)About the Answers#
Every action that can be refused answers { ok = false, reason = '...' }, and the interface turns the reason into a translated message. The server re-checks ownership and rank permissions on every one of them, so nothing sent from a modified client gets past it. Common Errors lists what each reason means.



