Skip to content
FiveM Phone
All articles

Deep dive · 7 min read

Ride, Delivery and Rentals: Turning Your FiveM Phone into a Player Economy

Use phone apps to create jobs, money sinks and roleplay hooks. How to tune fares, fees and limits before launch without touching Lua.

· FiveM Phone team

A FiveM phone can be more than a chat app. With the right apps it becomes the place where players find work, spend money and meet each other: a rider books a trip, a driver earns a fare, a hungry player orders food, a courier runs it across the city. This post shows how our Ride, Delivery and Rentals apps turn the FiveM phone into a small player economy, and how to tune fares, fees and limits before launch without touching Lua.

All three apps ship in the Ultimate edition, together with Racing, which uses the same money rules. Every number below is a real config key with its shipped default.

Why put economy apps on the phone

Server economies usually suffer from two problems: not enough legitimate ways to earn, and not enough ways to spend. Phone apps help with both.

  • Jobs: drivers and couriers earn from other players or from generated work, at any hour, without a staff member running an event.
  • Money sinks: platform fees, house cuts, late fees and damage fees take money out of circulation in ways that feel natural in roleplay.
  • Roleplay hooks: every ride and delivery puts two players in the same place. Some of those meetings turn into stories.

The important part is that money moves on the server. In all three apps, prices are calculated server-side, positions are checked against the player's real location, and every status change that pays or refunds happens exactly once. Payouts to a player who went offline are kept and settled the next time they are online. Every transaction shows in the Wallet history.

Which account pays

Each app has an account setting. The default wallet follows the Wallet's payment account (Config.Wallet.account, which defaults to bank). You can also force cash or bank per app. A common setup is bank for rides and deliveries, and cash for anything you want to feel a bit shadier.

On a standalone server without a framework there is no money to move, so these apps stay visible but money actions are disabled. Framework details are on the ESX, QBCore and Qbox pages.

Ride: player-driven ride-hailing

Riders request a trip from their verified position to their map waypoint or a suggested destination. Online drivers within requestRadius (3,500 m) of the pickup see the request. The fare is held from the rider when they request, and paid to the driver when the trip ends inside the dropoff radius.

How the fare is calculated

The fare formula is (baseFare + perKm * km) * multiplier * surge, never less than minimumFare. Distance is the straight line multiplied by roadFactor (1.3) to approximate the driven route.

A worked example with defaults: a 3 km straight-line trip counts as 3.9 km. That is 40 + 18 × 3.9, about $110. With the default platformFee of 0.1, the driver receives about $99 and roughly $11 leaves the economy, because the platform share is not paid to any player.

Surge

Surge pricing turns on when open requests per online driver exceed requestsPerDriver (2). Each extra request per driver adds step (0.25) to the multiplier, capped at max (1.8). With three open requests per driver, fares are 1.25 times the base. Surge is a natural signal to players that driving pays right now.

Cancellations, tips and timeouts

  • A rider can cancel for free within cancelGraceSeconds (60) after a driver accepted. After that, cancelFee ($50, never more than the fare) goes to the driver, minus the platform share.
  • If the driver cancels, the rider is refunded in full.
  • Tips are capped at maxTip ($500).
  • Requests nobody accepts expire after requestTimeoutSeconds (180) and are refunded.

Who can drive

driverJobs limits driving to framework jobs, for example a taxi job. Empty means everyone may drive. blockedJobs lists jobs that may neither drive nor request. Pickup, boarding and dropoff are checked on the server against pickupRadius (30 m), boardRadius (8 m) and dropoffRadius (60 m).

Delivery: food orders and courier work

Delivery has two sides. Customers order from restaurants and shops to their verified position. Couriers on duty pick orders up at the store and drop them at the customer, or run generated dispatch jobs to drop points around the map when no customer orders are open.

Customer orders

  • deliveryFee ($25) is added to each order; tips are capped at maxTip ($200).
  • Couriers receive courierShare (0.8) of the delivery fee and 100% of tips.
  • Orders are limited to maxLines (12) menu lines and maxQuantity (10) per line.
  • If no courier accepts within autoFulfillMinutes (6), store staff deliver the order and the items go straight to the customer. Set autoFulfill to false to refund unaccepted orders after orderTimeoutMinutes (20) instead.

Menu items are real inventory items. If the customer's inventory refuses them, for example because it is full or the item name does not exist, the value is refunded instead of lost. Check that every menu item name in config/delivery.lua exists on your server.

Generated courier jobs

When players are not ordering, couriers still have work. Dispatch jobs pay basePay ($60) plus perKm ($22) for the store-to-drop leg, with a speedBonusPercent (25%) bonus for drops inside the expected time. Drops faster than maxSpeed (70 m/s average) are rejected as implausible, which stops teleport farming. Each courier is offered dispatchOffers (3) jobs at a time, between 500 and 4,500 meters long.

Rentals: vehicles from kiosks

Rentals lets players rent vehicles at kiosks through the phone. The vehicle is spawned server-side at the kiosk, only when the spawn point is clear, and must be returned inside any kiosk's return area to get the deposit back.

  • Rentals run from minHours (1) to maxHours (12) real hours, with maxActive (1) rental per player.
  • Late returns are free for graceMinutes (5), then cost lateFeePerMinute ($5), taken from the deposit. After maxLateMinutes (60) the vehicle is impounded and the deposit is kept.
  • Damage fee is deposit × (1 − vehicle health) × damageFactor. A car returned at 80% health with a $300 deposit costs $60 at the default factor of 1.0.
  • Plates start with platePrefix (RENT), so police can recognize rentals.
  • Keys are handed out automatically for qbx_vehiclekeys, qs-vehiclekeys, wasabi_carlock, mk_vehiclekeys, MrNewbVehicleKeys and qb-vehiclekeys, or through your own onKeys function.

The shipped fleet ranges from a Faggio scooter at $25 per hour to a Baller SUV at $140 per hour, with deposits from $120 to $900. Treat those as starting points, not balance advice.

Racing: buy-ins and a house cut

Racing uses the same account rules. Lobby hosts set a buy-in up to maxBuyIn ($50,000). The pot minus houseCut (5%) is split 60/30/10 between the top three. Police and sheriff jobs are blocked by default, and a server-side speed check between checkpoints rejects impossible laps.

Tuning without touching Lua

You do not need to open a Lua file to set the main levers. In the configurator, the App settings step shows these values for each selected app:

  • Ride: base fare, price per km, minimum fare, platform fee, surge on or off, driver jobs.
  • Delivery: payment account, delivery fee, max tip, store staff fallback, courier share, courier jobs.
  • Rentals: payment account, longest rental, grace period, late fee per minute, vehicle key script, plate prefix.
  • Racing: payment account, who may build tracks, blocked jobs, max buy-in, house cut, racers per lobby.

Only the values you change ship in config/overrides.json, for example:

{
  "Ride": { "baseFare": 55, "platformFee": 0.15, "driverJobs": ["taxi"] },
  "Delivery": { "deliveryFee": 30, "courier": { "courierShare": 0.75 } }
}

On start, the resource merges this file over the Lua defaults: objects merge key by key, lists and single values replace. Locations, menus and the vehicle list (destinations, restaurants, kiosks, vehicles) live in config/ride.lua, config/delivery.lua and config/rental.lua, because they depend on your map. Adjust the coordinates if you run custom MLOs or a different map layout.

A pre-launch checklist

  1. Decide which account each app pays from, and whether that matches your server's cash versus bank culture.
  2. Compare a typical ride fare and courier payout with what your existing jobs pay per hour. Phone jobs should be attractive, not the best grind on the server.
  3. Set driverJobs or courier jobs if you want these to be whitelisted jobs.
  4. Check every delivery menu item exists in your inventory.
  5. Move kiosks, restaurants and destinations off locations your map changes.
  6. Test one full ride, delivery and rental on staging with two players, and confirm the money moved in your framework, not just in the phone UI.

New to the phone? Start with the installation guide.

Next steps

Ride, Delivery, Rentals and Racing are part of Ultimate; see the pricing page and the full app list. Then open the configurator, try the apps in the live phone, and set your fares and fees before checkout.

Try the phone, not just the article.

Try the real phone in your browser, configure it in two minutes and install it tonight.