Skip to content

RPSync Banking

A complete, self-contained banking system that replaces esx_banking

A complete, self-contained ESX banking system. No external CDN dependencies, no build step — pure Lua + HTML/CSS/JS, ready to drop into any ESX Legacy server.


  • RP-first account opening at a configurable flagship branch (short camera + animation sequence), first card free
  • Deposit / withdraw / transfer by account number — transfers work even if the recipient is offline
  • Transaction history with pagination
  • Optional card PIN, required at ATMs
  • ATMs (any nearby prop_*_atm* prop) + physical branches with NPCs and blips, fully configurable in config.lua
  • French and English included — add more by copying locales/en.lua
  • The money itself still lives in the standard ESX bank account, so this resource stays compatible with every other script that already pays into or reads from it (jobs, shops, other scripts using xPlayer.getAccount)
  • This resource only adds an ownership/RP layer (account number, PIN, gate) on top of it — it never touches the existing users table schema

  • Client logic (client/main.lua) and server logic (server/main.lua) are encrypted on publication
  • config.lua, locales/*.lua, html/index.html, html/css/*.css and sql/*.sql stay editable
  • Escrow protection for UI files

Before installing make sure your server has:

  • FiveM server running
  • ESX Legacy framework
  • oxmysql installed
  • Basic server knowledge

Download the script from your Tebex purchase.

Extract the archive to:

resources/rpsync_banking


Run sql/install.sql against your database. It only adds two new tables — rpsync_banking_accounts and rpsync_banking_transactions — and never touches the existing users table schema.


setr rpsync_banking:locale "fr" -- or "en"
ensure rpsync_banking

Step 4 — Disable your previous banking resource

Section titled “Step 4 — Disable your previous banking resource”

Only one banking system should manage the ESX bank account. Comment out ensure esx_banking (or equivalent) to avoid two systems fighting over the same account.


Restart the resource:

restart rpsync_banking

or restart the entire server.


Go to the flagship branch (Flagship = true in config.lua, Pacific Standard by default) and open an account, or walk up to any nearby ATM prop.


All configuration is located in:

config.lua


Language

Config.Locale = GetConvar('rpsync_banking:locale', 'en') -- 'en' or 'fr'

Set via server.cfg:

setr rpsync_banking:locale "fr"

Available languages: en, fr — add more by copying locales/en.lua.


Config.BankName = 'Norevyn Bank' -- Displayed everywhere: UI, card, notifications

Config.RequireAccountOpening = true
  • true — the RP flow: a player cannot deposit / withdraw / transfer / check their balance until they’ve physically opened an account at the flagship branch. Every other branch/ATM redirects them there.
  • false — every player is considered to already have an account, like a normal ESX server.
Config.ReplacementCardPrice = 500 -- price of a *second* card (lost/stolen)
Config.OpeningCutsceneDuration = 3500 -- ms, camera + animation before the welcome screen

ReplacementCardPrice isn’t wired to a command by default — it’s exposed as an export/event for you to hook into your own item/menu.


Exactly one entry must have Flagship = true — the only branch where an account can be opened. Every entry defines the NPC, the marker position and an optional blip:

{
Flagship = true,
Position = vector4(248.8213, 224.4276, 106.2871, 163.3900),
Ped = { Model = `U_M_M_BankMan`, Position = vector4(248.8213, 224.4276, 106.2871, 163.3900), Scenario = 'WORLD_HUMAN_CLIPBOARD' },
Blip = { Enabled = true, Sprite = 108, Color = 45, Scale = 0.9, Label = 'Norevyn Bank — Agence principale' },
}

Add or remove branches freely — only the Flagship one is special.


Config.EnableAtms = true
Config.AtmModels = { `prop_fleeca_atm`, `prop_atm_01`, `prop_atm_02`, `prop_atm_03` }
Config.AtmInteractionDistance = 2.0

No config list needed — the script detects any nearby prop matching one of AtmModels, which already covers the hundreds scattered around the map.

Config.MarkerDistance = 12.0
Config.InteractionDistance = 2.5

Config.MinTransactionAmount = 1
Config.MaxTransactionAmount = 500000 -- per single deposit/withdraw/transfer, 0 = unlimited
Config.PinCodeLength = 4

The PIN is optional for players, but required at ATMs once set.


Config.PreventSelfTransfer = true

Transfers are made by account number and work whether the recipient is online or not. Recommended to keep true so players can’t transfer to their own account number.


Config.HistoryRetentionDays = 60 -- old transactions purged after this many days, 0 = keep forever
Config.HistoryPageSize = 15 -- rows loaded per page in the "full history" view

Config.Debug = false

Prints your live distance to the nearest configured branch in the F8 console every second, client-side. Turn on if a branch/ATM never seems to trigger the interaction prompt — it tells you exactly how far off your configured coordinates are from where the player actually stands.


All four exports work whether the target player is online or not:

exports.rpsync_banking:HasAccount(identifier)
exports.rpsync_banking:GetBalance(identifier)
exports.rpsync_banking:AddMoney(identifier, amount)
exports.rpsync_banking:RemoveMoney(identifier, amount)
exports.rpsync_banking:GetCardNumber(identifier)

Players must:

  1. Go to the flagship branch to open an account (first card is free)
  2. Use any other branch or a nearby ATM to deposit / withdraw / transfer
  3. Set a PIN from the UI — required at ATMs once set
  4. Transfer to another player using their account number, online or not

Enable Config.Debug = true and check the F8 console for your live distance to the nearest configured branch — it tells you exactly how far off the configured coordinates are.

Make sure your previous banking resource (e.g. esx_banking) is disabled in server.cfg — only one script should manage the ESX bank account.

The money lives in the standard ESX bank account (Config.AccountName = 'bank') — any script reading/writing that account via xPlayer.getAccount stays in sync automatically.


1.0.0

  • Initial release
  • RP account opening at a configurable flagship branch
  • Deposit / withdraw / transfer by account number, online or offline
  • Transaction history with pagination
  • Optional card PIN, required at ATMs
  • Branches with NPCs/blips + automatic ATM prop detection

Before requesting support:

  1. Check documentation
  2. Check F8 console
  3. Restart resource

Support channels:


RPSync License

Allowed:

  • Use on your server
  • Modify configuration
  • Modify translations

Not allowed:

  • Resell
  • Redistribute
  • Remove escrow protection