Skip to content

Installation

DependencyRequiredPurpose
oxmysqlYesDatabase access for all three resources
QBCore, Qbox, or ESXYesPlayer, job, money, and callback framework
ox_target or qb-targetOptionalBank and ATM interaction when target mode is enabled
Supported inventoryOptionalRequired only for receipts, checks, and the billing tablet item
LB PhoneOptionalRequired only for rs_mobile_bank

Place all included resources inside your serverโ€™s resources directory without changing their folder names:

  • Directoryresources/[retro]/
    • Directoryrs_bank/
      • โ€ฆ
    • Directoryrs_billing/
      • โ€ฆ
    • Directoryrs_mobile_bank/ Optional LB Phone application
      • โ€ฆ

Keeping the original resource names is recommended because the resources communicate through exports and NUI URLs that reference these names.

The base banking and billing schemas must be imported before the first start.

FrameworkImport this file
QBCorers_bank/sql files/rs_bank.sql
Qboxrs_bank/sql files/rs_bank_qbox.sql
ESXrs_bank/sql files/rs_bank_esx.sql

Then import the billing schema for every framework:

rs_billing/sql/rs_billing.sql

The following files normally do not need to be imported manually:

  • rs_bank/sql files/check_tables.sql - check tables are created automatically when the check system starts.
  • rs_mobile_bank/requests.sql - the money-request table is created automatically by rs_mobile_bank.

Set the same framework in both core resources.

rs_bank/shared/config.lua

Config.Core = 'qb-core' -- 'qb-core', 'qbox', or 'esx'

rs_billing/shared/config.lua

Config.Core = 'qb-core' -- 'qb-core', 'qbox', or 'esx'

rs_mobile_bank detects QBCore, Qbox, or ESX automatically and does not require a separate framework setting.

The package is designed to run as one connected system. Keep these values enabled:

rs_bank/shared/config.lua

Config.BillingScript = 'rs_billing'

rs_billing/shared/config.lua

Config.Payment = {
Source = 'bank',
BankResource = 'rs_bank',
LBPhoneBridge = true,
}

LBPhoneBridge is only relevant to the included LB Phone application. The main bank and billing connection uses BankResource.

Choose one interaction method in rs_bank/shared/config.lua.

Config.TargetSystem = 'ox_target' -- or 'qb-target'
Config.UseDrawText = false
Config.TargetSystem = 'none'
Config.UseDrawText = true
Config.OpenKey = 38 -- E
ensure oxmysql
# Start your framework before the bundle
# ensure qb-core # QBCore
# ensure qbx_core # Qbox resource name may vary by build
# ensure es_extended # ESX
# Start your selected target/inventory resources before the bundle when used
ensure rs_bank
ensure rs_billing
ensure lb-phone
ensure rs_mobile_bank

The recommended complete order is:

ensure oxmysql
ensure your_framework
ensure your_inventory
ensure your_target
ensure rs_bank
ensure rs_billing
ensure lb-phone # Optional
ensure rs_mobile_bank # Optional

Only register the features you plan to use. Item names must exactly match the config values.

Default itemResourceUsed for
atm_receiptrs_bankMetadata-based ATM receipts
checkbookrs_bankPurchased checkbooks
checkrs_bankSigned checks
billing_tabletrs_billingOpening billing when item mode is enabled

Copy the included images to your inventoryโ€™s image folder:

rs_bank/img/atm_receipt.png
rs_bank/img/check_book.png
rs_bank/img/check.png
rs_billing/img/billing_tablet.png
['atm_receipt'] = {
label = 'ATM Receipt',
weight = 0,
stack = false,
close = true,
},
['checkbook'] = {
label = 'Checkbook',
weight = 500,
stack = false,
close = true,
},
['check'] = {
label = 'Bank Check',
weight = 0,
stack = false,
close = true,
},
['billing_tablet'] = {
label = 'Billing Tablet',
weight = 500,
stack = false,
close = true,
},
atm_receipt = {
name = 'atm_receipt', label = 'ATM Receipt', weight = 0,
type = 'item', image = 'atm_receipt.png', unique = true,
useable = true, shouldClose = true, description = 'An ATM transaction receipt.'
},
checkbook = {
name = 'checkbook', label = 'Checkbook', weight = 500,
type = 'item', image = 'check_book.png', unique = true,
useable = true, shouldClose = true, description = 'A book of blank bank checks.'
},
check = {
name = 'check', label = 'Bank Check', weight = 0,
type = 'item', image = 'check.png', unique = true,
useable = true, shouldClose = true, description = 'A signed bank check.'
},
billing_tablet = {
name = 'billing_tablet', label = 'Billing Tablet', weight = 500,
type = 'item', image = 'billing_tablet.png', unique = true,
useable = true, shouldClose = true, description = 'A tablet used to manage invoices.'
},

The core resources can send notifications through several phone systems:

Config.Phone = 'lb-phone'
-- Other supported values:
-- 'qb-phone', 'qs-smartphone', 'gksphone', 'npwd'

Set the phone value separately in:

  • rs_bank/shared/config.lua
  • rs_billing/shared/config.lua

When no phone notification integration is wanted, disable the relevant notification options or customize the editable shared/phonemail.lua files.

After restarting, verify the following:

  1. No missing-table errors appear in the server console.
  2. A configured bank or GTA ATM can be opened.
  3. The Billing tab appears inside the bank UI.
  4. /billing opens the billing interface when command mode is enabled.
  5. Invoice payments appear in bank transaction history.
  6. When installed, the Retro Bank app appears on LB Phone.