Skip to content

Banking & Payouts

Advanced Bus Job pays every wage, passenger tip, contract bonus, and objective reward as framework cash:

LX.AddMoney(source, 'cash', amount, reason)

lx-lib routes this to Qbox, QB-Core, or ESX. A banking resource is therefore not required for gameplay or payouts.

  • Paying bus income directly to the player’s bank account
  • Adding shift entries to Renewed-Banking transaction history
  • Adding shift entries to okokBanking transaction history
  • Custom payout/banking adapters under custom/

We do not document a copy-paste workaround because payout logic is server-authoritative and escrow-protected. Editing it incorrectly could create double payments or client-triggerable rewards.

Why transaction logging needs a dedicated hook

Section titled “Why transaction logging needs a dedicated hook”

Banking resources use different statement APIs and identifiers:

  • Renewed-Banking uses handleTransaction(account, title, amount, message, issuer, receiver, type, transID?)
  • okokBanking V2 uses AddTransaction(identifier, transactionData, source?)

The framework must add the money exactly once, while the banking export should only add a statement entry. A production integration must also resolve the correct player identifier and avoid logging cash payouts as bank deposits.

A safe future implementation would expose two buyer-editable server hooks:

-- Concept only — not available in v1.2.0
Config.Payout.account = 'cash' -- cash | bank
LxBusIntegrations.Register('banking', 'custom', {
logTransaction = function(source, amount, reason)
-- statement logging only; money was already added through lx-lib
end,
})

This requires a product update and encrypted server validation; it cannot be enabled through documentation alone.

Other server resources can already choose either supported framework account:

local paid = exports['lx-lib']:AddMoney(source, 'bank', 500, 'mission-reward')

That is an lx-lib API feature, not a configurable Advanced Bus Job payout mode. See Server Exports.