A payment system different from the typical billing system, it is used for jobs or societies, through an item (payment terminal).
Open Source version
SHOWCASE
- Payment terminal is a usable item.
- Players can charge other players, the money will be charged from the player's bank account to be deposited in the company's bank account.
- Workers who use the payment terminal will get an invoice item that can be exchanged at an NPC to get a commission for each transaction made, these commissions are adjusted in the script config.
- Payment terminal requires the player to have a credit card item in their inventory in order to make the charge, this feature can be activated or deactivated in the config.
- Code optimized to be at 0.00MS most of the time.
- All Events and Exports are meticulously secured.
- Works seamlessly with QB-Core, QBX, and ESX, and is highly customizable.
- Spanish and English locale
- Tablet UI to view the history of payments or charges made using the terminal
- Discord logs
Dependencies
- QBcore, QBX or ESX
- qb-banking / renewed-banking / esx_addonaccount (you can add any other banking script in server/functions.lua)
- qb-target or ox_target
- ox_lib
- qb-inventory(old) and New or ox_inventory
Any bug report on my discord
[2.0.0] - 2026-07-29
This release completely redesigns the payment terminal and introduces a server-authoritative payment protocol, secure refunds, configurable branding, improved ticket handling, and expanded testing tools.
Added
New payment terminal interface
- Completely redesigned the payment terminal UI from scratch.
- Added a realistic, front-facing white POS terminal with an elongated form.
- Added a modern banking-style Fleeca Pay interface
- Added a configurable PNG bank card that can be replaced without modifying the frontend.
- Added a draggable card interaction.
- The card must be dragged to the upper contactless reader before a transaction can be processed.
- Added payment states for: Waiting for card. Processing. Payment approved. Insufficient funds. Payment declined. Processing error. Request timeout.
- Added an animated receipt that emerges upward from the printer slot.
- - Split the terminal frontend into dedicated JavaScript modules for state,
- NUI communication, card interaction, audio, and terminal behavior.
Server-authoritative payments
- Added server-owned payment requests.
- Added a unique transaction identifier and operation number for every payment.
- The server now owns and validates the payer, biller, amount, society, and transaction state.
- The interface remains in the processing state until the server returns the real payment result.
- Added transaction expiration and timeout handling.
- Added payment request cooldowns and payment-processing cooldowns.
- Added protection against duplicate and repeated transaction processing.
- Completed transaction identifiers are retained temporarily to prevent replay attempts.
- Added automatic customer refunds when a society deposit fails after the customer has already been charged.
- Separated financial processing from database and Discord logging so a logging
- error cannot convert a completed payment into a failed UI result.
Refunds from the tablet
- Added full refunds for approved payments.
- Added partial refunds.
- Added a mandatory refund reason.
- Added a unique operation number for every refund.
- Added refund history inside each payment record, including:
- - Refunded amount.
- - Reason.
- - Employee who processed the refund.
- - Refund operation number.
- - Date.
- Added the original, refunded, and still-refundable amounts to transaction details.
- Added server-side validation of the society, employee, original payment, amount, refundable balance, and payer identifier.
- Added refund cooldowns and per-transaction locks.
- Added protection against duplicate or excessive refunds.
- Refunds debit the society account before crediting the original customer.
- Qbox refunds use the customer's persistent citizen ID and can credit an offline character.
- Added safe rollback behavior when the society debit or customer credit fails.
- Added automatic database migrations for refund support.
- Tablet statistics and charts now use net income after refunds.
- Legacy payments without a persistent customer identifier remain visible but cannot be refunded to prevent crediting the wrong player.



