Troubleshooting Guide

Common issues and the current checks for oxide-postaljob.

Common problems and how to fix them, roughly in the order they tend to come up.


Clocking In

"Nothing happens" or the menu doesn't open at the supervisor

  1. Make sure o-link starts before oxide-postaljob in your server.cfg.
  2. Make sure your targeting resource (the "interaction eye") works elsewhere on the server — the supervisor uses the same system through o-link.
  3. Check that the supervisor NPC is actually standing at the depot. If he's missing, see the next section.
  4. The player must be fully loaded into a character. If they just joined, have them wait a few seconds and try again.

The supervisor NPC doesn't appear

  1. Check the server console for errors from oxide-postaljob at startup.
  2. If you edited shared/config/locations.lua, double-check the coords you entered.
  3. If you changed Config.NpcModel, make sure the model name is valid.

Player can't clock in

The job refuses a clock-in when any of these are true — the on-screen message says which:

  1. The depot is full (Config.MaxSlotsPerLocation players already working there).
  2. The player is already on a shift.
  3. The player is suspended from complaints — check with the SQL in ADMIN.md, or wait out the timer.
  4. Another car or player is sitting on the van spawn point.
  5. The player walked away from the supervisor mid-menu.

Loading the Van

The pallet doesn't appear (packages)

  1. Check pickupPoints in the location config — each entry needs x, y, z, and a heading.
  2. Make sure the spot isn't underground or inside a wall.

Can't pick up a box

All of these must be true:

  1. The player is in the loading phase (just clocked in or just took a new task).
  2. They aren't already carrying a box.
  3. They're on foot, not in a vehicle.
  4. The box still exists (a crew partner may have just taken it).

Boxes won't load into the van

  1. Both rear doors must be open — this is the most common cause.
  2. The player must be standing at the back of the van, close to it.
  3. They must be carrying a box.

No post box prompt (letters)

  1. The post box pickup is an invisible interaction zone at the configured spot, not a spawned object. Follow the map blip to the exact location and look around with the interaction eye.
  2. Check postBoxes in the location config has valid entries.
  3. The prompt hides while the player is already carrying the mail bag or sitting in a vehicle.

Deliveries

No route or blip appears after loading

  1. Confirm every box (or the mail bag) actually got loaded — the shift only moves on when loading is complete.
  2. Check deliveryZones (or letterBoxes) in the location config has entries the player's level qualifies for (minLevel).
  3. Turn on Config.Debug = true and watch the console while reproducing.

Can't hand over a package

  1. The player must grab a package from the van first (rear doors open, interaction eye on the van).
  2. They must stand inside the glowing marker (within about 3 meters) — the "press E" hint appears when they're close enough while carrying.
  3. They must be on foot.

No customer walks out

  1. Customers only appear for package deliveries — letters go straight into the letterbox.
  2. If you edited Config.CustomerPeds, make sure every model name is valid. If a model fails to load, the delivery still completes and pays — the handoff animation is just skipped.

The letterbox can't be targeted

  1. Letter deliveries use an interaction zone at the configured coordinates, not the physical mailbox prop — stand right at the blip.
  2. Only the current stop is active; letterboxes from earlier or later stops won't respond.
  3. The player must be on foot.

The timer seems too short or too long

Timers are distance-based: Config.Timer.baseTime + Config.Timer.timePerDistanceUnit for every meter to the address. Adjust those two values in shared/config/job.lua. Remember a late delivery still pays — it just loses the bonus and takes a small penalty.


The Van

The van doesn't spawn

  1. Check vehicleSpawn in the location config — it needs x, y, z, and a heading, on open ground.
  2. If you replaced Config.Vehicle.model, make sure the model is valid and streamed on your server.

No keys / can't start the van

  1. Your vehicle-key resource must be supported by o-link and working elsewhere on the server.
  2. Confirm o-link starts before this resource.

"Van destroyed" mid-shift

This is intended behavior when the engine is wrecked (engine health below Config.Vehicle.destroyedThreshold). The current round is cancelled, a complaint is added, the fine is charged immediately, and the player has to ask the supervisor for a fresh task. The same happens if the van despawns or is deleted.

Partner can't see boxes in the van

Normal: box props inside the van are only drawn for the player who loaded them. The partner still has a synced count and can grab packages from the van as usual.


Crews

Can't send an invite

  1. The inviter must be clocked in; the invitee must not be.
  2. They must be within about 15 meters of each other.
  3. The invitee can't already be in a crew or have another invite pending.
  4. Wait a few seconds between attempts — invites have a short cooldown.

The partner never saw the invite

If the invitee has the supervisor menu open, the invite appears right in the menu. Otherwise they get a notification telling them to go to the supervisor — the invite expires after Config.Crew.inviteTimeout seconds (default 60).

Crew got out of sync

This usually traces to one of:

  1. The partner was too far away when the van spawned (the van entity couldn't be found on their game). Have them drive to the van.
  2. One member disconnected, died, or clocked out — the remaining member continues solo by design.

Pay and Progression

No money at clock-out

  1. Pay is a single lump sum at clock-out — players are not paid per delivery during the shift.
  2. Deductions (early-finish penalty, van damage, gas, taxes) can eat a small shift down to $0.
  3. Check your framework's money system works through o-link elsewhere (e.g. other Oxide jobs pay fine).

Pay seems wrong

Walk through the deductions in the shift summary: early-finish penalty (clocked out with undelivered items), van damage charge, gas fee, and taxes. On the earning side, remember level multiplier, on-time/late status, streak bonus, tips, and the crew bonus all change per delivery.

The daily streak isn't counting

  1. Streaks use real-world calendar days, not in-game days.
  2. The streak ticks up once per day, on the first delivery of that day.
  3. Skipping a day resets it to 1 (not 0).

Progress isn't saving

  1. Confirm oxmysql is running and connected.
  2. Confirm the job_progression table exists (re-run sql/install.sql — it's safe).
  3. Look up the player's row using the SQL in ADMIN.md (job = 'postal').

Interface

The shift menu / summary screen is blank

  1. Confirm web/dist/index.html and the files under web/dist/assets exist — they ship with the resource.
  2. Press F8 and look for red errors when opening the menu.
  3. As a test, set Config.menuStyle = 'menu'. If the simple menu works, the problem is isolated to the custom interface; if neither works, the problem is earlier (o-link, targeting, or the resource didn't start cleanly).

No pop-up summary at clock-out

The pop-up only shows when both are true: Config.shiftSummary = 'nui' and Config.menuStyle is not 'menu'. Otherwise the summary goes to the phone (or a simple notification in 'menu' mode).

No phone email with the summary

  1. Config.shiftSummary must be 'text'.
  2. Your phone resource must be one o-link supports for email (qb-phone, lb-phone, gksphone, okokPhone, qs-smartphone, yseries). On unsupported phones the emails simply don't arrive — players still get on-screen notifications for everything important.

Turning On Debug Logging

In shared/config.lua:

Config.Debug = true

The console will then print [oxide-postaljob] lines for shift state changes, clock-ins/outs, route generation, loading, payments, crew events, vehicle spawn/destruction, and progression changes. Turn it back off when you're done — it's chatty.


When Reporting an Issue

Please include:

  • your framework (QBCore, QBX, or ESX) and which phone/target/key resources you run
  • any errors from the server console
  • any errors from the client F8 console
  • exact steps to reproduce
  • whether it happened solo or in a crew

Next Steps