π¦ RDE BANKING | Next-Gen Full-Stack Banking for FiveM ox_core | Prestige Tier System | Investments | Loans | Proximity NPCs | ATM Targeting | Custom NUI | Production-Ready
Built by Red Dragon Elite | Free Forever | No Paywalls | No Legacy
π Installation β’ βοΈ Configuration β’ π Prestige Tiers β’ πΉ Investments β’ π³ Loans β’ π Locales β’ π‘ Events & Exports β’ π Troubleshooting β’ π Website
Every banking resource you've seen is either a paid Tebex cash-grab, still running on ESX, or a flat menu with a balance number and a transfer button. No depth. No soul.
We said no.
| β Other Banking Scripts | β rde_banking |
|---|---|
| Paid, always | Free forever β RDE Black Flag |
| ESX / QBCore legacy | ox_core native β the future, not the past |
| Flat balance menu | Full custom NUI banking app with live data |
| No progression | 5-tier Prestige system (Bronze β Black) |
| No investments | 3 investment tiers: low risk, medium risk, high risk crypto |
| No credit system | Full credit score system β affects loan eligibility & rates |
| Static NPCs (always loaded) | Proximity-loaded peds β only exist when someone is nearby |
| No ATM system | Every ATM in the world targetable via ox_target prop targeting |
| Discord webhooks | Built for rde_nostr_log (optional, decentralized) |
| EN only | Full EN / DE multilanguage out of the box |
| Manual SQL import | Tables auto-create on first boot β zero setup |
- π¦ Full Custom NUI β glassmorphism banking UI with live balance, transaction history, tier badge, credit score
- π Prestige Tier System β Bronze β Silver β Gold β Platinum β Black. Based on lifetime banking volume. Each tier unlocks lower fees, higher limits, better interest
- πΉ Investment System β 3 configurable investment types with risk/return profiles and duration timers. Returns credited automatically on maturity
- π³ Loan System β credit-score-gated loans with configurable amounts, rates, and repayment windows. Pay off early, build credit
- π Daily Interest β configurable rate, min balance, max payout, scheduled at a set server time
- π§ Proximity NPCs β bank teller peds are purely client-side and only spawn when a player enters the radius. Zero network overhead
- π§ Universal ATM Targeting β every
prop_atm_01,prop_atm_02,prop_atm_03,prop_fleeca_atmin the entire map is targetable via ox_target prop model targeting. No coordinates needed - π³ Bank Card Item β ox_inventory item required for ATM access. Auto-given on account creation
- π Transaction History β full log of deposits, withdrawals, transfers, loan payments, interest credits, investment returns
- π Triple-Auth Admin β ACE permission + ox_core group + Steam ID. Check order configurable
- π‘οΈ Server-Side Authority β every transaction validated server-side. Daily limits enforced. No client exploit possible
- ποΈ Auto-Migrating DB β idempotent column migrations run on every start. Safe to update without touching your DB manually
- π‘ StateBag Sync β
player.state.bankTierpublished live so external resources can react to tier changes - π Multilanguage β EN / DE included. Add any language in 5 minutes
Coming soon β drop a PR with your screenshots!
oxmysql β https://github.com/overextended/oxmysql
ox_lib β https://github.com/overextended/ox_lib
ox_core β https://github.com/overextended/ox_core
ox_inventory β https://github.com/overextended/ox_inventory
ox_target β https://github.com/overextended/ox_target
cd resources
git clone https://github.com/RedDragonElite/rde_banking.gitOpen ox_inventory/data/items.lua and add the following inside the return table (the file ITEM_DEFINITION_READ_ME.lua is included in the resource for reference):
['bank_card'] = {
label = 'Bank Card',
weight = 10,
stack = false,
close = false,
description = 'Pacific Standard Bank debit card. Required to use ATMs.',
client = {
image = 'bank_card',
},
},Drop a bank_card.png (128Γ128) into ox_inventory/web/images/. Restart ox_inventory.
# Dependencies first β order matters!
ensure oxmysql
ensure ox_lib
ensure ox_core
ensure ox_inventory
ensure ox_target
# The bank
ensure rde_banking
That's it. No SQL import needed. All five tables are created automatically on first start. Walk up to any bank NPC and press E, or walk up to any ATM in the world.
config.lua is fully self-documented. Every block has comments. Key sections:
Config.Debug = false -- enable console logging
Config.DefaultLanguage = 'en' -- 'en' or 'de'
Config.MoneyItem = 'money'Config.Banking = {
startingBalance = 5000,
maxBalance = 10000000,
dailyWithdrawLimit = 50000,
dailyDepositLimit = 100000,
transferFee = 0.01, -- 1% base fee (tier discount applies on top)
minTransfer = 1,
maxTransfer = 100000,
}Config.Interest = {
enabled = true,
rate = 0.02, -- 2% daily
minBalance = 1000, -- below this: no interest
maxInterest = 1000, -- cap per payout
payoutTime = '00:00', -- server time HH:MM for daily payout
}Config.ATMs = {
enabled = true,
targetDistance = 1.5,
propModels = {
'prop_atm_01',
'prop_atm_02',
'prop_atm_03',
'prop_fleeca_atm', -- the most common ATM in the game
},
}βΉοΈ Note:
prop_atm_04does not exist in vanilla GTA V. The config ships with the correct model list.
Default locations cover all 7 Fleeca/Pacific Standard branches. Admins can add/remove NPCs in-game via /bankadmin β those persist in the database and merge with config defaults at runtime.
Config.NPCs = {
model = 'a_m_m_business_01',
scenario = 'WORLD_HUMAN_CLIPBOARD',
targetDistance = 2.5,
spawnDistance = 50.0, -- proximity radius for ped load
defaultLocations = {
{ coords = vector4(150.266, -1040.203, 29.374, 340.0), id = 'fleeca_legion' },
{ coords = vector4(-1212.980, -330.841, 37.787, 27.0), id = 'fleeca_burton' },
{ coords = vector4(-2962.582, 482.627, 15.703, 87.0), id = 'fleeca_great_ocean'},
{ coords = vector4(-112.202, 6469.295, 31.626, 137.0), id = 'fleeca_paleto' },
{ coords = vector4(314.187, -278.621, 54.170, 339.0), id = 'fleeca_hawick' },
{ coords = vector4(1175.064, 2706.645, 38.094, 178.0), id = 'fleeca_route68' },
{ coords = vector4(241.260, 220.857,106.286, 161.0), id = 'pacific_standard' },
},
}Config.AdminSystem = {
command = 'bankadmin',
acePermission = 'rde.admin',
steamIds = { }, -- optional hardcoded Steam IDs
oxGroups = {
['owner'] = 0, ['admin'] = 0, ['superadmin'] = 0, ['management'] = 0,
},
checkOrder = { 'ace', 'oxcore', 'steam' },
}The Prestige Tier system is rde_banking's standout feature. Every deposit, transfer, and investment adds to a player's lifetime volume. As that number grows, they climb through tiers β each one unlocking real mechanical benefits.
| Tier | Lifetime Volume | Fee | Daily Limit | Interest Bonus |
|---|---|---|---|---|
| π€ Bronze | $0 | 1.00Γ (full) | 1.00Γ | 1.00Γ |
| βͺ Silver | $100,000 | 0.80Γ (-20%) | 1.50Γ | 1.10Γ |
| π‘ Gold | $500,000 | 0.60Γ (-40%) | 2.00Γ | 1.25Γ |
| π Platinum | $2,500,000 | 0.40Γ (-60%) | 3.00Γ | 1.50Γ |
| β¬ Black | $10,000,000 | 0.20Γ (-80%) | 5.00Γ | 2.00Γ |
All thresholds and multipliers are configurable in Config.Tiers.
StateBag sync β current tier is always available at Player(source).state.bankTier on the server and LocalPlayer.state.bankTier on the client. Other resources can react to tier changes in real time.
Three investment tiers, all configurable. Investments run on a server-side timer β when they mature, the return (or loss if risk triggers) is credited automatically and a notification is pushed to the player.
| Investment | Min | Max | Return | Duration | Risk |
|---|---|---|---|---|---|
| Low Risk Stocks | $5,000 | $50,000 | 3β8% | 24h | 10% |
| Medium Risk Stocks | $10,000 | $100,000 | 5β15% | 48h | 25% |
| High Risk Crypto | $20,000 | $250,000 | 10β35% | 72h | 45% |
Risk % = chance of loss instead of gain. Add your own investment types in Config.Investments.options β each one needs id, label, returnRate, duration, and risk.
Credit-score-gated loans. Players build credit by repaying loans on time. Defaulting or never taking a loan leaves credit at 0.
| Amount | Interest | Duration | Required Credit |
|---|---|---|---|
| $10,000 | 15% | 7 days | 0 |
| $25,000 | 12% | 14 days | 100 |
| $50,000 | 10% | 30 days | 250 |
| $100,000 | 8% | 60 days | 500 |
Max simultaneous loans: 2 (configurable via Config.Loans.maxLoans). Paying off a loan early adds +50 credit score. All tiers, amounts, rates, and durations are configurable in Config.Loans.
All user-facing text lives in Config.Locales inside config.lua. Switch the active language:
Config.DefaultLanguage = 'de'Add a new language:
- Copy the
enblock insideConfig.Locales - Rename the key to your language code (e.g.
fr) - Translate all values β keep the keys identical
- Set
Config.DefaultLanguage = 'fr'
Currently included:
| Code | Language |
|---|---|
en |
π¬π§ English |
de |
π©πͺ Deutsch |
Five tables. All created automatically on first boot. Safe to re-run (all IF NOT EXISTS). A install.sql file is included if you prefer to pre-provision.
| Table | Purpose |
|---|---|
rde_bank_accounts |
Account balance, credit score, daily limits, tier, lifetime volume |
rde_bank_transactions |
Full transaction log with type, amount, timestamp, target account |
rde_bank_npcs |
Admin-created/relocated NPC locations persisted across restarts |
rde_bank_investments |
Active and matured investments per character |
rde_bank_loans |
Active and paid loans per character |
Migrations run automatically β if you're upgrading from an older version, the server adds any missing columns via ALTER TABLE ... ADD COLUMN IF NOT EXISTS. No manual intervention needed.
-- Request or create the player's account
TriggerServerEvent('rde_banking:server:requestAccount')
-- Deposit cash from inventory
TriggerServerEvent('rde_banking:server:deposit', amount)
-- Withdraw cash to inventory
TriggerServerEvent('rde_banking:server:withdraw', amount)
-- Transfer to another account number
TriggerServerEvent('rde_banking:server:transfer', targetAccountNum, amount)
-- Place a new investment
TriggerServerEvent('rde_banking:server:createInvestment', investmentType, amount)
-- Apply for a loan
TriggerServerEvent('rde_banking:server:applyLoan', amount)
-- Make a loan payment
TriggerServerEvent('rde_banking:server:payLoan', loanId, amount)
-- Admin: create bank NPC at current position
TriggerServerEvent('rde_banking:server:createNPC', data)
-- Admin: delete bank NPC by id
TriggerServerEvent('rde_banking:server:deleteNPC', id)
-- Admin: add money to a character
TriggerServerEvent('rde_banking:server:adminAddMoney', charid, amount)
-- Admin: remove money from a character
TriggerServerEvent('rde_banking:server:adminRemoveMoney', charid, amount)
-- Admin: set a character's exact balance
TriggerServerEvent('rde_banking:server:adminSetBalance', charid, balance)-- Returns true/false β is the player an admin?
lib.callback('rde_banking:cb:checkAdmin', false, function(isAdmin) end)
-- Returns the player's transaction array
lib.callback('rde_banking:cb:getTransactions', false, function(transactions) end)
-- Returns the player's active investments
lib.callback('rde_banking:cb:getInvestments', false, function(investments) end)
-- Returns the player's active loans
lib.callback('rde_banking:cb:getLoans', false, function(loans) end)
-- Admin: returns all transactions across all players
lib.callback('rde_banking:cb:getAllTransactions', false, function(transactions) end)
-- Admin: returns all accounts with player names
lib.callback('rde_banking:cb:getAllAccounts', false, function(accounts) end)-- Get the full account table for the local player
exports.rde_banking:GetPlayerAccount()
-- Get the current balance (number)
exports.rde_banking:GetAccountBalance()
-- Get the current tier id string ('bronze', 'silver', etc.)
exports.rde_banking:GetPlayerTier()
-- Open the full banking NUI
exports.rde_banking:OpenBankingMenu()
-- Open ATM-restricted NUI (limited: no investments/loans)
exports.rde_banking:OpenATM()-- Server β current tier for any player:
Player(source).state.bankTier -- 'bronze' | 'silver' | 'gold' | 'platinum' | 'black'
-- Client β local player's tier:
LocalPlayer.state.bankTier
-- GlobalState β all active bank NPCs (synced to all clients):
GlobalState.bankNPCsrde_banking/
βββ fxmanifest.lua β Resource manifest, dependencies, version
βββ config.lua β Full configuration (banking, tiers, investments, loans, NPCs, ATMs, locales)
βββ client.lua β Proximity NPC system, ATM targeting, NUI bridge, exports, admin menu
βββ server.lua β Account management, transactions, interest, investments, loans, admin auth, DB
βββ html/
β βββ index.html β Full custom NUI banking application
βββ install.sql β Optional pre-provision SQL (auto-created on boot anyway)
βββ ITEM_DEFINITION_READ_ME.lua β bank_card item definition β paste into ox_inventory/data/items.lua
Enable with Config.Debug = true in config.lua, then watch your server console and F8 client console for [RDE Banking | ...] output.
| What to check | Where |
|---|---|
| Tables not creating | Server console β `[RDE Banking |
| NPCs not spawning | Client F8 β [RDE Banking] Failed to load model or point enter/exit logs |
| ATM target not appearing | Confirm ox_target is running and started before rde_banking |
| Investment not maturing | Server console β ProcessInvestments runs every 60s, check for errors |
| Tier not updating | Check lifetimeVolume column in rde_bank_accounts and RecalculateTier output |
| NUI not opening | F8 console for SetNuiFocus errors, confirm html/index.html exists in resource |
- All transactions validated server-side β amount, limits, balance, credit score
- Daily deposit/withdraw limits enforced per-character, reset every 24h server-side
- Transfer fee calculated server-side β client cannot send a fake fee
- Admin actions triple-verified: ACE β ox_core group β Steam ID (all configurable)
- Investment maturity processed server-side on a timer β no client trigger for payout
- Loan approval gated on credit score server-side β client cannot fake eligibility
- StateBag tier sync is write-only from server β clients read, never write
- Confirm
html/index.htmlexists in the resource folder - Check
fxmanifest.luaβui_pagemust point to'html/index.html'andfilesmust include it - F8 console β look for
SetNuiFocusorSendNUIMessageerrors
- Enable debug and watch F8 for
[RDE Banking]proximity point enter/exit logs - Confirm
ox_targetis started and working - Check the coords in
Config.NPCs.defaultLocationsβ they should be on a walkable surface spawnDistancedefault is 50.0m β you need to be within that before the ped loads
- Confirm the ATM you're approaching is one of the prop models in
Config.ATMs.propModels prop_atm_04doesn't exist in vanilla GTA β it's not in the list for this reason- Restart
ox_targetandrde_bankingin that order - Confirm
Config.ATMs.enabled = true
- Enable debug β server console will show which validation check failed
- Check
dailyWithdrawLimit/dailyDepositLimitβ limits reset at midnight server time - For deposits: confirm
ox_inventoryhas themoneyitem andConfig.MoneyItem = 'money'matches
The investment processor runs every 60 seconds on the server. Check:
- Server console for
[RDE Banking | INVEST]output rde_bank_investmentstable β confirmactive = 1andmaturityDateis a valid Unix timestamp- If
active = 1and the timestamp is in the past but it hasn't fired, restart the resource
- Tier is recalculated on every deposit/transfer that bumps
lifetimeVolume - Check
rde_bank_accounts.lifetimeVolumedirectly in the DB - Enable debug β
RecalculateTierlogs every promotion to server console
ox_core β Player & character management, group auth
ox_lib β UI (context menus, input dialogs, notifications), callbacks, points
ox_inventory β Inventory & money item handling, bank_card item
ox_target β NPC interaction zones, ATM prop model targeting
oxmysql β Async database β accounts, transactions, investments, loans, NPCs
NUI (custom) β Full glassmorphism banking app in html/index.html
StateBags β Live tier sync to all resources via player.state.bankTier
PRs are always welcome.
- Fork the repository
- Create a branch:
git checkout -b feature/your-feature - Test on a live server before submitting
- Commit:
git commit -m 'feat: your feature description' - Push:
git push origin feature/your-feature - Open a Pull Request with a clear description
Guidelines:
- β Keep the RDE header in all files
- β Follow existing code style β ox_core, ox_lib, StateBags, server-side authority
- β
Run
luac5.4 -pon every modified.luafile before pushing - β Test on a live server β don't ship syntax errors
- β No telemetry, no paywalls, no ESX/QBCore
- β Don't weaken server-side validation
- β Don't hardcode strings β use
L('key')and add to all locale blocks
RDE Black Flag Source License v6.66
###################################################################################
# #
# .:: RED DRAGON ELITE (RDE) - BLACK FLAG SOURCE LICENSE v6.66 ::. #
# #
# PROJECT: RDE_BANKING (NEXT-GEN BANKING FOR FIVEM OX_CORE) #
# ARCHITECT: .:: RDE β§ Shin [β³ αα
α±αα
αΎαα αααα
β½] ::. | https://rd-elite.com #
# ORIGIN: https://github.com/RedDragonElite #
# #
# WARNING: THIS CODE IS PROTECTED BY DIGITAL VOODOO AND PURE HATRED FOR LEAKERS #
# #
# [ THE RULES OF THE GAME ] #
# #
# 1. // THE "FUCK GREED" PROTOCOL (FREE USE) #
# You are free to use, edit, and abuse this code on your server. #
# Learn from it. Break it. Fix it. That is the hacker way. #
# Cost: 0.00β¬. If you paid for this, you got scammed by a rat. #
# #
# 2. // THE TEBEX KILL SWITCH (COMMERCIAL SUICIDE) #
# Listen closely, you parasites: #
# If I find this script on any paid store, Patreon, or "Premium Pack": #
# > I will DMCA your store into oblivion. #
# > I will publicly shame your community on Nostr. Permanently. #
# > I hope every bank transfer you ever make sends money to the wrong #
# account and no one notices until the audit. #
# SELLING FREE WORK IS THEFT. AND I AM THE JUDGE. #
# #
# 3. // THE CREDIT OATH #
# Keep this header. If you remove my name, you admit you have no skill. #
# You can add "Edited by [YourName]", but never erase the original creator. #
# Don't be a skid. Respect the architecture. #
# #
# 4. // THE CURSE OF THE COPY-PASTE #
# This code implements real server-side transaction validation, proximity #
# NPC streaming, a full prestige tier engine, and DB auto-migration. #
# If you copy-paste without understanding, you WILL break something #
# expensive. Probably someone's balance. Don't come crying to my DMs. #
# RTFM. #
# #
# -------------------------------------------------------------------------- #
# "We build the future on the graves of paid resources." #
# "REJECT MODERN MEDIOCRITY. EMBRACE RDE SUPERIORITY." #
# -------------------------------------------------------------------------- #
###################################################################################
TL;DR:
- β Free forever β use it, edit it, learn from it
- β Keep the header β credit where it's due
- β Don't sell it β commercial use = instant DMCA + permanent Nostr shaming
- β Don't be a skid β copy-paste without reading will eat someone's money
| Resource | Description |
|---|---|
| rde_mechanic | Next-Gen Vehicle Mechanic & Tuner β Full preview, orbit camera, StateBag sync |
| rde_aipd | Ultimate AI Police System β StateBag-synced, Nostr-logged |
| rde_nostr_log | Decentralized FiveM logging via Nostr β replace Discord forever |
| awesome-ox-rde | Curated list of the best ox_core resources |
| π Website | rd-elite.com |
| π Nostr Terminal | rd-elite.com/Files/NOSTR/Terminal |
| π GitHub | github.com/RedDragonElite |
| π£ Nostr | npub1wr4e24zn6zzjqx8kvnelfvktf0pu6l2gx4gvw06zead2eqyn23sq9tsd94 |
Before opening an issue:
- β Read this README fully
- β Check the Troubleshooting section
- β
Enable
Config.Debug = trueand include server console + F8 logs - β Don't open issues without logs β we can't help without them
Made with π₯ and zero tolerance for paywalled banking scripts by Red Dragon Elite
The future is ours. We are already inside.
REJECT MODERN MEDIOCRITY. EMBRACE RDE SUPERIORITY.
RDE FOREVER. SYSTEM FAILURE. β‘777β‘