Skip to content

BUPA Rental

BUPA Rental

BUPA Rental is a complete, framework-agnostic vehicle rental system for FiveM, built for QB-Core, ESX and QBox on a single codebase. Players walk up to a rental agent, browse a polished React fleet catalogue, pick exactly how long they want a car — by the minute, hour, day or week — pay, and are then guided on foot by a live GPS route to their vehicle waiting in a real parking bay. Everything that matters is server-authoritative: prices, durations, plates and money are always re-derived on the server, so the client is never trusted with a number.

Quick start — drop the resource in, set Config.Framework, build the UI (cd web && npm install && npm run build), add the rental_contract item, then ensure bupa-rental after your framework.

Key features

  • Multi-framework by design — one build runs on QB-Core, ESX or QBox. The active framework is selected with Config.Framework and everything else routes through the bridge layer in bridge/.
  • Walk-to-car bay spawning — the renter is not teleported into the driver seat. The car spawns at the first free parking bay in Config.SpawnPoints, and a GPS route + blip guides the player to it on foot. The guide clears itself once they reach the car.
  • No overlapping cars — each bay is briefly reserved after a car spawns there (Config.SpawnHoldSeconds), so back-to-back rentals always take different bays. If every bay is held, the rental is politely refused and the player is never charged.
  • Flexible duration model — the vehicle price is a per-day base; players choose a unit (minute / hour / day / week) and a quantity, and the server computes the total from a shared multiplier formula.
  • Refundable deposit, insurance & service fee — a deposit is held on pick-up and returned on drop-off, with an optional insurance toggle and a flat service fee.
  • Rental contract item — an optional usable rental_contract item opens a live receipt and re-issues keys for an active rental.
  • Full lifecycle handling — active rentals survive server restarts, expired rentals are settled or moved to history, cars despawn on expiry, and there is a per-player active-rental cap.
  • Vehicle keys & fuel bridges — plug-in support for the major keys resources and fuel systems, selected from config.
  • Discord logging — optional webhook logs for rent, return and expiry events.
  • 12 languages — powered by ox_lib locales, shared between the Lua backend and the React UI, with English as the fallback.

Frameworks

Framework Config.Framework Core resource
QB-Core qb qb-core
ESX esx es_extended
QBox qbx qbx_core

The matching bridge under bridge/client/ and bridge/server/ handles identifiers, money, names and notifications for the framework you select.

Dependencies

Dependency Required Purpose
ox_lib Yes Callbacks, locales, notifications, model loading
oxmysql Yes Rental persistence and history
A framework Yes qb-core, es_extended or qbx_core
Vehicle keys resource Optional Any supported keys system, or custom / none
Target / inventory Optional ox_target / qb-target, ox_inventory

fxmanifest.lua declares provide 'bupa-rental' — other resources can depend on it by that name.