Skip to content

Blixt Bank

Blixt Bank is a standalone FiveM banking resource with in-world Bank Office and ATM surfaces. The Bank Office and ATM are the core product and can run without Blixt Phone.

Blixt Phone, Tablet, Gov ID, notifications, phone-number payments, and Bank Staff integration are bonus integrations. Install the phone when you want those device and identity flows; do not treat it as required for the branch counter or ATM.

  • Folder name: blixt-bank.
  • Bundled helper resource: blixt-lib.
  • Resource type: standalone FiveM resource with optional Blixt integration.
  • Frameworks: qbox, qbcore, esx, or standalone.
  • Database: MySQL or MariaDB through oxmysql.
  • Download: items.tebex.io.
  • Support: Blixt Discord.

The Bank package includes both blixt-bank and blixt-lib. Keep both folder names unchanged.

These surfaces do not require Blixt Phone:

  • Bank Office world UI.
  • ATM world UI.
  • Personal accounts, shared accounts, and account history.
  • Public account ID transfers.
  • Bank Office cash deposit and withdrawal when the active framework exposes player cash.
  • Physical bank cards and PIN-protected ATM withdrawal.
  • Identifier-backed Bank Office and ATM access when no inventory system is detected.
  • Invoices, recurring transfers, and loans when their modules are enabled.
  • Setup wizard and config.json generation.

These features require Blixt Phone or another Blixt host integration:

  • Handset Bank app.
  • Tablet Bank app registration.
  • Gov ID as Bank Office proof.
  • Phone-number payments and phone-number recurring transfer resolution.
  • Persistent phone notifications.
  • Bank Staff and Business integration.
  • Multiple personal accounts per character.
  • Shared and organization accounts with owner, contributor, and viewer roles.
  • Transfers between own accounts and by public account ID.
  • Physical bank cards issued at Bank Offices with hashed PINs and lockout after repeated failures.
  • Withdraw-only ATM flow using carried bank_card item metadata and card PIN.
  • P2P invoices with open, paid, and cancelled states.
  • Daily, weekly, or monthly recurring transfers.
  • Personal loans with fixed-interest installments and manual repayment.
  • Four production world UI themes: slate, slate-dark, halo, and halo-dark.

Extract the Bank package into your FXServer resources tree:

resources/
+-- [blixt]/
+-- blixt-lib/
+-- blixt-bank/

The helper resource blixt-lib must start before blixt-bank.

Apply the Bank schema before first production start:

Terminal window
mysql -u<user> -p<password> <database> < resources/[blixt]/blixt-bank/sql/install.sql

Use the same database connection string that oxmysql uses:

set mysql_connection_string "mysql://user:password@127.0.0.1:3306/blixt"

This starts the Bank Office and ATM without Blixt Phone:

set mysql_connection_string "mysql://user:password@127.0.0.1:3306/blixt"
ensure oxmysql
ensure blixt-lib
ensure blixt-bank

This enables world interactions and optional Blixt device integration:

set mysql_connection_string "mysql://user:password@127.0.0.1:3306/blixt"
ensure oxmysql
ensure blixt-lib
# Optional interaction helpers.
ensure ox_target
ensure blixt-properties
# Optional Blixt device suite.
ensure screenshot-basic
ensure pma-voice
ensure blixt
ensure blixt-tablet
ensure blixt-bank

If blixt is not running, Bank still starts and skips phone/tablet app registration. If blixt is running, Bank registers the handset Bank app, Bank Staff app, Gov ID integration, notifications, and phone-number helpers.

When setupCompleted is false, admins can open a Bank Office and launch the setup wizard. The wizard is server-side gated by ACE permission:

add_ace group.admin blixt-bank.setup allow

The existing broader Blixt admin ACE also works:

add_ace group.admin blixt.admin allow

The setup wizard covers:

  • Bank name, currency, and theme.
  • Starting account balance and framework selection.
  • Module toggles for accounts, transfers, ATM, invoices, cards, recurring transfers, and loans.
  • Bank Office identity rules.
  • ATM card item rules.
  • Branch locations, ATM targeting, markers, and interaction fallback.
  • Review, save, and generated config.json.

On save, Bank writes blixt-bank/config.json through SaveResourceFile. If the server cannot write the file, the wizard shows the generated JSON so an admin can replace the file manually.

Restart blixt-bank after setup so locations, app registration, and scheduled jobs all boot from the saved config.

Bank Office authentication always supports the configured ID item:

{
"office": {
"idItemName": "id_card",
"govIdAsId": false
}
}

govIdAsId is intentionally false by default. The setup wizard detects whether Blixt Phone is available:

  • If blixt is available, admins may enable Gov ID as an additional Bank Office digital ID proof.
  • If blixt is unavailable, the toggle is disabled and saved configs are sanitized back to govIdAsId: false.

This prevents a standalone Bank install from enabling a Gov ID path that cannot work. ATM authentication never uses Gov ID; it uses carried bank_card metadata and the card PIN.

Bank expects inventory metadata for physical cards:

SurfaceConfig fieldDefaultNotes
Bank Office identityoffice.idItemNameid_cardUsed when Gov ID is off or unavailable.
ATM cardatm.cardItemNamebank_cardMust preserve metadata for card ID and PIN checks.

With atm.requireMetadata: true, card issuance and ATM use fail closed if the active inventory bridge exists but cannot read and write item metadata.

If Bank cannot detect any inventory system, it switches those same world interactions to the current character identifier:

  • Bank Office opens with proof: "identifier" instead of requiring id_card.
  • Issued cards are stored in the Bank database and attached to accounts rather than being delivered as items.
  • ATM card selection lists active cards the character can write with, plus assigned Business cards, and still requires the card PIN before withdrawal.

Most settings live in blixt-bank/config.json. Common fields:

{
"bankName": "Blixt Bank",
"currency": "USD",
"currencySymbol": "$",
"firstAccountStartBalance": 2500,
"frameworkOverride": null,
"shadowFrameworkBank": false,
"theme": "slate-dark",
"setupCompleted": false,
"modules": {
"accounts": { "enabled": true, "maximumNumberOfAccounts": 3 },
"transfers": { "enabled": true, "phoneTransfers": true, "accountTransfers": true },
"atm": { "enabled": true },
"invoices": { "enabled": true },
"cards": { "enabled": true, "businessCards": true },
"recurring": { "enabled": true },
"loans": { "enabled": true }
},
"office": {
"idItemName": "id_card",
"govIdAsId": false
},
"atm": {
"cardItemName": "bank_card",
"requireMetadata": true
}
}

Use frameworkOverride only when auto-detection picks the wrong framework:

  • null or omitted: auto-detect qbox, qbcore, then esx; otherwise standalone.
  • "qbox": force qbox.
  • "qbcore": force QBCore.
  • "esx": force ESX.
  • "standalone": use Bank’s standalone identity and ledger mode.

Convars override selected config.json values at boot:

ConvarPurpose
blixt_bank:frameworkForce qbox, qbcore, esx, or standalone.
blixt_bank:currencyCurrency code shown in UI.
blixt_bank:first_account_start_balanceStarting balance for the first account.
blixt_bank:start_cashLegacy alias for first account starting balance.
blixt_bank:max_accountsPersonal account cap per character.
blixt_bank:modules:accountsEnable or disable account procedures.
blixt_bank:modules:transfersEnable or disable transfer procedures.
blixt_bank:modules:atmEnable or disable ATM and card withdrawal.
blixt_bank:modules:invoicesEnable or disable invoices.
blixt_bank:modules:cardsEnable or disable cards.
blixt_bank:modules:business_cardsEnable or disable Bank-backed Business card support.
blixt_bank:modules:recurringEnable or disable recurring transfers and scheduler.
blixt_bank:modules:loansEnable or disable loan procedures.
blixt_bank:shadow_framework_bankBest-effort mirror writes into framework bank accounts.
blixt_bank:debug_commandsEnables /atm and /bankoffice debug launch commands.

locations controls where players open Bank surfaces:

  • locations.offices defines Bank Office branches.
  • locations.atmModels defines ATM props.
  • locations.useOxTarget registers ATM target interactions when ox_target is running.
  • locations.drawMarkers enables marker and E fallbacks.
  • blixt-properties can provide office access zones when installed.

Location checks only open the UI. Server-side account membership, module status, card status, cash availability, PIN checks, and identity checks still run before any money moves.

  • Blixt Phone: optional handset app, Gov ID, notifications, and phone-number integrations.
  • Blixt Tablet: optional wider device surface.
  • Inventory items: phone/tablet item gates and inventory setup notes.
  • Convars: shared Blixt convars.