> For the complete documentation index, see [llms.txt](https://jiffyjrdevelopment.gitbook.io/jiffyjrdevelopmentdocs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jiffyjrdevelopment.gitbook.io/jiffyjrdevelopmentdocs/jiffy-jr-development-docs/jiffy-banking-v1/societies.md).

# Societies

Society accounts provide job, gang, and business banking — replacing `qb-management`, `qb-bossmenu`, and `qb-gangmenu` money handling.

## Account Types

| Type     | Identifier                | Auto-created       |
| -------- | ------------------------- | ------------------ |
| Job      | `society_job_{name}`      | Yes, on boss login |
| Gang     | `society_gang_{name}`     | Yes, on boss login |
| Business | `society_business_{name}` | Manual or auto     |

```lua
Config.Societies.JobAccounts      = true
Config.Societies.GangAccounts     = true
Config.Societies.BusinessAccounts = true
Config.Societies.AutoCreateJob    = true
Config.Societies.AutoCreateGang   = true
```

## Boss Access

By default, any player with `isboss = true` on their job or gang can access society banking. Optionally enforce a minimum grade:

```lua
Config.Societies.BossGrades = {
    ['police'] = 3,   -- grade 3+ required for police society banking
}
```

## qb-management Replacement

Set this to `true` and jiffy-banking's exports will act as the society bank for any script that calls `qb-management` export patterns:

```lua
Config.Societies.ManagementReplacement = true
```

This means scripts like `qb-garages`, `qb-phone`, or any job script using `exports['qb-management']:*` will route through jiffy-banking automatically. No code changes required in those scripts.

{% hint style="success" %}
This is enabled by default. If you want to keep running `qb-management` alongside jiffy-banking, set this to `false`.
{% endhint %}

## Society Payroll

Automatically pay employees from their society account on a schedule:

```lua
Config.Societies.Payroll = {
    Enabled  = false,   -- set true to activate
    Interval = 60,      -- minutes between payroll runs
}

Config.Societies.Payroll.Jobs = {
    police = {
        default = 500,
        [0]     = 300,
        [1]     = 500,
        [2]     = 750,
        [3]     = 1000,
        [4]     = 1500,
    },
}
```

If the society account does not have sufficient funds, payroll is skipped for that pay cycle and players are notified.

{% hint style="warning" %}
Payroll is **disabled by default**. Set `Payroll.Enabled = true` and configure `Payroll.Jobs` before enabling.
{% endhint %}
