Skip to content
RoleplayServer SetupGuides

How to Create a Custom Job in QBCore

· 8 min read · Updated

How to Create a Custom Job in QBCore

Jobs give players a reason to log in — a way to earn, progress and roleplay a role. QBCore makes adding jobs approachable once you know where the pieces live. Here's the overview.

Where jobs are defined

Core jobs live in QBCore's shared config (commonly qb-core/shared/jobs.lua). Each entry has a key (the job's internal name), a label, defaultDuty, offDutyPay and a grades table. Every grade has a name and a payment, and the top one usually carries isboss = true. Adding a job starts with a new entry here, followed by a restart of qb-core.

1. Define the job and its grades

Give the job a unique lowercase key, a display label, and a set of grades numbered from 0 upward, rookie to boss. Grades control pay and permissions, so plan a sensible progression. Emergency jobs also set a type (leo for police, ems for medics) that other scripts check.

2. Decide if it's whitelisted

Whitelisted jobs (police, EMS, mechanic) should only be assigned by an admin or a boss, which keeps important roles controlled. Open jobs (taxi, delivery) are the ones you list at the job centre for anyone to take. Which jobs appear there is set in your city hall or job centre script, not in jobs.lua.

3. Add the gameplay loop

A job is only fun if it does something. Pair it with a job script or a duty/clock-in system, NPC interactions, and a payout. This is where most of your custom work goes — and if you'd rather buy a polished job loop than build one, our partner Glory Scripts has ready-made job resources.

4. Give the job its vehicles

Lock job vehicles behind the job grade in your garage script so only on-duty workers can pull them. Emergency roles especially need this — see our police vehicle guide.

Outfit your new jobs with the right rides: our police & EMS vehicles and utility vehicles cover the core service roles.

Keep reading