> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/resources/mango-mdt/features/fines.md).

# Fines

Issue fines from the MDT and collect them through your billing resource, with automatic paid-sync.

Officers issue fines from the MDT against any person on file. Each fine is recorded in the MDT's own ledger **and** pushed to your billing resource for collection — when the citizen pays it there, the MDT fine flips to **Paid** automatically. Config: `config/fines.lua`.

## Fines from reports

Saving a [report](/mango5m-docs/resources/mango-mdt/features/records-modules.md) whose charges carry fines **bills the subjects for real** — the fines twin of jail sentencing. The client only ever names charge ids: the server re-reads each amount from the penal code, applies the report's fine-leniency slider (clamped 0–50%), and issues **one billed citation per charge** to each linked citizen — through the billing bridge, exactly like a hand-issued fine. Offline subjects are fine to cite: bills are identifier-keyed, and offline-capable billers deliver them anyway.

Every report-filed citation carries its **report reference** — shown on the ticket card and as a *Filed From Report* line on the Notice document that deep-links back to the report (and the report links to its fines, so the paper trail runs both ways). Re-saving a report never double-bills: the server dedupes per report + charge + subject.

## Setup

The one decision is which biller collects — that's a bridge selection, covered fully in [Billing Integration](/mango5m-docs/resources/mango-mdt/configuration/billing-integration.md). Without a biller, fines are still recorded in the MDT; they're just not collected anywhere.

```lua
Config.Fines = {
    allowPartial = false,               -- partial payments
    billingAccount = 'society_police',  -- society account collected money lands in
    currencyLabel = '$',
}
```

## Paid-sync

How fast a paid fine flips to Paid depends on the biller:

* **okokBilling / esx\_billing** — instant (they fire a paid event; esx\_billing also has a periodic poll as a fallback).
* **Codem** — automatic but polled roughly every minute (Codem fires no paid event), so allow up to \~60 seconds.
* **qb** — no paid signal exists at all.

The reconciler also catches bills paid **while the MDT was restarting** — nothing is lost to timing.

### When the biller can't report payments

With `qb` (or no biller), payment status can never update on its own — so instead of showing every citation as eternally Outstanding, the Fines page **hides its payment-status tags automatically**: no status stamps on tickets or the Notice document, no Outstanding/Partially Paid/Paid filter chips. **Void** still shows (it's an MDT action, not a payment state), and `fines.manage` holders can still settle fines by hand with **Record Payment** — the amounts and balances stay exact. Details in [Billing Integration](/mango5m-docs/resources/mango-mdt/configuration/billing-integration.md).

## The fine catalogue

The offence list officers pick from (with amounts) is the server's **penal code** — the `mdt_charges` table, managed in-game on the **Departments → Charges** tab. A fresh install ships 20 statewide starter charges; statewide charges appear for every department, department-scoped ones only for their own. See [Departments](/mango5m-docs/resources/mango-mdt/configuration/departments.md) for scoping and who can edit.

## Permissions

`fines.manage` gates administrative actions; issuing and viewing follow the standard session checks.
