Payouts & Reputation
Every number in a payout is worked out by the server, from its own tables, and pinned to the contract when it is signed. An admin re-pricing a category in the Creator mid-job changes the next contract, not the money a crew out on a job was promised.
Where the money comes from
| Source | Who gets it | How much |
|---|---|---|
| The buyer | Split evenly across the crew | The car's category price, minus the damage penalty, times the standing multiplier |
| The safe (optional) | Every crew member, in full | A percentage of the car's category price, times the standing multiplier |
| Safe loot (optional) | Whoever opened the safe | Configured items, each rolled on its own |
Everyone who was on the crew is paid, wherever they are standing at the time. Money is paid as cash: the money account on ESX, cash on QBCore and Qbox. The supplier also takes cash in hand.
The car's price
The buyer pays for what kind of car it is, not for the badge on it. Each car on the list is filed under one category, and each category has one price (Config.Prices, or the Creator's Rewards tab):
| Category | Default price |
|---|---|
| Compacts | $6,000 |
| Sedans | $8,000 |
| SUVs | $11,000 |
| Coupes | $12,000 |
| Muscle | $13,000 |
| Sports Classics | $20,000 |
| Sports | $16,000 |
| Super | $25,000 |
| Motorcycles | $9,000 |
| Off-road | $10,000 |
| Vans | $7,000 |
The five cars on the shipped list are all Sports, so every default contract is worth $16,000 clean.
The delivery payout
pay = category price × (1 − damage × damagePenaltyPercent / 100) × payoutMult
share = pay ÷ crew size (rounded down, paid to each crew member)
damageis read from the car's body health on the server: 0 for a clean car, 1 for a wreck. With the default 40% penalty, a totally wrecked car still sells for 60% of its price.payoutMultcomes from the starter's tier (below). Standing is applied after the damage, so a trusted crew is paid more for the car they delivered, not shielded from having wrecked it.
The safe bonus
bonus = category price × safeBonusPercent / 100 × payoutMult (paid to EACH crew member)
The safe uses the clean category price, whatever state the car is in. A tier with its own safeBonusPercent replaces the default 25% for that run (it is not added to it), and the tier's payoutMult applies on top.
Worked examples
A $16,000 Sports car, crew of four:
| Situation | Each member from the buyer | Each member from the safe |
|---|---|---|
| Stranger, clean car | $4,000 | $4,000 (25%) |
| Stranger, body health at half | $3,200 | $4,000 |
| Known (×1.15), clean | $4,600 | $5,520 (30% × 1.15) |
| Made (×1.60), clean | $6,400 | $10,240 (40% × 1.60) |
Solo, the same Stranger run pays $16,000 from the buyer and $4,000 from the safe.
Because the buyer's money is split and the safe's is not, the safe matters more the bigger the crew. With four people it pays each member as much as the car does at Stranger, and more at higher tiers. Lower safeBonusPercent (and the tiers' values) if you want the car to stay the main prize.
Reputation
Standing with the fixer is one number per character, earned by finishing jobs, that moves you up a ladder of tiers.
- Earned by every crew member on a delivered car:
Config.Reputation.perJob, default +1. - Never lost. A failed or lapsed contract costs nothing. The contract ending is already the punishment.
- The starter's standing sets the terms. The tier is read once, from the player who took the job, when the contract is signed, and pinned to that run. The crew is whoever happened to be nearby, and the highest-rep bystander does not get to lend their standing.
- Visible in game. Ask the fixer "How do we stand?" to open the Standing panel: current tier, rep, rep to the next tier, rep earned per job, and the perks of every tier reached.
The ladder
A tier is matched by minRep, the highest one you still clear.
| Tier | Min rep | Payout | Delivery clock | Prep clock | Safe cut | Crew | Cooldown | Decoys |
|---|---|---|---|---|---|---|---|---|
| Stranger | 0 | ×1.00 | - | - | 25% (default) | - | - | - |
| Known | 3 | ×1.15 | +3 min | - | 30% | - | - | - |
| Trusted | 8 | ×1.35 | +6 min | +10 min | 35% | +1 | - | - |
| Made | 20 | ×1.60 | +10 min | +15 min | 40% | +2 | −3 h | −1 |
Perk fields
Every field below is read by the server, and the Standing panel builds its perk cards from the same fields, so it never advertises a perk that is not paid. Leave a field out to not grant it.
| Field | Effect |
|---|---|
payoutMult | Multiplies what the buyer pays, and the safe with it |
extraPrepMinutes | Added to the preparation clock |
extraDeliverMinutes | Added to the delivery clock |
crewBonus | More people swept into one crew |
safeBonusPercent | Replaces Config.Payout.safeBonusPercent for this run |
cooldownReduceHours | The robbed yard goes quiet for that much less |
fewerDecoys | One less car in the yard to tell the mark apart from |
The first tier is what a stranger gets and should grant nothing. Add, remove or rename tiers freely in Config.Reputation.tiers.
Where it is stored
Reputation lives in vs_heist_reputation, keyed by (citizenid, clan). On ESX the citizenid column holds the ESX identifier. The heist's clan is Config.Reputation.clan, default the_fixer.
CREATE TABLE IF NOT EXISTS `vs_heist_reputation` (
`citizenid` VARCHAR(64) NOT NULL,
`clan` VARCHAR(64) NOT NULL,
`rep` INT NOT NULL DEFAULT 0,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`citizenid`, `clan`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Shared with the Laundromat Heist. This is the same table the Laundromat Heist creates, with the same schema. Give both scripts the same clan id and they build one standing. As shipped they use different clans (the_fixer here), so each contact trusts you on his own terms.
If the database is unavailable, every lookup answers 0 and nothing is written: the heist runs, everyone is a Stranger, the console says so once, and the Standing panel warns that progress is not being remembered. With Config.Reputation.enabled = false, there is no ladder at all and the fixer answers "He does not keep a ledger."
Cooldowns and limits
| Limit | Default | Notes |
|---|---|---|
| Contracts at once | 1 per server | A second crew is told "Something is already running." |
| Yard cooldown | 6 hours | Set only when a car is delivered from that yard. Made standing takes 3 hours off. Held in memory, so a restart clears it. |
| Preparation clock | 30 minutes | Stops while the crew waits for the green light. Running out has no penalty. |
| Delivery clock | 20 minutes | Counted from the green light. Running out ends the contract with no pay. |
There is no per-player cooldown: once a contract ends, the next can be taken a few seconds later, against any yard that is not cooling down.