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.Frameworkand everything else routes through the bridge layer inbridge/. - 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_contractitem 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.