26/09/2026

What a FiveM banking script needs: every ATM, transfers by phone number, dupe protection, and a free ESX bank

What a FiveM banking script for ESX has to do: every ATM on the map without coordinates, transfers by phone number or ID, history, and the server-side checks that stop money dupes; the holes in old esx_atm/esx_banking, and X3D Banking, free and integrated with X3D Phone.

The bank is the system every player touches every day, and the easiest place for city money to vanish or multiply when a script does not check enough. This post lists what a good FiveM bank must do, why the old esx_atm / esx_banking fall short, and how the free X3D Banking covers it.

Related scripts

What a banking system must do

Requirement Why
Work at every ATM on the map GTA's map has dozens of ATMs; a system that needs coordinates per machine always misses some
Transfer by something players know (phone number / ID) Players do not know each other's account numbers
Show the recipient's name before confirming Prevents wrong-recipient tickets for admins
Transaction history Admins can trace money, players can check themselves
Server-side validation on every action Distance to the machine, integer amount within limits, sufficient balance, one action at a time; otherwise one event dupes money
Notify the recipient The other side knows immediately without opening the bank
Phone integration Mobile banking is what players expect in 2026

Common holes in older banking scripts

  • No distance check: withdraw/transfer events fired from anywhere with an executor
  • Decimal or negative amounts accepted: transfer -1000 pulls money from someone else; 0.999 in a loop rounds up
  • No transaction lock: press transfer ten times before the server debits = ten payouts
  • No log: nobody can answer when the money disappeared or who did it

How X3D Banking handles it

X3D Banking (free, ESX Legacy):

  • Detects ATMs by prop model, so every machine on the map works immediately; bank branches get Thai-named blips; /atmscan registers ATMs inside MLOs
  • One screen: cash and bank balance, quick withdraw, deposit all, transfer, history
  • Transfer by phone number or ID with the recipient's name shown first and a notification on their side; with X3D Phone it pops up in the phone's banking app, and transfers can be sent from the phone by number
  • Every action validated on the server: distance, integer amount within limits, balance, one at a time
  • ox_target instead of the [E] prompt via the OpenBank export · notify/phone adapters in addons/, one file each
  • Needs es_extended + oxmysql · x3d_phone optional

Install docs

A complete money loop

The bank only stores money; it needs a way in and a way out:

  • In (illegal): X3D Sell Drug, rotating buyers that pay black money to launder first
  • Out (money sink): X3D Slots 1024 Ways, 97.5% RTP, the machine suspends itself when the house loses past a daily limit
  • Control: ESX Legacy Core — X3D Build, economy lock 10 minutes before restarts plus an audit log of every money change

All of it lives in the Banking & Economy category.

FAQ

ox_inventory / qb-inventory? The bank uses ESX's money / bank accounts and does not touch the inventory.

Can I change the transfer limit? Yes, in the config, together with a minimum.

An ATM inside an MLO does not show. Stand in front of it and run /atmscan; the model is added.

QBCore? ESX-bound (bank account, xPlayer).

All 21 free scripts are in the free FiveM scripts post.

Related scripts