> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aps-store.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Suspension & Penalty Points

Licenses can be suspended for a time instead of revoked. Traffic tickets can add penalty points.

## License suspension

A suspended license stays on record but counts as not held: `hasLicense` returns false, its document card shows SUSPENDED and the framework license (esx\_license, Buty-license, QB metadata) is removed until the suspension ends. Staff with `licenses.manage` suspend and reinstate in the citizen record.

```lua theme={null}
exports['aps_cityhall']:suspendLicense(target, 'car', 7 * 86400, 'Reckless driving')   -- seconds, 0 = until reinstated
exports['aps_cityhall']:reinstateLicense(target, 'car')
local suspended, untilTime = exports['aps_cityhall']:isLicenseSuspended(target, 'drive_b')
```

Other scripts' license names are translated with `Config.Compat.licenseAliases` (`drive_a/b/c`, `drive`, `practical_boat`, `practical_plane`…).

## Penalty points

`Config.Features.penaltyPoints`. Points come from traffic tickets (`penaltyPointsCount` in `giveBill`) or the export, and expire after `expireDays`. At the limit the listed licenses are suspended or revoked. Players see their points in the License Center → My Licenses.

```lua theme={null}
Config.PenaltyPoints = { limit = 24, expireDays = 30, atLimit = 'suspend', suspendDays = 30,
                         licenses = { 'car', 'motorcycle', 'truck' }, resetAtLimit = true }
```

```lua theme={null}
exports['aps_cityhall']:giveBill(target, 'traffic-ticket', {
    issuerName = 'Officer Smith', job = 'police', amount = 750, dateToPay = 7, violation = 'Speeding',
    penaltyPointsCount = 4,
    license = 'drive_b', licenseSuspensionTime = 3 * 86400,   -- or licenseRevocation = true
})
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.